redis集群同步迁移方法(二):通过redis-migrate-tool实现

前篇介绍的redis replication方法,操作步骤多,而且容易出错。在git上看到一些开源工具也能实现同步迁移功能,而且步骤简单,比如redis-port,redis-migrate-tool等工具。实验演示使用redis-migrate-tool,将redis cluster 迁移到一个单实例redis中。

1.redis-migrate-tool的安装

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

需要注意的是安装redis-migrate-tool依赖automake, libtool, autoconf and bzip2这些包

2..运行环境

源节点:10.86.30.37:36379/10.86.30.37:36380/10.86.30.37:36381

[[email protected]_86_30_37_10.86.30.37 redis-migrate-tool]# redis-cli -c -p 36379 -h 10.86.30.37 cluster nodes

7fab85269fe72d68414ffd15a54605d45f280aff 10.86.30.37:36381 master - 0 1477555329981 7 connected 10001-16383

e0c45fe484e55967c968814076b0a5f67f4f6821 10.86.30.37:36380 master - 0 1477555330984 8 connected 5001-10000

ba3d6a50ef6bdf6212c0360baec97f29f3b25385 10.86.30.37:36379 myself,master - 0 0 6 connected 0-5000

目标节点:10.86.30.37:6389

3.迁移过程

  • redis cluster向redis单实例迁移配置文件
[source]
type: redis cluster
servers:
 - 10.86.30.37:36379

[target]
type: single
servers:
 - 10.86.30.37:6389

[common]
listen: 0.0.0.0:8888
  • 执行命令进行同步
/usr/local/redis-migrate-tool/src/redis-migrate-tool -c mgr.conf -d
  • 查看同步后的文件
[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 6389 keys \*
1) "5"
2) "2"
3) "1"
4) "10"
5) "12"
6) "3"
7) "4"
8) "13"
9) "11"
[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36379 keys \*
1) "10"
2) "11"
3) "3"
[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36380 keys \*
1) "12"
2) "1"
3) "2"
4) "5"
[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36381 keys \*
1) "13"
2) "4"

所有节点数据同步到了但实例节点中,插入数据测试

[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36379 -c
10.86.30.37:36379> set 30 30
-> Redirected to slot [9877] located at 10.86.30.37:36380
OK
10.86.30.37:36380> set 31 31
-> Redirected to slot [14004] located at 10.86.30.37:36381
OK
10.86.30.37:36381> set 32 32
-> Redirected to slot [1751] located at 10.86.30.37:36379
OK
[[email protected]_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 6389 keys \*
 1) "5"
 2) "30"
 3) "31"
 4) "2"
 5) "1"
 6) "10"
 7) "21"
 8) "12"
 9) "3"
10) "4"
11) "13"
12) "32"
13) "11"

可以看到新增数据也同步到了redis单实例节点中

4.利用redis-migrate-tool的工具进行更全面的验证

  • 利用redis-migrate-tool提供的命令进行一致性校验:
[[email protected]_86_30_37_10.86.30.37 redis]# /usr/local/redis-migrate-tool/src/redis-migrate-tool -c mgr.conf 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.047s
  • 利用redis-migrate-tool提供的命令进行插入校验:
[[email protected]_86_30_37_10.86.30.37 redis]# /usr/local/redis-migrate-tool/src/redis-migrate-tool -c mgr.conf log -C redis_testinsert
Test insert job is running...

Insert string keys: 200
Insert list keys  : 200
Insert set keys   : 200
Insert zset keys  : 200
Insert hash keys  : 200
Insert total keys : 1000

Correct inserted keys: 1000
Test insert job finished, used 0.417s

需要注意的是,插入校验生成的数据并不会清除,如果只是为了测试功能,那么可以减少插入的key。

时间: 2024-10-17 17:57:54

redis集群同步迁移方法(二):通过redis-migrate-tool实现的相关文章

redis集群同步迁移方法(一):通过redis replication实现

