redis數據遷移方案

1、持久化rdb文件遷移
    1.持久化設置css

  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    

2、第三方工具redis-dump
    1.安裝java

  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.導出和導入數據redis

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

    3.查看INFO

注意:rubygems在Linux系統5.8不能使用
3、第三方工具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數據庫json

#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.其餘功能——熱遷移

ruby

#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的報錯,請將此鍵刪除,從新導入。bash

相關文章
相關標籤/搜索