redis備份恢復-物理備份遷移集羣

redis備份恢復
分片redis集羣的備份恢復
redis物理遷移集羣備份恢復
環境:
centos6.6
redis-3.0.3
redis-3.2.1.gem.zip

2個機器啓動了6個redis實例 ,每臺機器3個實例
遷移前的機器是 10.12.5.40 10.12.5.41
遷移後的機器是 10.112.5.17
列表如下:
遷移前 遷移後
10.12.5.40:7000 10.112.5.17:7000
10.12.5.40:7001 10.112.5.17:7001
10.12.5.40:7002 10.112.5.17:7002
10.12.5.41:7000 10.112.5.17:7003
10.12.5.41:7001 10.112.5.17:7004
10.12.5.41:7002 10.112.5.17:7005

目錄結構如下:
ll /home/worker/opt/redis-server/current
-rwxr-xr-x 1 worker worker 294 Aug 2 18:33 1startup_all_server.sh
-rwxr-xr-x 1 worker worker 181 Aug 1 18:58 2cluster_startup.sh
drwxr-x--- 2 worker worker 4096 Aug 2 18:53 6379
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7000
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7001
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7002
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7003
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7004
drwxr-x--- 2 worker worker 4096 Aug 2 18:42 7005
drwxr-x--- 2 worker worker 4096 May 9 2016 bin
drwxr-x--- 2 worker worker 4096 May 10 2016 conf_default
-rw-r----- 1 worker worker 1439 Apr 18 15:29 redis
-rw-r----- 1 worker worker 1518 Apr 18 15:29 redisall
drwxr-x--- 5 worker worker 4096 Aug 1 18:59 var


配置文件如下:(每個端口的配置文件一樣,僅直接替換端口即可。)
cat 7000/7000.conf
include /home/worker/opt/redis-server/current/conf_default/redis.conf
port 7000
dbfilename dump7000.rdb
appendfilename appendonly7000.aof
daemonize yes
appendonly yes
cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file nodes-7000.conf
dir /home/worker/opt/redis-server/current/var/db/
pidfile /home/worker/opt/redis-server/current/var/run/7000.pid
logfile /home/worker/opt/redis-server/current/var/log/7000.log


#物理文件備份:
10.12.5.40節點1:
cd /home/worker/opt/redis-server/current/
tar zcf ${HOSTNAME}_redis.tar.gz var/db
#10.12.5.41節點2:
cd /home/worker/opt/redis-server/current/
tar zcf ${HOSTNAME}_redis.tar.gz var/db


拷貝到新的機器10.112.5.17:
mkdir -p /war/backup/redis_bak/
cd /war/backup/redis_bak/
scp 10.12.5.40:/home/worker/opt/redis-server/current/*_redis.tar.gz .
scp 10.12.5.40:/home/worker/opt/redis-server/current/*_redis.tar.gz .
mkdir dir_5.40 dir_5.41
tar xf 1_redis.tar.gz -C dir_5.40
tar xf 2_redis.tar.gz -C dir_5.41

進入新部署機器的數據目錄:
cd /home/worker/opt/redis-server/current/var/db

#拷貝redis的數據文件 以及集羣配置文件:
數據文件拷貝:
cd /home/worker/opt/redis-server/current/var/db
因爲2個節點 變成一個節點,所以部分數據文件需要修改名字
cp /war/backup/redis_bak/dir_5.40/7000/dump7000.rdb dump7000.rdb
cp /war/backup/redis_bak/dir_5.40/7001/dump7001.rdb dump7001.rdb
cp /war/backup/redis_bak/dir_5.40/7002/dump7002.rdb dump7002.rdb
cp /war/backup/redis_bak/dir_5.41/7000/dump7000.rdb dump7003.rdb
cp /war/backup/redis_bak/dir_5.41/7001/dump7001.rdb dump7004.rdb
cp /war/backup/redis_bak/dir_5.41/7002/dump7002.rdb dump7005.rdb

cp /war/backup/redis_bak/dir_5.40/7000/appendonly7000.aof appendonly7000.aof
cp /war/backup/redis_bak/dir_5.40/7001/appendonly7001.aof appendonly7001.aof
cp /war/backup/redis_bak/dir_5.40/7002/appendonly7002.aof appendonly7002.aof
cp /war/backup/redis_bak/dir_5.41/7000/appendonly7000.aof appendonly7003.aof
cp /war/backup/redis_bak/dir_5.41/7001/appendonly7001.aof appendonly7004.aof
cp /war/backup/redis_bak/dir_5.41/7002/appendonly7002.aof appendonly7005.aof

cp /war/backup/redis_bak/dir_5.40/7000/nodes-7000.conf nodes-7000.conf
cp /war/backup/redis_bak/dir_5.40/7001/nodes-7001.conf nodes-7001.conf
cp /war/backup/redis_bak/dir_5.40/7002/nodes-7002.conf nodes-7002.conf
cp /war/backup/redis_bak/dir_5.41/7000/nodes-7000.conf nodes-7003.conf
cp /war/backup/redis_bak/dir_5.41/7001/nodes-7001.conf nodes-7004.conf
cp /war/backup/redis_bak/dir_5.41/7002/nodes-7002.conf nodes-7005.conf

#因爲集羣配置文件裏面的ip端口是寫死的,需要替換
#redis啓動的實例 id 936482ede8b9e8b94eeb7d947e51ef635e5173df 字符串是在啓動集羣的時候隨機生成的
#redis的集羣配置信息全在這個配置文件中,所以可以直接替換配置文件的ip端口信息實現新新環境的集羣配置
sed -i 's/10.12.5.40:7000/10.112.5.17:7000/g' nodes-700*
sed -i 's/10.12.5.40:7001/10.112.5.17:7001/g' nodes-700*
sed -i 's/10.12.5.40:7002/10.112.5.17:7002/g' nodes-700*
sed -i 's/10.12.5.41:7000/10.112.5.17:7003/g' nodes-700*
sed -i 's/10.12.5.41:7001/10.112.5.17:7004/g' nodes-700*
sed -i 's/10.12.5.41:7002/10.112.5.17:7005/g' nodes-700*


#直接執行啓動命令
cd /home/worker/opt/redis-server/current/var/db
sh 1startup_all_server.sh

#查看發現數據還在
redis-cli -c -p 7000
keys *



#########################################
cat 1startup_all_server.sh
#!/bin/bash
dir='/home/worker/opt/redis-server/current'
cd $dir
port_numberes="7000 7001 7002 7003 7004 7005"
#port_numberes="7000 7001 7002"
for port in $port_numberes
do
echo startup redis server $port ...
./bin/redis-server $port/$port.conf
done

ps -ef|grep redis-server
#########################################
cat 2cluster_startup.sh
#!/bin/bash
cd ~/opt/redis-server/current/bin
./redis-trib.rb create --replicas 1 10.112.5.17:7000 10.112.5.17:7001 10.112.5.17:7002 10.112.5.17:7003 10.112.5.17:7004 10.112.5.17:7005




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章