Redis-shake進行數據遷移


Redis-shake是阿里雲自研的開源工具,支持對Redis數據進行解析(decode)、恢復(restore)、備份(dump)、同步(sync/rump)。在sync模式下,redis-shake使用 SYNC或PSYNC命令將數據從源端Redis同步到目的端Redis,支持全量數據同步和增量數據同步,增量同步在全量同步完成后自動開始。該模式支持自建Redis上雲、自建Redis與雲數據庫Redis版的同步以及自建Redis之間的同步等場景。

 

基本原理

redis-shake的基本原理就是模擬一個從節點加入源redis集群,首先進行全量拉取並回放,然后進行增量的拉取(通過psync命令)。如下圖所示:

 

 

Redis數據遷移方案:

目的:遷移指定集群實例中的某個或某幾個db,到目的集群實例的相同或不同名稱的db中 

1、登錄可以連接雲數據庫Redis版實例(目的端Redis)的ECS
在ECS中下載 redis-shake,建議您下載最新發布的版本。
 
2、從阿里雲Redis集群版1下載相應的所有節點的多個rdb文件
需要說明的是目前雲數據庫Redis集群版不支持 "-type=dump" ,所以需要手動分別進行下載RDB文件。
# wget "http://rdsbak-bj-v4.oss-cn-beijing-internal.aliyuncs.com/custins15126079/ hins7955323_data_20200320040814.rdb?OSSAccessKeyId=LTAI34hcUqqtkmRx&Expires=1584842821&Signature=IlNJpe1lBT%3BWPd0KEGVklKiZ02U%3D" -O hins7955323_data_20200320040814.rdb
 
3、修改配置文件redis-shake.conf,restore模式涉及的主要參數說明如下
source.rdb.input            備份文件(RDB文件)的路徑,可使用相對路徑或絕對路徑,支持輸入列表,例如:rdb.0;rdb.1;rdb.2,將會挨個進行恢復
target.address              目的Redis的連接地址與端口號
target.password_raw     目的Redis的連接密碼
target.db  5                  設置待遷移的數據在目的Redis中的的邏輯數據庫名,默認值為-1例如,要將所有數據遷移到目的Redis中的DB10,則需將此參數的值設置為10。當該值設置為-1時,邏輯數據庫名在源Redis和目的                                          Redis中的名稱相同,即源Redis中的DB0將被遷移至目的Redis中的DB0,DB1將被遷移至DB1,以此類推
rewrite                        如果目的Redis有與RDB文件中相同的key,是否覆蓋,true或false
filter.db.whitelist  2或3  指定的db被通過,比如0;5;10將會使db0, db5, db10通過, 其他的被過濾
parallel                        RDB文件同步中使用的並發線程數,用於提高同步性能
 
上面演示的是遷移db2或db3中的數據到目標實例的db5 
 
4、使用如下命令進行遷移
# ./redis-shake -type=restore -conf=redis-shake.conf
日志中出現 restore: rdb done表示數據恢復完成,此時按Ctrl+C退出執行即可
 
 
 
 
 
 
 
 


免責聲明!

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



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