Redis遷移備份工具redis-shake使用


redis-shake是阿里開源的redis數據工具 , 可以導出、導入數據。

我主要是用來把老數據(單機版)的rdb文件導入新的redis集群中

 

一 . 下載包並解壓

https://github.com/alibaba/RedisShake/releases

注 : 本文使用的是 release-v2.0.2-20200506 版本

直接下載

本人百度雲也有共享.可直接下載

鏈接:https://pan.baidu.com/s/1mvs4M76cWeQh7VmkQXx9EA
提取碼:zfb5

#解壓
tar zxvf redis-shark-v2.0.2.tar.gz

 

二 . 修改配置文件

配置文件中有詳細的中文配置說明(有中文就是舒服)

引用一個我在用的 , 有一部分我做了詳細注釋.

# 當前配置文件的版本號,請不要修改該值。
conf.version = 1
# 是用來生成pid文件用 , 多個配置文件可以配多個id
id = redis-shake
# log file,日志文件,不配置將打印到stdout (e.g. /var/log/redis-shake.log )
log.file =
# log level: "none", "error", "warn", "info", "debug". default is "info".
log.level = info
# pid path,進程文件存儲地址(e.g. /var/run/),不配置將默認輸出到執行下面,
# 注意這個是目錄,真正的pid是`{pid_path}/{id}.pid`
pid_path = 

# pprof port.
system_profile = 9310
# restful port,查看metric端口, -1表示不啟用,如果是`restore`模式,只有設置為-1才會在完成RDB恢復后退出,否則會一直block。
# restore模式請一定要設置成
http_profile = -1
# 啟動多少個並發線程同步一個RDB文件。
parallel = 32


#######################################################
# 上面其實我都沒動 , 這里開始就動的比較多了         #########
#######################################################

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# 輸入源 , 輸入域有兩種方式 1:redis庫 2:指定rdb文件(decode或者restore模式專用使用)          @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

# 源端redis的類型,支持standalone,sentinel,cluster和proxy四種模式,注意:目前proxy只用於rump模式。
source.type = cluster
# 源地址 , 多個用分號(;)隔開
# ***注意*** : 必須是所有的master或者slave節點,不能混合配置,提前去服務器上用cluster info看一下
source.address = 172.18.0.232:7001;172.18.0.233:7000;172.18.0.233:7001
# 密碼
source.password_raw = 123456
source.auth_type = auth
source.tls_enable = false
# 如果是decode或者restore,這個參數表示讀取的rdb文件。支持輸入列表,例如:rdb.0;rdb.1;rdb.2 ,依次恢復
source.rdb.input = /home/redishome/redis-shake-v2.0.2/wxiot.rdb
source.rdb.parallel = 0
# ucloud集群版的rdb文件添加了slot前綴,進行特判剝離: ucloud_cluster。
source.rdb.special_cloud = 

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# 輸入目標庫, 配置全權參考輸入,基本一樣            @
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
target.type = standalone
target.address = 172.18.0.122:6379
target.password_raw = 12345678
target.auth_type = auth
target.db = -1
target.tls_enable = false
# 如果是decode或者dump,這個參數表示輸出的rdb前綴.
# 比如輸入有3個db,那么dump分別是: ${output_rdb}.0, ${output_rdb}.1, ${output_rdb}.2
target.rdb.output = /home/redishome/redis-shake-v2.0.2/wxiot.rdb
# 特殊情況可配置redis版本
target.version =


# 當源目的有重復key的策略 rewrite:源端覆蓋目的端; none:一旦發生進程直接退出; ignore: 保留目的端key,忽略源端的同步key;
# 該值在rump模式下沒有用。
key_exists = ignore

#######################################################
# 下面其實也沒動                              #########
#######################################################
fake_time =
# 指定的db被通過,比如0;5;10將會使db0, db5, db10通過, 其他的被過濾
filter.db.whitelist =
# 指定的db被過濾,比如0;5;10將會使db0, db5, db10過濾,其他的被通過
filter.db.blacklist =
# 支持按前綴過濾key,只讓指定前綴的key通過,分號分隔。比如指定abc,將會通過abc, abc1, abcxxx
filter.key.whitelist =
# 支持按前綴過濾key,不讓指定前綴的key通過,分號分隔。比如指定abc,將會阻塞abc, abc1, abcxxx
filter.key.blacklist =
# 指定過濾slot,只讓指定的slot通過
filter.slot =
# 控制不讓lua腳本通過,true表示不通過
filter.lua = false
# 正常key如果不大,那么都是直接調用restore寫入到目的端,如果key對應的value字節超過了給定
# 的值,那么會分批依次一個一個寫入。如果目的端是Codis,這個需要置為1,具體原因請查看FAQ。
# 如果目的端大版本小於源端,也建議設置為1。
big_key_threshold = 524288000
# 是否啟用metric
metric = true
# 是否將metric打印到log中
metric.print_log = false
# 發送緩存的字節長度,超過這個閾值將會強行刷緩存發送
sender.size = 104857600
# 發送緩存的報文個數,超過這個閾值將會強行刷緩存發送,對於目的端是cluster的情況,這個值
# 的調大將會占用部分內存。
sender.count = 4095
# 用於metric統計時延的隊列
sender.delay_channel_size = 65535
# TCP keep-alive保活參數,單位秒,0表示不啟用。
keep_alive = 0
# 每次scan的個數,不配置則默認100.
scan.key_number = 50
# 有些版本具有特殊的格式,與普通的scan命令有所不同,我們進行了特殊的適配。目前支持騰訊雲的集群版"tencent_cluster"
# 和阿里雲的集群版"aliyun_cluster",注釋主從版不需要配置,只針對集群版。
scan.special_cloud =
# 有些雲版本,既不支持sync/psync,也不支持scan,我們支持從文件中進行讀取所有key列表並進行抓取:一行一個key。
scan.key_file =
# e.g., qps = 1000 means pass 1000 keys per second. default is 500,000(0 means default)
qps = 200000
# 斷點續傳開關
resume_from_break_point = false
replace_hash_tag = false

 

三 . 執行命令

#直接在當前目錄下執行命令即可
./redis-shake.linux -conf=./redis-shake.conf -type=restore

 

四 . 參考資料

https://github.com/alibaba/RedisShake/wiki/第一次使用,如何進行配置?

https://yq.aliyun.com/articles/691794

https://help.aliyun.com/document_detail/159457.html?spm=5176.13910061.sslink.4.1ea56f1brF0rpy

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM