使用redis-migrate-tool进行redis数据搬迁

 

工具的git地址:https://github.com/vipshop/redis-migrate-tool

linux环境需要安装资源:autoconf automake libtool bzip2 (使用yum install指令)

编译:

$ cd redis-migrate-tool
$ autoreconf -fvi
$ ./configure
$ make
$ src/redis-migrate-tool -h

执行:

src/redis-migrate-tool -c rmt.conf -o log -d

日志:

tail log

 查看迁移信息:

# rmt.conf配置中的listen的端口(8888),地址(127.0.0.1)
redis-cli -h 127.0.0.1 -p 8888
127.0.0.1:8888> info

抽取/校验数据:

#默认抽取1000个数据比对
src/redis-migrate-tool -c rmt.conf -o log -C "redis_check 2000"

插入测试:

#默认1000,rmt.conf中若有filter,效果不佳
src/redis-migrate-tool -c rmt.conf -o log -C "redis_testinsert 2000"

整合两个单点数据的配置(rmt.conf):

[source]
type: single
servers:
 - 127.0.0.1:6380
 - 127.0.0.1:6381

[target]
type: single
servers:
 - 127.0.0.1:6382

[common]
listen: 0.0.0.0:8888

    两个单点转一个单点,需要确保不存在键值相同的,不然数据可能会被脏数据覆盖。

[common]下属性解释:

    filter:用于过滤不符合要求的键值 ,需满足Glob-Style模式,目前发现只能使用*,?,[],^,没有{},这将导致以某两个字符串开头的需求需要双开工具才能实现。(有人知道其他方式吗?)

双开注意:

    重新创建一个conf文件,修改listen的端口,修改source和target。启动指令中的rmt.conf改为新建配置文件。

场景不可用:

    A库搬迁到B库,B库修改某个key的值后,重启rmt,会发现B库数据修改的数据被还原。这是由于,rmt启动时会将A库的所有数据生成oplog(写操作),发送给B库执行,故数据被覆盖。

转载于:https://my.oschina.net/momomo/blog/3022077

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值