Redis集群更迁操作
①.保存集群每一个节点数据 生成对应的多个dump.rdb文件
②.新建集群 将dump.rdb文件数据导入新建的集群中,导入完成后检查数据是否导入成功

①保存集群每一个节点数据 生成对应的多个dump.rdb文件

1.连接集群,确认集群分布在哪些服务器
redis-cli -h 10.45.128.47 -c -p 7000 cluster nodes|awk -F " " '{print $2}'|awk -F ":" '{print $1}'|uniq

redis集群之间如何复制 redis 集群迁移_redis集群之间如何复制

2.连接集群,确认当前服务器上有哪些节点
Ex:
redis-cli -h 10.45.128.47 -c -p 7000 cluster nodes |grep 10.45.128.47|awk -F " " '{print $2}'|sort

redis集群之间如何复制 redis 集群迁移_redis集群之间如何复制_02

然后依次连接到对应的节点 保存对应节点上的数据 
【每个节点生成文件后 就立刻拷贝文件 避免第二次的操作覆盖第一次的文件!
redis-cli -h 10.45.128.47 -c -p 7000
执行命令:
SAVE
保存成功后会显示ok

redis集群之间如何复制 redis 集群迁移_服务器_03


文件生成路径可以照以下方式搜索

=========================================================================

[root]/usr/local#ps -ef |grep redis

root      17360  62437  0 18:12 pts/0    00:00:00 grep --color redis

root     188797      1  0 12:34 ?        00:00:22 redis-server 10.45.128.47:7000 [cluster]

root     188799      1  0 12:34 ?        00:00:13 redis-server 10.45.128.47:7001 [cluster]

root     188803      1  0 12:34 ?        00:00:13 redis-server 10.45.128.47:7002 [cluster]

root     188807      1  0 12:34 ?        00:00:16 redis-server 10.45.128.47:7003 [cluster]

root     188811      1  0 12:34 ?        00:00:12 redis-server 10.45.128.47:7004 [cluster]

root     188817      1  0 12:34 ?        00:00:12 redis-server 10.45.128.47:7005 [cluster]

[root]/usr/local#pwdx 188797

188797: /usr/local/redis-cluster/7000

=========================================================================

 那么对应 [7000] 节点的[dump.rdb]文件就在 /usr/local/redis-cluster/7000下 

redis集群之间如何复制 redis 集群迁移_运维_04

 到对应的目录下找到最新生成的dump.rdb文件,确认生成时间和操作时间一致
Ex:
-rw-r--r--. 1 root root 10738440 Oct 17 18:11 dump.rdb

在确认服务器内存资源够的情况下
新建临时目录,目录下新建新节点目录名称
    原始集群用的8000-8005  那新建7000-7005的对应目录
并将各个节点对应的dump.rdb文件拷贝到对应的节点目录

#对应的目录自己看资源选择,以下命令只是示例
mkdir -p /mnt/temp/7000
cp /usr/local/redis-cluster/8000/dump.rdb /mnt/temp/7000

=======================================================
[root@localhost]/mnt/temp#ll 7000
total 10488
-rw-r--r--. 1 root root 10738440 Oct 17 18:19 dump.rdb
[root@localhost]/mnt/temp#
=======================================================

②.新建集群 将dump.rdb文件数据导入新建的集群中

新建集群操作和之前一致,不重复使用之前节点值即可
1.源码安装对应的安装包 这里我使用的redis-rdb-tools [离线源码安装]

自行下载安装包,永久有效分享~

链接:https://pan.baidu.com/s/1enOydXu0yug2hXwuJF9JeQ?pwd=1024 
提取码:1024 

===========================================================
 =                                                Centos 系统                                                    =
 ===========================================================
tar -xvf Python-3.4.4.tgz
 cd Python-3.4.4/
 chmod 777 *
 mkdir -p /usr/local/python3.4
 ./configure --prefix=/usr/local/python3.4/
 make && make install
 ln -s /usr/local/python3.4/bin/python3.4 /usr/bin/python3.4
 ln -s /usr/local/python3.4/bin/python3.4 /usr/bin/python3
 cd ..tar -xvf redis-py-2.10.6.tar.gz
 cd redis-py-2.10.6/
 chmod 777 *
 python3 setup.py install
 cd ..tar -xvf redis-py-cluster-1.3.6.tar.gz
 cd redis-py-cluster-1.3.6/
 chmod 777 *
 python3 setup.py install
 cd ..tar -xvf py-redis-1.1.1.tar.gz
 cd py-redis-1.1.1/
 python3 setup.py install
 cd ..unzip redis-rdb-tools-master.zip
 cd redis-rdb-tools-master/
 chmod 777 *
 python3 setup.py install
 cd ../tar -xvf python-lzf-0.2.4.tar.gz
 cd python-lzf-0.2.4/
 chmod 777 *
 python3 setup.py install
 cd ..===========================================================
 =                                                     SUSE 系统 SP12                                       =
 ===========================================================
tar -xvf Python-3.4.4.tgz
 cd Python-3.4.4/
 chmod 777 *
 mkdir /usr/local/python3.4
 ./configure --prefix=/usr/local/python3.4/
 make && make install
 cd /usr/bin/
 rm ./python
 ln -s /usr/local/python3.4/bin/python3.4 /usr/bin/python3.4
 ln -s /usr/local/python3.4/bin/python3.4 /usr/bin/python3
 cd ../tar -xvf setuptools-29.0.1.tar.gz
 cd setuptools-29.0.1/
 chmod 777 *
 python3 setup.py build
 python3 setup.py install
 cd ..tar -xvf redis-py-2.10.6.tar.gz
 cd redis-py-2.10.6/
 chmod 777 *
 python3 setup.py install
 cd ..tar -xvf redis-py-cluster-1.3.6.tar.gz
 cd redis-py-cluster-1.3.6/
 chmod 777 *
 python3 setup.py install
 cd ..tar -xvf py-redis-1.1.1.tar.gz
 cd py-redis-1.1.1/
 python3 setup.py install
 cd ..unzip redis-rdb-tools-master.zip
 cd redis-rdb-tools-master/
 chmod 777 *
 python3 setup.py install
 cd ../tar -xvf python-lzf-0.2.4.tar.gz
 cd python-lzf-0.2.4/
 chmod 777 *
 python3 setup.py install
 cd .. 2.导入数据到新的集群
 执行【find / -name rdb】命令查找到rdb文件所在
 然后执行命令,将[dump.rdb]文件转成 json格式
/usr/local/bin/rdb --command json dump.rdb > dump.json
 其他路径的情况:
/usr/local/python3.4/bin/rdb --command json dump.rdb > dump.json上传配置文件[node.ini]
 上传脚本[trans.py]
 将两个文件拷贝到所的新建的节点目录下
 vi修改node.ini 对应好当前服务器的reids用的IP 和对应的Port
 Ex:
 IP:10.45.128.47
 Port:7000最后执行脚本将数据导入新的集群
 python3 trans.py3.导入完成后检查数据是否导入成功
 连接新的集群,对应的将一个节点上的数据save保存下来
 将对应的dump.rdb文件 转换成 dump.json文件
 cat dump.json |wc -l

检查这个节点的数据量是否和你之前生成的json文件的数据量一致 如果一致就没有问题

redis集群之间如何复制 redis 集群迁移_运维_05