注意:目前不支持4.0.X及以上的redis使用

Redis 集群迁移工具,基于redis复制,快速,稳定。 
github链接:https://github.com/vipshop/redis-migrate-tool

特点:

  • •快速。
  • •多线程。
  • •基于redis复制。
  • •实时迁移。
  • •迁移过程中,源集群不影响对外提供服务。
  • •异构迁移。
  • •支持Twemproxy集群,redis cluster集群,rdb文件 和 aof文件。
  • •过滤功能。
  • •当目标集群是Twemproxy,数据会跳过Twemproxy直接导入到后端的redis。
  • •迁移状态显示。
  • •完善的数据抽样校验。

迁移工具的来源可以是:单独的redis实例,twemproxy集群,redis cluster,rdb文件,aof文件。 
迁移工具的目标可以是:单独的redis实例,twemproxy集群,redis cluster,rdb文件。

#安装依赖:

yum install autoconf automake libtool bzip2

#linux机器上下载包

git clone https://github.com/vipshop/redis-migrate-tool

软件编译安装:

$ cd redis-migrate-tool

$ autoreconf -fvi

$ ./configure

$ make

$ src/redis-migrate-tool -h

软件运行:

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

配置文件示例:从redis cluster集群迁移数据到twemproxy集群

[source]type: redis clusterservers:- 127.0.0.1:6379

[target]type: twemproxyhash: fnv1a_64hash_tag: "{}"distribution: ketamaservers:- 127.0.0.1:6380:1 server1- 127.0.0.1:6381:1 server2- 127.0.0.1:6382:1 server3- 127.0.0.1:6383:1 server4

[common]listen: 0.0.0.0:34345threads: 8step: 1mbuf_size: 512source_safe: true

配置文件示例:从redis cluster集群迁移数据到另外一个cluster集群

[source]type: redis clusterservers:- 127.0.0.1:8379

[target]type: redis clusterservers:- 127.0.0.1:7379

[common]listen: 0.0.0.0:8888

配置文件示例:从rdb文件恢复数据到redis cluster集群[source]

type: rdb fileservers:

- /data/redis/dump1.rdb

- /data/redis/dump2.rdb

- /data/redis/dump3.rdb

[target]type: redis clusterservers:

- 127.0.0.1:7379

[common]listen: 0.0.0.0:8888

配置文件示例:从单机迁移数据到另外一个单机

[source]
type: single
servers : 
-192.168.0.2:6379
redis_auth:redis

[target]
type: single
servers:
-192.168.0.5:6379

[common]
listen: 0.0.0.0:9999

状态查看:通过redis-cli连接redis-migrate-tool监控的端口,运行info命令

$redis-cli -h 127.0.0.1 -p 8888127.0.0.1:8888> info# Serverversion:0.1.0os:Linux 2.6.32-573.12.1.el6.x86_64 x86_64multiplexing_api:epollgcc_version:4.4.7process_id:9199tcp_port:8888uptime_in_seconds:1662uptime_in_days:0config_file:/ect/rmt.conf

# Clientsconnected_clients:1max_clients_limit:100total_connections_received:3

# Memorymem_allocator:jemalloc-4.0.4

# Groupsource_nodes_count:32target_nodes_count:48

# Statsall_rdb_received:1all_rdb_parsed:1rdb_received_count:32rdb_parsed_count:32total_msgs_recv:7753587total_msgs_sent:7753587total_net_input_bytes:234636318total_net_output_bytes:255384129total_net_input_bytes_human:223.77Mtotal_net_output_bytes_human:243.55Mtotal_mbufs_inqueue:0total_msgs_outqueue:0127.0.0.1:8888>

查看log:

