Redis 迁移同步到 Redis
NineData 数据复制支持 Redis 数据源之间的数据复制。
背景信息
Redis 数据库因其易用性及高性能,已经成为非常流行的 NOSQL 类数据库。在某些业务场景下,您可能需要在多个 Redis 实例之间复制和同步数据。 在实际使用中,Redis 数据复制通常用于以下场景:
- 数据备份:在主节点上运行的 Redis 实例包含重要的数据,如果这些数据在某些情况下丢失或损坏,可能会对业务造成严重的影响。为了保护这些数据,可以使用 Redis 数据复制将主节点的数据复制到备份节点上,以便在发生故障或数据丢失时进行恢复。
- 负载均衡:使用多个 Redis 实例进行负载均衡可以帮助提高系统的性能和可靠性。使用 Redis 数据复制可以确保多个实例之间的数据一致性,从而避免因数据不一致而导致的错误。
- 故障恢复:当 Redis 主节点发生故障时,可以将其中一个从节点升级为主节点,并通过 Redis 数据复制确保数据一致性。这种方法可以快速恢复系统的正常运行,减少对业务的影响。
功能介绍
NineData 数据复制支持数据源之间的结构、全量数据、增量数据的高性能复制,对于部分数据源,还提供双向复制功能,实现快捷构建异地多活业务架构。
- 结构:支持同构及异构数据源之间的对象结构复制,很大程度上降低了两个数据源之间的数据复制门槛。
- 全量数据:通过智能数据分片实现行级并发批量复制能力,有效保障复制性能。自主研发的新型断点续传技术,保证无主键表的数据准确性。
- 增量数据:支持全对象类型的 DML|DDL 增量数据复制,结合行级并发、热点合并等技术,提供强劲复制性能。
- 双向数据实时复制:直接多个节点之间的数据双向复制,保证所有节点的数据均保持最新状态。
通过以上功能,可以轻松高效地实现全量|增量数据复制、全量|增量数据迁移、全量|增量数据同步、数据集成、不停机无缝迁移等场景,为企业提供灵活和可靠的数据复制解决方案。
前提条件
源和目标数据源的版本见下表,注意源数据源版本必须小于等于目标数据源版本。
源数据源 目标数据源 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 的大小配置 |
源数据源连接检查 | 检查源数据源网关状态、实例是否可达、用户名及密码准确性 |
目标数据源连接检查 | 检查目标数据源网关状态、实例是否可达、用户名及密码准确性 |
源库权限检查 | 检查源数据库的账号权限是否满足要求 |