如何透过 Global datastores 的功能,在不停机的状态下,将特定 ElastiCache Redis 从 A 区域,複制到 B 区域。

2 minuti di lettura
Livello di contenuto: Intermedio
0

在本文中旨在介绍 跨 AWS 区域 来迁移 ElastiCache Redis 数据的做法,而使用 ElastiCache Global datastores 的功能,是可以考虑的作法之一,本身也提供其他离线(offline)的方式。

前言: 什么是 ElastiCache Global datastores ?

该服务是 ElastiCache 其中一个功能,主要用的灾难备缓,当使用者写入数据至主要区域的 ElastiCache Redis 集群时,会自动且持续同步数据,到多个次要区域的 Redis 集群中,并且提供主备切换的能力。

由于 ElastiCache Global datastores 可以做到持续同步 Redis 集群数据的能力,所以若您有 跨 AWS 区域 来迁移 ElastiCache Redis 数据的需求时,是可以考虑这个作法。

另一个替代方案: 离线(offline) 搬移数据。

若您的前端业务服务,可以安排维护时段的话,也建议您可以考虑使用 离线(offline) 的方式,来做迁移数据的作业。 首先,透过手动份[1]的方式来产生备份的 RDB 档,然后汇出[2]并複制到您目标端的 S3 桶上,最后在目标端帐户/区域底下,指定使用该备份的 RDB 档,来创建新的 Redis 集群[3]。

!!! 这个方式风险最低,容易预估执行时间的长短,也是推荐的作法,但客户端影响时间较长些。

接下来逐一来说明,如何使用 ElastiCache Global datastores 的功能,来做到 跨 AWS 区域 来迁移 ElastiCache Redis 数据的目的。

1. 建立 Global Store:

  • 登入 AWS 管理控制台,前往 ElastiCache 服务。
  • 选择 ElastiCache Global datastores 选项,然后创建一个新的 Global datastores。
  • 指定 ElastiCache Global datastores 的名称,并选择 来源(source) Redis cluster 资源。

Enter image description here

2. 指定目标区域:

  • 选择您要将 Redis 丛集迁移到的目标区域。
  • 指定新创建 ElastiCache Redis 丛集的名称。

Enter image description here

3. 检查次要区域的 Redis 集群配置、及创建

  • 检查 Secondary cluster advanced settings 页面上的其他内容。
  • Review and create

Enter image description here

Enter image description here

!!! 当建立完成后,此时就具备 1主 Redis 集群、多从集群 的架构,对提高服务可用性是有帮助的。

### 在来源端 Redis 集群上,来写入数据 ###  
$ redis-cli -h source-cluster.abcde.ng.0001.usw2.cache.amazonaws.com
source-cluster.abcde.ng.0001.usw2.cache.amazonaws.com:6379> set key 111
OK
source-cluster.abcde.ng.0001.usw2.cache.amazonaws.com:6379> get key
"111"

### 在次要的区域(Region)的目的地端 Redis 集群上,是可以正常读取数据 ###
$ redis-cli -h target-cluster.xma32s.ng.0001.use1.cache.amazonaws.com
target-cluster.xma32s.ng.0001.use1.cache.amazonaws.com:6379> get key
"111"
target-cluster.xma32s.ng.0001.use1.cache.amazonaws.com:6379>

4. 将目标的 Redis 集群从 ElastiCache Global datastores 移除。

Enter image description here

5. 此时目标的 Redis 集群,也会变成为单独存在的 Redis 集群,并且可以直接使用。

Enter image description here

!!! 通过以上步骤,您就可以将 ElastiCache Redis 上数据,从一个区域迁移到另一个区域,并且同时保持资料的一致性。

$ redis-cli -h target-cluster.xma32s.ng.0001.use1.cache.amazonaws.com
target-cluster.xma32s.ng.0001.use1.cache.amazonaws.com:6379> set key2 aaa
OK
profile pictureAWS
ESPERTO
pubblicato 2 mesi fa3301 visualizzazioni