李虹霖

 

redis数据迁移方案

一、持久化rdb文件迁移
    1.持久化设置

  1. save 900 1      # 900秒(15分钟)内至少有1个key被改变
  2. save 300 10     # 300秒(5分钟)内至少有300个key被改变
  3. save 60 10000   # 60秒内至少有10000个key被改变
  4. dbfilename      # 本地持久化数数据库文件名,默认值为dump.rdb
  5. dir     # redis的工作目录,它会将转储文件存储到这个目录下,并生成一个附加文件
  6. appendonly yes  #开启持久化

    2.将dump.rdb拷贝到要迁移服务器的redis工作目录,保证迁移服务器的redis服务是关闭状态。
    3.启动服务器redis服务,如果数据量大,时间稍长。
    4.查看redis是否已导入(命令)
     >INFO    

二、第三方工具redis-dump
    1.安装

  1. #yum -y install ruby rubygems ruby-devel ## 安装rubygems及相关包
  2. #gem sources -a https://ruby.taobao.org/  ## 加入淘宝源 
    https://ruby.taobao.org/ added to sources 
  3. #gem install redis-dump -V    ##安装redis-dump

    2.导出和导入数据

  1. #redis-dump -u 127.0.0.1:6379 >redis.json ## 导出
  2. #< redis.json redis-load            ## 导入

    3.查看INFO

注意:rubygems在Linux系统5.8不能使用
三、第三方工具crs-port(腾讯云)
    1.下载
https://www.qcloud.com/doc/product/239/%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%85%A5
    2.解压安装,可直接使用

  1. #tar -zxvf crs-port-64.tar.gz  ## 解压 
  2. 也可以手动写入文件中 
#!/bin/bash
export LC_ALL="zh_CN.UTF-8"
date=`date +%Y%m%d`
num=`ls /data/game/|wc -l`
for ((i=1; i<=${num}; i++))
do
  gameid=`ls /data/game/|awk NR==$i`
  redisIp=`grep "redisIp" /data/game/${gameid}/conf/env.properties|awk -F= '{print $2}'`
  redispwd=`grep "redispwd" /data/game/${gameid}/conf/env.properties|awk -F= '{print $2}'`
  if [ ! -d /data/bakup/ ];then
  mkdir -p /data/bakup/
  fi
  crs-port dump -n 16 -f ${redisIp}:6379 -P ${redispwd} -o /data/bakup/${gameid}.${date}.rdb
  if [ $? -eq 0 ];then
  echo -e "\033[35ms${gameid}备份完毕\033[0m"
  else
  echo -e "\033[33ms${gameid}备份失败,请检查\033[0m"
  exit 0
  fi
done


crs-port dump -n 16 -f ${redisIp}:6379 -P ${redispwd} -o /data/bakup/${gameid}.${date}.rdb

参数说明

  -n[并发数] 该值建议取源Redis服务的CPU总核数的2倍到4倍
  -f 源Redis服务的IP和端口
  -P 源Redis服务的密码,如无密码不指定该参数即可
  -o 目标CRS实例的路径

  

 

   3.可直接将rdb文件redis数据库

#crs-port restore -n 16 -i /data/dump.rdb -t localhost:6379 -A passwd
参数说明
  -n[并发数] 该值建议取源Redis服务的CPU总核数的2倍到4倍
  -i 指定导入文件所在路径
  -t 要导入的目标CRS实例的IP和端口
  -A 目标CRS实例的链接密码

    4.crs注意事项
使用工具前需要清空目标CRS实例,否则会报错
    5.其他功能——热迁移

#crs-port sync -n 16 -f 127.0.0.1:6379 -P pwd -t 10.10.1.100:6379 -A passwd
参数说明
  -n[并发数] 该值建议取源Redis服务的CPU总核数的2倍到4倍
  -f 源Redis服务的IP和端口
  -P 源Redis服务的密码,如无密码不指定该参数即可
  -t 要导入的目标CRS实例的IP和端口
  -A 目标CRS实例的链接密码

 

    注意:在导入的过程中如果有关于key的报错,请将此键删除,重新导入。

posted on 2018-10-11 16:05  lol霖  阅读(805)  评论(0编辑  收藏  举报

导航