用redis-dump工具對redis集群所有數據進行導出導入


安裝redis-dump

redis-dump是基於ruby開發,需要ruby環境,而且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安裝2.0版本的ruby。需要先安裝ruby的管理工具rvm安裝高版本的ruby

安裝rvm

可參考官網:http://rvm.io/
執行下列兩個命令安裝rvm;

# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

# curl -sSL https://get.rvm.io | bash -s stable

# find / -name rvm -print
/usr/local/rvm
/usr/local/rvm/scripts/rvm
/usr/local/rvm/bin/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/lib/rvm

#使rvm生效
source /usr/local/rvm/scripts/rvm

安裝ruby

# 查看可以安裝的Ruby版本
rvm list known 
# 當前最高的穩定版本是2.5.1
rvm install ruby 2.5.1
#查看ruby版本
ruby --version

安裝redis-dump

# 移除gem自帶源,國內連不上
gem sources --remove https://rubygems.org/ 
# 添加國內淘寶源
gem sources -a https://ruby.taobao.org/ 
# 安裝redis-dump
gem install redis-dump –V

#查看redis-dump版本,安裝成功可以開心的備份和還原redis了
redis-dump -v
redis-dump v0.4.0

使用redis-dump導出數據

redis轉存儲json

redis-dump -u 127.0.0.1:6378 -a password > redis_6378.json

json還原redis

< redis_6378.json redis-load -u 127.0.0.1 -a password

Redis集群數據導出導入

如果是redis集群模式,需要對集群各個實例分別導出導入,如下所示:

數據導出

命令(redis-dump -u :password@host:port -d 0 > fileName.json)無密碼可省略

redis-dump -u IP1:6379 -d 0 > 6379.json
redis-dump -u IP2:6380 -d 0 > 6380.json
redis-dump -u IP3:6381 -d 0 > 6381.json

執行完成命令之后,生成3個json文件,即為集群節點數據,為提升導入效率,可以將文件拷貝到目標集群機進行導入,也可以直接在本機導入。

數據導入

命令(cat filename.json | redis-load -u :password@host:port -d 0)無密碼可省略

cat 6379.json | redis-load -u IP4:6379 -d 0
cat 6380.json | redis-load -u IP5:6379 -d 0
cat 6380.json | redis-load -u IP6:6380 -d 0

注意:導入時json文件源集群節點和目的集群節點鍵所在的槽要對應,如果json的槽不是由導入節點處理的,會報錯:提示MOVED 13596 host:port

異常處理

執行redis-dump命令時如果報ERR unknown command 'keys'異常

原因:keys命令用於全局查詢 一般不建議使用所以能在redis.conf中配置了禁用該命令 。
解決方案: 檢查redis.conf 中是否有該命令禁用配置

    rename-command FLUSHALL ""  清空所有的庫數據
    rename-command FLUSHDB ""      清空當前庫數據
    rename-command KEYS ""        查詢所有庫數據 (因為數據量大時,執行此操作會消耗大量的資源 一般不建議使用該命令)
如果有注釋掉即可 !


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM