<返回更多

Redis 数据迁移方法

2020-03-09    
加入收藏

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-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
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>