[root@redis04 redis-migrate-tool-master]# tail -f log
[2018-09-11 10:20:30.828] rmt_core.c:2551 migrate job is running...
[2018-09-11 10:20:30.828] rmt_redis.c:1706 Start connecting to MASTER[192.168.0.2:6379].
[2018-09-11 10:20:30.828] rmt_redis.c:1740 Master[192.168.0.2:6379] replied to PING, replication can continue...
[2018-09-11 10:20:30.829] rmt_redis.c:1051 Partial resynchronization for MASTER[192.168.0.2:6379] not possible (no cached master).
[2018-09-11 10:20:30.829] rmt_redis.c:1110 Full resync from MASTER[192.168.0.2:6379]: 05f9812b79e1e3e1ca95487d7acd360df644ad0a:18683803
[2018-09-11 10:20:31.120] rmt_redis.c:1517 MASTER <-> SLAVE sync: receiving 7844908 bytes from master[192.168.0.2:6379]
[2018-09-11 10:20:31.131] rmt_redis.c:1623 MASTER <-> SLAVE sync: RDB data for node[192.168.0.2:6379] is received, used: 0 s
[2018-09-11 10:20:31.131] rmt_redis.c:1643 rdb file node192.168.0.2:6379-1536632430829999-11046.rdb write complete
[2018-09-11 10:20:31.256] rmt_redis.c:6601 Rdb file for node[192.168.0.2:6379] parsed finished, use: 0 s.
[2018-09-11 10:20:31.258] rmt_redis.c:6709 All nodes' rdb file parsed finished for this write thread(0).

数据校验:

[root@redis04 redis-migrate-tool-master]# 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 0.007s

参考来源:https://www.cnblogs.com/luckcs/articles/6477261.html

Redis-Migrate-Tool 使用详解的更多相关文章

  1. redis.conf 具体配置详解

    redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...

  2. redis.windows.conf配置详解

    redis.windows.conf配置详解 转自:https://www.cnblogs.com/kreo/p/4423362.html # redis 配置文件示例 # 当你需要为某个配置项指定内 ...

  3. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  4. NoSQL之Redis高级实用命令详解--安全和主从复制

    Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...

  5. Redis的事务功能详解

    Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...

  6. redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合

    redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...

  7. 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  8. 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习

    反射实现Model修改前后的内容对比   在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...

  9. redis.conf配置信息详解

    redis.conf配置信息详解 配置文件 # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =& ...

  10. Redis进阶实践之二十 Redis的配置文件使用详解

    一.引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多.但是,好多天过去了,总是感觉好像还缺点什么 ...

随机推荐

  1. baidu voice tts build

    C++: g++ -c base64.cpp -o base64.o copy json.a   curl.a  to  project root dir g++ sample.cpp -L. -lj ...

  2. mysql再探

    select子句及其顺序 select from where group by having order by limit 创建表 create table student(id int not nu ...

  3. 怎样解题 (G. 波利亚 著)

    第一部分 (已看) 目的 1. 帮助学生 2. 问题,建议,思维活动 3. 普遍性 4. 常识 5. 教师和学生,模仿和实践 主要部分,主要问题 6. 四个阶段 7. 理解题目 8. 例子 9. 拟订 ...

  4. .NET本质论 类型基础

    类型概述 类型是CLR程序的生成块(building block). CLR类型(CLR type)是命名的可重用抽象体. CLR类型定义由零个或多个成员(member)组成.类型的成员控制类型如何使 ...

  5. oracle-sql分析练习

    http://blog.chinaunix.net/uid-13552913-id-3028644.html Oracle 修改字段顺序的两种方法 一 如果要修改字段顺序,一般情况可以使用以下步骤: ...

  6. ONVIF让NVR与网络监控摄像机更"亲密"

    NVR的发展目前看主要分为二大类,一类是接入级的嵌入式NVR,其主要针对主流的IP摄像机研发的一种NVR. 另一类是针对社区和平安城市级的大型NVR,其主要采用的是以高端服务器软.硬件结构为基础,以传 ...

  7. 深入探讨JavaScript如何实现深度复制(deep clone)

    在代码复用模式里面有一种叫做“复制属性模式”(copying properties pattern).谈到代码复用的时候,很有可能想到的是代码的继承性(inheritance),但重要的是要记住其最终 ...

  8. Elasticsearch的脚本化数据导入导出

    我用的ES的版本是2.4.1,由于没有相应的命令实现数据的导入和导出,就是像mysql的那种mysqldump类似的指令. 更苦逼的是,我们的生产和测试环境,还不能联网,连ES的第三方的插件都没有办法 ...

  9. ecstore开启发送邮件日志,并且排查邮件发布出去原因

    config.php里 define("MAIL_LOG", true);//发送邮件日志开启2017-04-19 10:29:31 解决sendmail connection r ...

  10. mysql57免安装版配置

    1,下载mysql5.7压缩文件[具体到官网下载就行了] 2,解压并把mysql5.7放到c盘根目录下 3,进入mysql5.7主目录修改my-default.ini 重命名为:my.ini [如果没 ...