数据传输服务DTS(Data Transmission Service)支持Redis企业版实例间的双向同步,适用于异地多活、数据容灾等多种应用场景,本文介绍数据同步作业的配置流程。
本文通过控制台来完成配置,您也可以通过调用OpenAPI来完成配置,详情请参见调用OpenAPI配置Redis企业版实例间单向或双向数据同步。
前提条件
源和目标实例为阿里云Redis企业版实例(5.0版本)。
说明 架构类型不限制,即支持集群版、标准版和读写分离版。
注意事项
- 双向数据同步时,正向数据同步作业会执行
全量数据初始化
和
增量数据同步
,反向数据同步作业仅执行增量数据同步。
警告 为保障数据一致性,双向数据同步作业运行期间,请勿在两端数据库同时对同一个key执行修改或写入操作。
- DTS在执行全量数据初始化时将占用源库和目标库一定的资源,可能会导致数据库服务器负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库压力,甚至导致数据库服务不可用。建议您在执行数据迁移前谨慎评估,在业务低峰期执行数据同步。
- 请勿在源实例中执行
FLUSHDB
和FLUSHALL
命令,否则将导致源和目标的数据不一致。 - 如果目标库的数据逐出策略(
maxmemory-policy
)配置为noeviction
以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见Redis数据逐出策略介绍。 - 如果目标Redis实例没有开通直连访问,DTS将采用代理转发模式将数据写入目标实例。
说明 关于直连访问的开通方法,请参见开通直连访问。
支持的同步命令
- 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、RPOP、RPOPLPUSH、RPUSH、RPUSHX
- SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE
- UNLINK、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE
- SWAPDB(当源或目标实例的架构为集群版时不支持)
注意
- 对于通过EVAL或者EVALSHA调用Lua脚本,在增量数据同步时,由于目标端在执行脚本时不会明确返回执行结果,DTS无法确保该类型脚本能够执行成功。
- 对于List,由于DTS在调用sync或psync进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。
数据库账号的权限要求
数据库 | 权限及授权方式 |
---|---|
源Redis实例 | 读写权限,关于授权方式,请参见创建与管理账号。 |
目标Redis实例 |
操作步骤
执行结果

在文档使用中是否遇到以下问题
更多建议
匿名提交