讲到redis的迁移,一般会使用rdb或者aof在主库做自动重载到目标库方法.但该方法有个问题就是无法保证源节点数据和目标节点数据保持一致,一般线上环境也不允许源库停机,所以要在迁移过程后还要实现同步达到数据的一致性.公司线上环境使用的是redis自己的cluster,每个节点都拥有多个rdb和aof文件,使用原始方法无疑是难上加难.本文主要讨论两种方法来实现不停机源库前提下,实现源库(redis cluster)到目标库(cluster或者单实例)的迁移: 采用redis replicatio

Redis集群部署(二)

                                添加主从节点 一.查看集群信息redis-cli -p 6379 cluster nodes [[email protected] redis]# redis-cli -h 192.168.1.3 -p 6379 cluster nodes dbc41c1e1a3c0c51c1e2a8216dace0f8883cf51f 192.168.1.3:6385 master - 0 1434048814711 0 connected 85

1.22 redis集群介绍21.23/21.24 redis集群搭建配置21.25 redis集群

21.22 redis集群介绍多个redis节点网络互联,数据共享所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为.支持在线增加.删除节点客户端可以连任何一个主节点进行读写 21.23/21.24 redis集群搭建配置场景设置:两台机器,分别开启三个Redis服务(端口)A机器上三个端口7000,7002,7004,全部为主B

redis 集群安装(二)

版本:redis-4.0.2.tar.g (一)创建reids节点 我们使用3台服务器,分别为192.168.99.129,192.168.99.153,192.168.99.171三台服务器. 192.168.99.129装 7001,7002两个节点,192.168.99.153装 7003,7004两个节点,192.168.99.171装 7005,7006两个节点. 在192.168.99.129的 /usr/local/rediscluster 下创建 7001和7002文件夹,并且将

redis集群搭建方法

概念 首先有个概念: Redis需要半数以上投票某个节点挂掉才算挂掉,所以至少需要3个master节点,然后又需要3个slave备份节点,所以共6个.只有主备机才会同步数据,平行的三个节点数据是不一样的,只是你连接任意一点,然后根据hash算法选择跳转到那一台. 以上是在使用了哨兵的情况下,本文不存在哨兵,只是集群,当master节点挂掉后,还是需要手动切换 推荐阅读:https://blog.csdn.net/qq_42815754/article/details/82912130 原文地址:

Redis源码分析(二十四)--- tool工具类(2)

在上篇文章中初步的分析了一下,Redis工具类文件中的一些用法,包括2个随机算法和循环冗余校验算法,今天,继续学习Redis中的其他的一些辅助工具类的用法.包括里面的大小端转换算法,sha算法在Redis中的实现和通用工具类算法util.c. 先来看看大小端转换算法,大小端学习过操作系统的人一定知道是什么意思,在不同的操作系统中,高位数字的存储方式存在,高位在前,低位在后,或是高位在后,低位在前,所以这里面就涉及到转换,根据不同的操作系统,有不同的转换方式,所以Redis在这方面就开放了这样一批

codis/redis数据数据迁移至阿里云redis服务器

本次迁移采用了唯品会的开源工具RMT 1.阿里云redis服务器的购买 注:要和生产上数据的内存大小一致 不然有些key会迁移失败 很明显的OOM报错 2.迁移机器的cpu要足够  迁移会有一段时间的负载上升 对迁移机器的IOPS有要求 rmt_redis.c:1474 Error: I/O error reading bulk count from MASTER 这种报错你就需要查看一下 迁移codis服务器的性能了 3.RMT(redis-migrate-tool)工具的安装 git clo

Redis的安装和使用之四------Redis集群

一.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上: 整个集群的部分节点失败或者不可达的情况下能够继续处理命令. Redis集群的数据分片

Redis集群部署(一)

一.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上. 整个集群的部分节点失败或者不可达的情况下能够继续处理命令. Redis 集群的数据分