redis集羣同步遷移方法(二):經過redis-migrate-tool實現

前篇介紹的redis replication方法,操做步驟多,並且容易出錯。在git上看到一些開源工具也能實現同步遷移功能,並且步驟簡單,好比redis-port,redis-migrate-tool等工具。實驗演示使用redis-migrate-tool,將redis cluster 遷移到一個單實例redis中。
1.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
[root@10_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
  • 查看同步後的文件
[root@10_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"
[root@10_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36379 keys \*
1) "10"
2) "11"
3) "3"
[root@10_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"
[root@10_86_30_37_10.86.30.37 redis]# redis-cli -h 10.86.30.37 -p 36381 keys \*
1) "13"
2) "4"
全部節點數據同步到了但實例節點中,插入數據測試
[root@10_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 
[root@10_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提供的命令進行一致性校驗:
[root@10_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提供的命令進行插入校驗:
[root@10_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。
相關文章
相關標籤/搜索