redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。
一、redis-dump遷移
redis-dump需要ruby.2.2.0以上版本,因此,需要先升級。
1、更新編譯環境的包
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel
2、安裝RVM,通過RVM安裝升級
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm -v //安裝完成后,通過該方法測試是否安裝正常
3、更新RVM安裝鏡像
vim /usr/local/rvm/user/db
ruby_url=https://cache.ruby-china.org/pub/ruby
ruby -v //查看ruby版本
rvm list known //列出已知ruby版本
rvm install 2.4 //安裝ruby2.4版本,會自動去匹配
4、更新gem版本
gem update --system //需要科學上網
gem -v //查看版本號
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ //更換源鏡像
gem sources -l //查看源鏡像內容
5、安裝redis-dump
gem install redis-dump -V //安裝redis-dump
redis-dump -v //查看版本號及是否安裝正常
redis-dump -u 源地址:6379 -a password > /data/deploy/redis/data/redis_6378.json //導出
< redis_6378.json redis-load -u 目標地址:6379 -a password -n //導入
二、Redis遷移
源服務器:
./redis-cli -h 源IP地址 -a 源密碼 config set Appendonly yes //開啟aof功能
開啟后,數據在redis/data/6379/ 文件夾里面
./redis-cli -h 源IP地址 -a 源密碼 config set appendonly no //關閉aof功能
目標服務器:
./redis-cli -h 目標IP地址 -a 目標密碼 --pipe < data/6379/appendonly.aof
三、腳本遷移
1、Redis全量合并
#!/bin/bash
src_ip=源地址
src_port=6379
src_db=0
src_pw='密碼'
dest_ip=目標地址
dest_port=6379
dest_db=0
desc_pw='密碼'
./redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db keys "*" | while read key
do
./redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db --raw dump $key | perl -pe 'chomp if eof' | ./redis-cli -h $dest_ip -p $dest_port -a $desc_pw
-n $dest_db -x restore $key 0
echo "migrate key $key"
done
2、差異合并
#!/bin/bash
src_ip=127.0.0.1
src_port=8090
src_db=14
src_pw='1234'
dest_ip=127.0.0.1
dest_port=6379
dest_db=2
desc_pw='1234'
#要遍歷的key
k=(test ws we)
for loop in ${k[*]}
do
redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db --raw dump $loop | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $desc_pw -n $dest_db -x restore $loop 0
echo "The value is: $loop"
done
3、導入某個key
redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 14 --raw dump test | perl -pe 'chomp if eof' | redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 15 -x restore test 0