redis迁移工具redis-migrate-tool测试

1、 部署
依赖:
yum -y install automake
yum -y install libtool
yum -y install autoconf
yum -y install bzip2

安装redis-migrate-tool
unzip redis-migrate-tool-master.zip
cd redis-migrate-tool-master
autoreconf -fvi
./configure
make

检查安装是否成功,如下图所示即为正确
src/redis-migrate-tool -h
redis迁移工具redis-migrate-tool测试

参数说明:
-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,用于解析请求的步骤,数值越大,迁移越快,内存占用也就越大

使用:
可以将这些设置写入到配置文件中
vim /tmp/rmt.conf
[source]
type:single
servers:

  • 192.168.1.150:6379

[target]
type:single
servers:

  • 192.168.1.172:6379

[common]
listen:0.0.0.0:8910
threads:2
mbuf_size:512

运行测试:
从150迁到172,并且在迁移过程中,150继续写入
150
redis迁移工具redis-migrate-tool测试
172
redis迁移工具redis-migrate-tool测试
./redis-migrate-tool -c /tmp/rmt.conf -o log -d
redis迁移工具redis-migrate-tool测试
可以看到迁移程序运行中
结果什么都没有发生,查看log,发现报错了
[2018-08-30 11:24:04.392] rmt_redis.c:6446 ERROR: Can't handle RDB format version -1219911672
[2018-08-30 11:24:04.392] rmt_redis.c:6715 ERROR: Rdb file for node[192.168.1.150:6379] parsed failed
因为redis每个版本的rdb都不一样,所以原因可能是不支持redis4.0.1的rdb解析

没办法了,换3.2.12试试
我在172上设置了3.2版本的6379和6380
修改下配置文件
[source]
type:single
servers:

  • 192.168.1.172:6379

[target]
type:single
servers:

  • 192.168.1.172:6380

[common]
listen:0.0.0.0:8910
threads:2
mbuf_size:512
还是之前的数据
6379
redis迁移工具redis-migrate-tool测试
6380
redis迁移工具redis-migrate-tool测试
执行migrate
redis迁移工具redis-migrate-tool测试
查看6380,如下图,已经同步
redis迁移工具redis-migrate-tool测试
接着再在6379上写入
redis迁移工具redis-migrate-tool测试
查看6380,如下图已复制过来。
redis迁移工具redis-migrate-tool测试
证明redis-migrate-tool是实时的
上面这些操作,我均没有添加认证,那么我添加认证会如何呢?
6379,6380同时添加认证
redis迁移工具redis-migrate-tool测试
看,认证已生效
redis迁移工具redis-migrate-tool测试
再来测试,是否会实时同步
6379写入
redis迁移工具redis-migrate-tool测试
6380查看,如下图,显然没有同步过来。
redis迁移工具redis-migrate-tool测试
日志循环报如下报错:
redis迁移工具redis-migrate-tool测试
那么能不能通过配置文件加认证呢?不清楚,但可以试试
答案是可以,在配置文件中的[source][target]下加入redis_auth:111111
redis迁移工具redis-migrate-tool测试
重启migrate,再查看6380,已经迁移过来
redis迁移工具redis-migrate-tool测试

上面测试的是同一个库下的,那么不同库下的呢?
6379
redis迁移工具redis-migrate-tool测试
查看6380
redis迁移工具redis-migrate-tool测试
结果,在6379的2库和3库中的数据都插入到了6380的0库
这个看已解决的issues中,是要改一个文件。
我进行了改完,但结果也只是把db 0改成了db n,并没有将源多个库中的数据一一对应到目标数据库中。所以源存在多库时候慎用。

迁移cluster和single一样,区别是type,所以不过多叙述
type:redis cluster

2、 总结
A、 不适用4.0.x版本。
B、 源中存在多库时,禁用,避免发生键值覆盖。

3、 多源配置:
文档源自测试结果,达到了目的,但是有限制,由于没有别的文档可查阅
[source]
type:single
servers:

  • 192.168.1.172:6379
  • 192.168.1.172:6381
    redis_auth:111111

[target]
type:single
servers:

  • 192.168.1.172:6380
    redis_auth:111111

[common]
listen:0.0.0.0:8910
threads:2
mbuf_size:512

多源设置如上配置,要不都不带密码,要不源是同一个密码,否则无法启动,在线变更密码可以通过config set requirepass 密码 来进行操作
6379的所有key 共11个
redis迁移工具redis-migrate-tool测试
redis迁移工具redis-migrate-tool测试
6381的所有Key 共7个
redis迁移工具redis-migrate-tool测试
目标6381 自带1个重复的测覆盖用
redis迁移工具redis-migrate-tool测试

我的为啥是10号库,因为我改文件了……

执行之后如下图,看到6379,6381的全部过来了,并且把原本的ttl6的值给覆盖了
redis迁移工具redis-migrate-tool测试
同时6379和6381继续写入
redis迁移工具redis-migrate-tool测试
查看结果,已经追加过来了
redis迁移工具redis-migrate-tool测试

4、 测试过滤器
说是过滤器,其实是这个过滤器指定哪个,哪个才能被迁移过来。
限制:没有找到可以同时过滤多个的写法,只能写1个
看测试结果
先清空6380
过滤条件加入filter:ttl,也就是ttl开头的都迁移过来
[common]
listen:0.0.0.0:8910
threads:2
mbuf_size:512
filter:ttl

查看结果:
redis迁移工具redis-migrate-tool测试
可以看到只迁移过来了ttl开头的key
6379,6381继续写一些包含ttl开头还有其他
redis迁移工具redis-migrate-tool测试
redis迁移工具redis-migrate-tool测试
查看6380,都已经迁移过来
redis迁移工具redis-migrate-tool测试

一个想法,我要是启多个migrate呢?是不是能过滤多个条件?
再启动一个migrate,换个端口,再添加个配置文件,修改filter:name*
redis迁移工具redis-migrate-tool测试
哎呦,都追加过来了
再在6379上同时写入1个ttl开头,1个name开头的
redis迁移工具redis-migrate-tool测试
查看6380,都已经追加过来
redis迁移工具redis-migrate-tool测试
但是这种双开的方法我不确定靠不靠谱哈

转载于:https://blog.51cto.com/8370646/2170479

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值