redis集群雙活-數據遷移
一、redis雙活
1、集群搭建 (一主兩從)
Redis-Sentinel是redis官方推薦的高可用性解決方案,sentinel哨兵是特殊的redis服務,不提供讀寫服務,主要用來監控redis實例節點,當用redis作master-slave的高可用時,如果master本身宕機,redis本身或者客戶端都沒有實現主從切換的功能,而redis-sentinel就是一個獨立運行的進程,用于監控多個master-slave集群, 自動發現master宕機,進行自動切換slave > master,類似Java這類客戶端會通過sentinel發現redis主節點并與其建立連接,也可以實現讀寫分離。

環境準備:
192.168.43.145 (master)
192.168.43.146 (slave)
192.168.43.121 (slave)
三臺機器下載安裝包:
#存放目錄
/app/redis
#下載安裝包
#解壓
tar -zxvf redis-7.0.9.tar.gz

#由于redis是c語言編寫的,所以我們需要先安裝gcc,安裝的命令如下:
yum install gcc-c++
#然后
cd redis-7.0.9
make
主節點下:
vim redis.conf
修改
bind 192.168.43.145
replica-read-only no
vim sentinel.conf
修改
sentinel monitor mymaster 192.168.43.145 6379 2
192.168.43.146從節點下:
vim redis.conf
修改
bind 192.168.43.146
replicaof 192.168.43.145 6379
vim sentinel.conf
修改
sentinel monitor mymaster 192.168.43.145 6379 2
192.168.43.121從節點下:
vim redis.conf
修改
bind 192.168.43.121
replicaof 192.168.43.145 6379
vim sentinel.conf
修改
sentinel monitor mymaster 192.168.43.145 6379 2
啟動服務:
./src/redis-sentinel ./sentinel.conf >> sentinel.log &
./src/redis-server ./redis.conf >> server.log &
#是否有報錯
tail -f server.log
注:如果報從節點無法copy,關閉主節點防火墻后,再重啟防火墻
systemctl stop firewalld
systemctl start firewalld
systemctl status firewalld
登錄主機節點查看集群信息:
cd src
./redis-cli -h 192.168.43.145 -p 6379
info replication

至此集群搭建完畢!
二、數據遷移實時同步:redis-shake
安裝目錄 /app/redis-shake
tar -zxvf redis-shake-linux-amd64.tar.gz
修改配置文件 shake.toml
vim shake.toml
[sync_reader]下
cluster = false #主從模式這里為fales
address = "xxx.xxx.xxx.xxx:6379" # 源集群主節點ip
username = "" # redis源集群用戶名,沒有可為空
password = "" # 源集群密碼,沒有可為空
[redis_writer]下
cluster = false # 主從模式這里為fales
address = "xxx.xxx.xxx.xxx:6379" # 目標集群主節點ip
username = "" #redis目標集群用戶名,沒有可為空L
password = "" # 目標集群密碼,沒有可為空
#同步數據在目標集群下將進行重寫
rdb_restore_command_behavior = "rewrite " # panic, rewrite or skip
保存退出后
啟動命令:
./redis-shake shake.tool >> shake.log &
驗證:
1、登錄新老集群 執行 DBSIZE 查看數據量是否一致
2、在老集群下新增數據 新集群下能否實時查到
注:redis-shake 工具可能因為某些原因進程掛掉
建議編寫自啟腳本 啟動
放置 /app/redis-shake 目錄下

直接啟動,start.sh即可
當需要切換集群時,將工具反向配置一下即可。注不能在兩個集群中同時啟動redis-shake,負責數據將不斷在兩集群間無限復制

浙公網安備 33010602011771號