使用DTS将ECS上的Twemproxy Redis集群同步至Redis实例
阿里云数据库Redis版是兼容开源Redis协议标准、提供内存加硬盘混合存储的数据库服务,基于高可靠双机热备架构及可平滑扩展的集群架构,可充分满足高吞吐、低延迟及弹性变配的业务需求。通过数据传输服务DTS(Data Transmission Service),您可以将Twemproxy Redis同步至阿里云Redis实例。
前提条件
- 阿里云Redis实例的存储空间需大于源Twemproxy Redis数据库已使用的存储空间。
- 源Twemproxy Redis集群中的每个Master节点必须能够执行
psync
命令。
同步原理介绍
DTS通过同步Twemproxy Redis集群中的每个Redis-Server来实现集群的整体同步,您需要为每个Redis-Server创建一个对应的数据同步作业。
Twemproxy Redis集群环境介绍
在本案例中,Twemproxy Redis集群具备两个Redis-Server,每个Redis-Server采用一主一从的架构,详情请参见下图。
注意事项
- 为保障同步链路稳定性,建议将配置文件redis.conf中
repl-backlog-size
参数的值适当调大。 - 为保障同步质量,DTS会在源集群中插入一个key:
DTS_REDIS_TIMESTAMP_HEARTBEAT
,用于记录更新时间点。 - 请勿在源集群中执行
FLUSHDB
和FLUSHALL
命令,否则将导致源和目标的数据不一致。 - 目标阿里云Redis实例支持的版本为2.8、4.0或5.0版本,如需跨版本同步请提前确认兼容性(例如创建一个按量付费的Redis实例来测试兼容性,测试完成后可释放该实例)。
支持的数据源
源数据库 | 目标数据库 |
---|---|
Twemproxy Redis集群
说明 Twemproxy Redis集群的部署位置可以是ECS上的自建数据库或通过专线/VPN网关/智能网关接入的自建数据库。
|
|
支持的同步拓扑
- 一对一单向同步
- 一对多单向同步
- 级联单向同步
关于各类同步拓扑的介绍及注意事项,请参见数据同步拓扑介绍。
支持的同步命令
- APPEND
- BITOP、BLPOP、BRPOP、BRPOPLPUSH
- DECR、DECRBY、DEL
- EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT
- GEOADD、GETSET
- HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX
- INCR、INCRBY、INCRBYFLOAT
- LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIM
- MOVE、MSET、MSETNX、MULTI
- PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、PUBLISH
- RENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX
- SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE
- ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE
说明
- 对于通过EVAL或者EVALSHA调用Lua脚本,在增量数据同步时,由于目标端在执行脚本时不会明确返回执行结果,DTS无法确保该类型脚本能够执行成功。
- 对于List,由于DTS在调用sync或psync进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。
操作步骤
执行结果
本案例的Twemproxy Redis集群具备两个Redis-Server,所以创建两个数据同步作业。如下图所示,这两个数据同步作业完成同步初始化后,已经都处于同步中状态。
本案例同步的数据库为DB0,通过DMS登录Redis集群后与源Twemproxy Redis集群进行对比,Key总数源Twemproxy Redis集群一致。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论