Redis 数据迁移方法

redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API 。

Redis 数据迁移方法

文章插图
 
一、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-devel2、安装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"  done2、差异合并  #!/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"  done3、导入某个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
【Redis 数据迁移方法】


    推荐阅读