Redis 迁移同步到 Redis
NineData 数据复制支持 Redis 数据源之间的数据复制。
背景信息
Redis 数据库因其易用性及高性能,已经成为非常流行的 NOSQL 类数据库。在某些业务场景下,您可能需要在多个 Redis 实例之间复制和同步数据。 在实际使用中,Redis 数据复制通常用于以下场景:
- 数据备份:在主节点上运行的 Redis 实例包含重要的数据,如果这些数据在某些情况下丢失或损坏,可能会对业务造成严重的影响。为了保护这些数据,可以使用 Redis 数据复制将主节点的数据复制到备份节点上,以便在发生故障或数据丢失时进行恢复。
- 负载均衡:使用多个 Redis 实例进行负载均衡可以帮助提高系统的性能和可靠性。使用 Redis 数据复制可以确保多个实例之间的数据一致性,从而避免因数据不一致而导致的错误。
- 故障恢复:当 Redis 主节点发生故障时,可以将其中一个从节点升级为主节点,并通过 Redis 数据复制确保数据一致性。这种方法可以快速恢复系统的正常运行,减少对业务的影响。
前提条件
源和目标数据源的版本见下表,注意源数据源版本必须小于等于目标数据源版本。
源数据源 目标数据源 Redis 7.0 Redis 7.0 Redis 6.0 Redis 7.0、6.0 Redis 5.0 Redis 7.0、6.0、5.0 Redis 4.0 Redis 7.0、6.0、5.0、4.0 Redis 3.2 Redis 7.0、6.0、5.0、4.0、3.2 Redis 3.0 Redis 7.0、6.0、5.0、4.0、3.2、3.0 Redis 的架构如下:
- 源数据源:单机版、主从版、读写分离版
- 目标数据源:单机版、主从版、集群版
操作步骤
商业化通知
NineData 数据复制产品已商业化,您仍然可以保有 10 条复制任务免费使用,注意事项如下:
- 10 条复制任务中可以包含 1 条任务,规格为 Micro。
- 状态为的任务不算在 10 条任务的限制内,如果您已经创建了 10 条复制任务,还想要继续创建,可以先终止之前的复制任务,然后再创建新任务。
- 创建复制任务时,仅可选择您已购买的,未购买的规格将以灰度显示,无法选择。如需购买,请通过页面右下角的客服图标联系我们。
登录 NineData 控制台。
在左侧导航栏单击 > 。
在页面,单击右上角的。
在页签,按照下表进行配置,并单击。
参数 说明 输入数据同步任务的名称,为了方便后续查找和管理,请尽量使用有意义的名称。最多支持 64 个字符。 同步对象所在的 Redis 数据源。 接收同步对象的 Redis 数据源。 - :同步源数据源的所有对象和数据,即全量数据复制。
- :在全量同步完成后,基于源数据源的日志进行增量同步。
选择情况下的冲突策略: - :预检查阶段检测到同名库时,停止任务。
- :预检查阶段检测到同名库时,发送提示并继续任务。数据复制过程中,在原有数据的基础上追加新数据,而不会覆盖原有数据。
- :预检查阶段检测到同名库时,发送提示并继续任务。数据复制过程中,清空目标同名库中的数据,并基于重新写入。
在页签,配置下列参数,然后单击。
参数 说明 选择需要复制的内容,您可以选择复制源库所有内容,也可以选择,在左侧列表中选中需要复制的内容,单击>添加到右侧列表。 在页签,配置源库同步到目标数据源之后的库名,单击。
提示一般情况下,您无需更改页签中的配置,保持默认状态即可。
在页签,等待系统完成预检查,预检查通过后,单击。
提示您可以勾选。在同步任务完成后,自动开启基于源数据源的数据一致性对比,保证两端数据一致。当增量数据首次和源数据源一致且为 0 时启动。您可以在任务详情页中的页签下查看。
如果预检查未通过,需要单击目标检查项右侧列的,排查失败的原因,手动修复后单击重新执行预检查,直到通过。
- 为的检查项,可视具体情况修复或忽略。
在页面,提示,同步任务开始运行。此时您可以进行如下操作:
- 单击查看同步任务各个阶段的执行情况。
- 单击可以返回列表。
查看同步结果
登录 NineData 控制台。
在左侧导航栏单击 > 。
在页面单击目标同步任务的 ID,打开页面,页面说明如下。
序号 功能 说明 1 配置告警 配置告警后,系统会在任务失败时通过您选择的方式通知您。更多信息,请参见运维监控简介。 2 更多 - :暂停任务,仅状态为的任务可选。
- :结束未完成或监听中(即增量同步中)的任务,终止任务后无法重启任务,请谨慎操作。如果同步对象中包含触发器,会弹出触发器复制选项,请按需选择。
- :删除任务,任务删除后无法恢复,请谨慎操作。
3 全量复制 展示全量复制的进度和详细信息。 - 单击页面右侧的:查看全量复制过程中的各监控指标。全量复制过程中,还可以单击监控指标页面右侧的,限制每秒写入到目标数据源的速率。单位为 MB/S。
- 单击页面右侧的:查看全量复制的执行日志。
- 单击页面右侧的
图标:查看最新的信息。
4 增量复制 展示增量复制的各项监控指标。 - 单击页面右侧的:限制每秒写入到目标数据源的速率。单位为行/秒。
- 单击页面右侧的:查看增量复制的执行日志。
- 单击页面右侧的
图标:查看最新的信息。
5 数据对比 展示源数据源和目标数据源之间数据对比的结果。如果您未开启数据对比,请单击页面中的。 - 单击页面右侧的:对当前源和目标两端数据重新发起对比。
- 单击页面右侧的:查看一致性对比的执行日志。
- 单击页面右侧的监控:查看对比 RPS(每秒对比的记录数)的走势图。单击详情可以查看更早之前的记录。
- 在对比列表右侧列单击
(不一致情况下显示):查看源端和目标端的对比详情。在该页面,您还可以做如下操作:
- 单击具体不一致结果右侧的
图标,查看更详细的对比详情。
- 单击具体不一致结果右侧的
图标,生成以 Key 为单位的变更命令,您可以直接复制该命令到目标数据源中执行,修改不一致的内容。
- 单击,将源端正确的数据以 JSON 格式导出,方便您进行数据订正。
- 单击列表右上角的
图标,可对列的展示方式进行自定义配置。
- 单击具体不一致结果右侧的
- 在对比列表右侧列单击
(不一致情况下显示):生成变更 SQL,您可以直接复制该 SQL 到目标数据源执行,修改不一致的内容。
6 展开 展示当前复制任务的详细信息,包括、、等。
附录 1:增量复制支持的命令
在增量复制过程中,只有 NineData 数据复制功能支持的 Redis 数据变更命令才会在源端执行后实时同步到目标端。本章节介绍 NineData 数据复制功能所支持的 Redis 数据类型和数据变更命令。
支持的数据类型 | 支持的命令 |
---|---|
Strings | APPEND、DECR、DECRBY、GETDEL(6.2.0 版本以上)、GETEX(6.2.0 版本以上)、GETSET、INCR、INCRBY、INCRBYFLOAT、MSET、MSETNX、PSETEX、SET、SETEX、SETNX、SETRANGE |
Lists | BLMOVE、BLMPOP、BLPOP、BRPOP、BRPOPLPUSH、LINSERT、LMOVE、LMPOP、LPOP、LPUSH、LPUSHX、LREM、LSET、RPOP、RPOPLPUSH、RPUSH、RPUSHX |
Sets | SADD、SDIFFSTORE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE |
Hashes | HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX、 |
Sorted Sets | BZMPOP、BZPOPMAX、BZPOPMIN、ZADD、ZDIFFSTORE、ZINCRBY、ZINTERSTORE、ZMPOP、ZPOPMAX、ZPOPMIN、ZRANGESTORE、ZREM、ZREMRANGEBYLEX、ZREMRANGEBYSCORE、ZUNIONSTORE |
Streams | XADD、XTRIM、XGROUP、 XAUTOCLAIM、XDELXREADGROUP |
Geospacial | GEOADD、GEOSEARCHSTORE |
HyperLogLog | PFADD |
Bitmaps | SETBIT、BITFIELD、BITOP |
附录 2:预检查项一览表
检查项 | 检查内容 |
---|---|
目标库数据存在性检查 | 检查待复制对象在目标数据库中是否已存在数据 |
源实例 Log Buffer 大小检查 | 检查源实例参数 repl-backlog-size 的大小配置 |
检查源实例 Client Output Buffer 大小 | 检查源实例参数 client-output-buffer-limit replica 的大小配置 |
源数据源连接检查 | 检查源数据源网关状态、实例是否可达、用户名及密码准确性 |
目标数据源连接检查 | 检查目标数据源网关状态、实例是否可达、用户名及密码准确性 |
源库权限检查 | 检查源数据库的账号权限是否满足要求 |