注意:目前不支持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. Java(控制台输出)实现猜数字小游戏

    import java.util.Scanner; import java.util.Random; public class GuestNum{ public static void main(St ...

  2. Cassandra基础

    Apache Cassandra特性 Apache Cassandra由Facebook基于Amazon的Dynamo及其在Google的Bigtable上的数据模型设计开发的面相列的数据库,实现没有 ...

  3. pnpm 快速节省磁盘工具的包管理工具

    nodejs 相关的包管理工具有很多,我们常用的有 npm cnpm(我基本已经不用了),yarn... pnpm 是另外一个不错的包管理工具,包含以下特性 快速 节省空间,一个版本的包只会在磁盘中存 ...

  4. jquery 复选框(选中/取消)获取状态

    $("#login-rem").attr("checked","checked") //设置选中 $("#login-rem&qu ...

  5. Webpack 的 Tree Shaking

    为什么要使用 Tree Shaking? 当从某文件模块中导出(某一个或几个变量.函数.对象等),然而这个文件模块还有许多其它(我们这次并不需要)的导出,webpack会不管三七二十一简单粗暴的将整个 ...

  6. ES查询之刨根问底

    昨天有一个需求,就是想要根据某个网关url做过滤,获取其下面所有的上下文nginx日志:如果直接"query":"https://XXX/YYY/ZZZ"发现有 ...

  7. 弱网测试—Network-Emulator-Toolkit工具

    参考别人网址:http://blog.csdn.net/no1mwb/article/details/53638681 弱网测试,属于健壮性测试:怎么样去做弱网测试呢? 一.安装弱网测试工具-Netw ...

  8. ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍

    在ASP.NET AJAX Beta2中,UpdateProgress控件已经从“增值”CTP中移到了ASP.NET AJAX核心中.以下两篇关于UpdateProgress的文章基本翻译自ASP.N ...

  9. msp430学习笔记-TA

    定时器,CCR2,CCR1三者共用一个中断向量 定时器A是一个16位的定时/计数器.它有3个捕获/比较寄存器:能支持多个时序控制.多个捕获/比较功能和多个PWM输出:有广泛的中断功能,中断可由计数器溢 ...

  10. Composer的学习

    来自http://blog.sina.com.cn/s/blog_6262a50e0101b5ut.html 简介 composer是PHP中的一个依赖关系管理工具.只要(按指定格式)声明项目所依赖的 ...