Redis 数据迁移篇之redis-migrate-tool工具使用手册
发布时间
阅读量:
阅读量
文章目录
- Redis 数据迁移篇:Redis-Migrate-Tool 工具使用说明
- 安装部署步骤
- 数据迁移操作演示
- 检查指定监听端口是否已被其他服务占用
- 修改Redis-Migrate-Tool的配置参数
- 启动Redis-Migrate-Tool以开始数据迁移过程
- 实时监控Redis-Migration-Tool的状态以确保正常运行
- 完成数据迁移后进行系统一致性校验
- 安装部署步骤
Redis 数据迁移篇之redis-migrate-tool工具使用手册
Redis-Migrate-Tool(统称为RMT)是唯品会提供的开源Redis数据迁移工具,在线实现异构Redis集群间的数据迁移,在数据迁移过程中源集群能够持续处理正常的业务读写请求,并保证服务不停机
支持下面几种异构集群之间的数据迁移和同构集群扩容/缩容。
1)单个redis到twemproxy/cluster迁移
2)twemproxy到twemproxy/cluster迁移
3)cluster到twmeproxy/cluster迁移
1. 安装部署
# 示例1:CentOS系统部署redis-migrate-tool工具
安装依赖包
# yum install autoconf automake libtool bzip2
下载安装包
# wget https://github.com/vipshop/redis-migrate-tool/archive/master.zip
解压安装包
# unzip master.zip
# mv redis-migrate-tool-master redis-migrate-tool
编辑安装
# cd redis-migrate-tool
# mkdir data
# autoreconf -fvi
# ./configure
# make
代码解读
# 示例2:Ubuntu系统部署redis-migrate-tool工具
# mkdir -p /data/third_party
# cd /data/third_party
# apt-get update
# apt-get install automake
# apt-get install libtool
# apt-get install autoconf
# apt-get install bzip2
# apt-get install git
# git clone https://github.com/tanruixing88/redis-migrate-tool.git
# cd redis-migrate-tool
# autoreconf -fvi
# ./configure
# make
代码解读
2. 数据迁移示例
1. 确认redis-migrate-tool工具的监听端口是否被占用
# lsof -i:6666
代码解读
2.编辑redis-migrate-tool工具的配置文件
如下示例配置是进行twemproxy到twemproxy的迁移:
# vim /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.conf
代码解读
[source]
type: twemproxy
hash: fnv1a_64
hash_tag: "{}"
distribution: ketama
redis_auth: 6d27078f93b7508d1f6c0104
servers:
- 172.21.111.11:8100:1 server01
- 172.21.111.12:8100:1 server02
- 172.21.111.13:8100:1 server03
- 172.21.111.14:8100:1 server04
- 172.21.111.15:8100:1 server05
- 172.21.111.16:8100:1 server06
- 172.21.111.17:8100:1 server07
- 172.21.111.18:8100:1 server08
- 172.21.111.19:8100:1 server09
- 172.21.111.20:8100:1 server10
- 172.21.111.21:8100:1 server11
- 172.21.111.22:8100:1 server12
- 172.21.111.23:8100:1 server13
[target]
type: twemproxy
hash: fnv1a_64
hash_tag: "{}"
distribution: ketama
redis_auth: 6d27078f93b7508d1f6c0104
servers:
- 172.21.111.14:6201:1 server1
- 172.21.111.14:6202:1 server2
- 172.21.111.14:6203:1 server3
- 172.21.111.14:6204:1 server4
- 172.21.111.14:6205:1 server5
- 172.21.111.14:6206:1 server6
- 172.21.111.14:6207:1 server7
- 172.21.111.14:6208:1 server8
- 172.21.111.14:6209:1 server9
- 172.21.111.14:6210:1 server10
- 172.21.111.15:6201:1 server11
- 172.21.111.15:6202:1 server12
- 172.21.111.15:6203:1 server13
- 172.21.111.15:6204:1 server14
- 172.21.111.15:6205:1 server15
- 172.21.111.15:6206:1 server16
- 172.21.111.15:6207:1 server17
- 172.21.111.15:6208:1 server18
- 172.21.111.15:6209:1 server19
- 172.21.111.15:6210:1 server20
- 172.21.111.16:6201:1 server21
- 172.21.111.16:6202:1 server22
- 172.21.111.16:6203:1 server23
- 172.21.111.16:6204:1 server24
- 172.21.111.16:6205:1 server25
- 172.21.111.16:6206:1 server26
- 172.21.111.16:6207:1 server27
- 172.21.111.16:6208:1 server28
- 172.21.111.16:6209:1 server29
- 172.21.111.16:6210:1 server30
[common]
listen: 0.0.0.0:6666
threads: 4
step: 1
mbuf_size: 1024
source_safe: true
代码解读
注1:[source]和[taget] 由集群类型type和redis节点server组成;
[source] type可以支持single/twemproxy/cluster/aof file/rdb file 五种类型;
[target]中的type支持single/twemproxy/cluster/rdb file四种类型。
注2:在[common]中,一些参数主要作用如下,其他参数请参考GitHub(https://github.com/JokerQueue/redis-migrate-tool)
listen: 0.0.0.0:6666 # RMT的状态汇报端口
threads: 30 # 启动的线程数,建议大于所有redis节点的个数
step: 1 # 控制解析请求的速度,值越大需要的内存越多
mbuf_size: 1024 # 使用的mbuf大小,需要大于redis中最大的key的长度(不是value)
source_safe: true # 对于是否串行请求做全量RDB
注3:cluster集群到cluster集群迁移,[source] 和 [target]只需配置集群的一个节点。
注4:RMT迁移数据到twemproxy,需要保持rmt.conf 中 [target] hash、distribution、servers 三个参数和目标集群的twemproxy配置严格一致。
注5:源端的server的标签,如server01、server02需要保持和twemproxy中的配置一致。
代码解读
3. 运行redis-migrate-tool开始迁移
# /data/third_party/redis-migrate-tool/src/redis-migrate-tool -c /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.conf -v 11 -o /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.log -d
注:参数说明:
参数说明:
-d 以守护进程执行
-I 输出有用的信息
-n 不接收目标redis的回应
-v 设置日志等级,默认5,最小0,最大11
-o 输出到日志
-c 配置文件
-p 进程文件,默认没有
-m 存储器缓冲大小,默认512字节
-C 默认redis_migrate,就是迁移命令
-r 源类型,默认single,还可以是twemproxy或者redis_cluster
-R 目标类型,默认single,还可以是twemproxy或者redis_cluster
-T 线程数,使用多少线程来跑这个job,默认1
-b 默认可以使用128T的缓存来运行这个job
-f 源ip:port
-t 目标ip:port
-S 默认1,用于解析请求的步骤,数值越大,迁移越快,内存占用也就越大
代码解读
查看执行进程:
# ps -ef| grep redis-migrate-tool |grep rmt_tw_18100_to_16201.conf| grep -v grep
代码解读
若需停止进程,可执行如下命令:
# ps -ef| grep redis-migrate-tool |grep rmt_tw_18100_to_16201.conf| grep -v grep | awk '{print $2}' | xargs kill -9
代码解读
4. 监控redis-migration-tool的运行状态
# redis-cli -p 6666
127.0.0.1:6666> info stats
注:使用redis-cli可以连接rmt.conf中配置的端口,执行info命令,就可以观察迁移的状态。[total_msgs_outqueue]可以判断是否有oplog在队列中等待处理,如果total_msgs_outqueue>0,请继续等待。
代码解读
# tail -f /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.log
注:迁移中和业务切换之前,请反复观察“-o rmt_tw_18100_to_16201.log”日志信息,确认是否有异常。
代码解读
5. 迁移完毕后验证数据一致性
默认每次验证1000个KEY:
# /data/third_party/redis-migrate-tool/src/redis-migrate-tool -c /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.conf -v 11 -o /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.log -C redis_check
可指定每次验证10000个KEY:
# /data/third_party/redis-migrate-tool/src/redis-migrate-tool -c /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.conf -v 11 -o /data/third_party/redis-migrate-tool/rmt_tw_18100_to_16201.log -C "redis_check 10000"
注1:aof和rdb无法做rmt的redis_check校验。
注2:迁移之后的数据check是根据conf配置文件中指定的那两个Redis的key和value 的比较,只要这个过程中target的数据不要乱动就没事。
注3:rmt工具只要不关闭,一次的量要不大,速度同步的够快不会出现check不一致。
代码解读
全部评论 (0)
还没有任何评论哟~
