redis迁移,redis集群迁移$ yum install automake libtool autoconf bzip2 -y
$ git clone https://github.com/vipshop/redis-migrate-tool
$ cd redis-migrate-tool
$ autoreconf -fvi
$ ./configure
$ make
2、配置文件从redis cluster集群迁移数据到另外一个redis cluster集群 rmt.conf[source]
type: redis cluster
servers:
- 127.0.0.1:8379
[target]
type: redis cluster
servers:
- 127.0.0.1:7379
[common]
listen: 0.0.0.0:8888
运行
$ src/redis-migrate-tool -c rmt.conf -o log -d
检查状态
$ redis-cli -h 127.0.0.1 -p 8888 info
查看所有key
KEYS *
查看key总数
DBSIZE
清空所有数据
FLUSHALL
5、数据校验:当数据迁移完成后,就可以进行数据迁移后的检查操作$ src/redis-migrate-tool -c rmt.conf -o log -C "redis_check"
Check job is running...
Checked keys: 1000
Inconsistent value keys: 0
Inconsistent expire keys : 0
Other check error keys: 0
Checked OK keys: 1000
All keys checked OK!
Check job finished, used 1.041s
6、如何完成业务切换?
如果是异构集群的迁移,更改redis驱动/客户端和修改代码,重新发布是必然的事情。如果是同构集群,做配置发布就可以。如果没有做重启发布,等待源集群没有连接之后,可以关闭RMT进程(kill)。或者重启应用,强制断开长连接。
五、注意事项
1、重要的事说三遍,RMT迁移数据到twemproxy,需要保持rmt.conf 中 [target] hash、distribution、servers 三个参数和目标集群的twemproxy配置严格一致。
2、迁移中和业务切换之前,请反复观察“-o rmt.log”日志信息,确认是否有异常。
3、业务切换之前,请充分检查,特别是数据的一致性。
4、RMT 建议部署在单独空闲机器上,同目的集群在同一个网段(跨机房迁移数据,可以提高迁移速度)。千万不要部署在源集群所在的机器,防止资源不足,比如内存,带宽,IOPS。
5、注意RDB传输是否超时。
6、redis client buf中的slave项,设置足够大的buffer size和超时时间。