Redis 數(shù)據(jù)導(dǎo)入導(dǎo)出
Intro
環(huán)境說(shuō)明:
202.102.221.11 redis源實(shí)例
202.102.221.12 redis目標(biāo)實(shí)例
202.102.221.13 任意linux系統(tǒng)
一、redis-dump方式
1.安裝redis-dump工具
[root@202.102.221.13 ~]$ yum install ruby rubygems ruby-devel -y
** 更改gem源 **
[root@202.102.221.13 ~]$ gem sources -a http://ruby.taobao.org
Error fetching http://ruby.taobao.org:
bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
訪問(wèn)http://ruby.taobao.org逆皮,公告通知鏡像維護(hù)站點(diǎn)已遷往Ruby China鏡像
#gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
[root@202.102.221.13 ~]$ gem sources --add http://gems.ruby-china.org/ --remove http://rubygems.org/
http://gems.ruby-china.org/ added to sources
source http://rubygems.org/ not present in cache
[root@202.102.221.13 ~]$ gem sources -l \*\*\* CURRENT SOURCES *** http://gems.ruby-china.org/
[root@202.102.221.13 ~]$ gem install redis-dump -V
2.redis-dump導(dǎo)出
[root@202.102.221.13 ~]$ redis-dump -u :password@202.102.221.11:6379 \> 202.102.221.11.json
3.redis-load導(dǎo)入
[root@202.102.221.13 ~]$ cat 202.102.221.11.json | redis-load -u :password@202.102.221.12:6379
二典唇、aof導(dǎo)入方式
1.源實(shí)例生成aof數(shù)據(jù)
# 清空上文目標(biāo)實(shí)例全部數(shù)據(jù)
[root@202.102.221.11 ~]$ redis-cli -h 202.102.221.12 -a password flushall
OK
# 源實(shí)例開啟aof功能仓犬,將在dir目錄下生成appendonly.aof文件
[root@202.102.221.11 ~]$ redis-cli -h 202.102.221.11 -a password config set appendonly yes
OK
2.目標(biāo)實(shí)例導(dǎo)入aof數(shù)據(jù)**
# 假設(shè)appendonly.aof就在當(dāng)前路徑下
[root@202.102.221.11 ~]$ redis-cli -h 202.102.221.12 -a password --pipe < appendonly.aof
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5 # 源實(shí)例關(guān)閉aof功能
[root@202.102.221.11 ~]$ redis-cli -h 202.102.221.11 -a password config set appendonly no
OK
三谜叹、rdb文件遷移方式
- 關(guān)閉要遷移到的服務(wù)器的redis的aof日志功能(我的要遷移到的是本機(jī)的redis6380.conf)
vim redis6380.conf毫玖,將 appendonly yes
修改為 appendonly no
- 我們先看一下當(dāng)前redis的數(shù)據(jù)织堂,并將數(shù)據(jù)用save命令固化到rdb文件中瓦灶,我的rdb文件為/var/rdb/dump6379.rdb
image
- 殺掉當(dāng)前redis的進(jìn)程,否則下一步的復(fù)制rdb文件贫导,rdb處于打開的狀態(tài)抛猫,復(fù)制的文件,會(huì)占用同樣的句柄
image
image
- 復(fù)制當(dāng)前redis的rdb文件孩灯,名字為你要遷移的redis的rdb文件名(我的要遷移的redis的文件名為 /var/rdb/dump6380.rdb)闺金,記住,一定要?dú)⒌舢?dāng)前redis的進(jìn)程钱反,還有關(guān)閉要遷移的服務(wù)器的aof功能(如果不關(guān)閉aof掖看,默認(rèn)用aof文件來(lái)恢復(fù)數(shù)據(jù))
image
- 啟動(dòng)6380的redis,我們會(huì)發(fā)現(xiàn)面哥,6380多出了name的數(shù)據(jù)哎壳,這個(gè)數(shù)據(jù),就是6379固化到rdb的數(shù)據(jù)
image
以上就是在不同的redis之間進(jìn)行rdb的數(shù)據(jù)遷移尚卫,思路就是归榕,復(fù)制rdb文件,然后讓要遷移的redis加載這個(gè)rdb文件就ok了
四吱涉、源實(shí)例db0遷移至目標(biāo)實(shí)例db1
[root@202.102.221.11 ~]$ cat redis_mv.sh
#!/bin/bash
redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 keys "*" | while read key do redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h 202.102.221.12 -p 6379 -a password -n 1 -x restore $key 0 echo "migrate key $key" done
Memo
本文轉(zhuǎn)載整理來(lái)源:https://www.cnblogs.com/dadonggg/p/8662455.html