遷移介紹
Redis-cli是Redis自帶的一個命(ming)令行工(gong)具,安裝Redis后即(ji)可(ke)直接(jie)使用Redis-cli工(gong)具。
Redis-cli提供(gong)了RDB文(wen)(wen)件(jian)導出功能(neng),如果Redis服務不(bu)支持獲(huo)取(qu)AOF文(wen)(wen)件(jian),可以(yi)嘗(chang)試通過(guo)Redis-cli獲(huo)取(qu)RDB文(wen)(wen)件(jian)。然后再通過(guo)其他(ta)工具(如Redis-Shake)導入(ru)到DCS的緩存實(shi)例中(zhong)。
本文主要介紹在Linux系(xi)統(tong)中進行操(cao)作。
下載(zai)Redis,請使(shi)用(yong)以(yi)下命令獲取,安裝編譯后即(ji)可使(shi)用(yong)Redis-cli。
wget //download.redis.io/releases/redis-5.0.8.tar.gz
說明
源Redis實例必(bi)須(xu)支持“SYNC”命令(ling),因為使用Redis-cli導出(chu)RDB文件依賴SYNC命令(ling)。
DCS的Redis 4.0/5.0/6.0版本實(shi)例,不(bu)支持SYNC,不(bu)能(neng)使(shi)用(yong)此命(ming)令導出為RDB文(wen)件,主備實(shi)例如需(xu)本地備份,請(qing)從控(kong)制臺的備份恢(hui)復功能(neng)模塊中(zhong)下載RDB文(wen)件。
步驟1:導出前準備
對于主備或集(ji)群(qun)實例(li),數(shu)據(ju)寫(xie)入RDB文(wen)件(jian)(jian)有一(yi)定的(de)時(shi)延(yan),時(shi)延(yan)策略配置(zhi)在redis.conf文(wen)件(jian)(jian)中。因此,建議(yi)先了(le)解待(dai)遷(qian)移(yi)redis實例(li)的(de)RDB策略配置(zhi),然后暫(zan)停業務系統并往Redis實例(li)寫(xie)入滿足數(shu)量(liang)條(tiao)件(jian)(jian)的(de)測試key,確保RDB文(wen)件(jian)(jian)為最新(xin)生(sheng)成。
對(dui)于(yu)云廠商提供(gong)的(de)Redis服務(wu),可以咨詢云服務(wu)技(ji)術支(zhi)持(chi),了解rdb文件的(de)數據寫入策略配置(zhi)。
例(li)如,redis.conf中(zhong)對RDB的默認(ren)策略配置如下:
save 900 1 //900秒內有數據變更則寫入RDB文件
save 300 10 //300秒內有10條以上數據變更則寫入RDB文件
save 60 10000 //60秒內有10000條以上數據變更則寫入RDB文件
因此,可(ke)以(yi)參考(kao)以(yi)上(shang)數(shu)據寫(xie)入RDB策略(lve),在(zai)停止業務(wu)系統向Redis實例(li)寫(xie)入數(shu)據后,主動寫(xie)入測試數(shu)據若干(gan),觸發策略(lve)并寫(xie)入RDB文件,確保業務(wu)數(shu)據均已同步導RDB文件中(zhong)。
測試數據可(ke)以在導入后刪除。
說明
如果有某個數(shu)據(ju)庫沒有被業務(wu)系(xi)統使用,可以將(jiang)測試數(shu)據(ju)寫入該數(shu)據(ju)庫,待導入DCS后,使用flushdb命(ming)令清空該庫。
步驟2:導出RDB文件
說明
1.?建議選擇業務量較少的時(shi)間(jian)段進(jin)行遷移。
2.?導(dao)出Redis源生集(ji)群的(de)數(shu)據(ju)時,需(xu)要針對集(ji)群的(de)每個節點分別(bie)導(dao)出數(shu)據(ju),然后逐(zhu)一導(dao)入。
使(shi)用如(ru)下(xia)命(ming)令(ling)導(dao)出RDB文件:
redis-cli -h {source_redis_address} -p 6379 -a {password} --rdb {output.rdb}
執(zhi)行命令(ling)后回顯(xian)"Transfer finished with success.",表示(shi)文件(jian)導出成功。
步驟3:上傳RDB文件至ECS
- 為節省傳輸時間,請先壓縮RDB文件再傳輸。
- 將壓縮文件(如以SFTP方式)上傳到ECS。
說明
ECS需保證有足夠(gou)的磁(ci)盤(pan)空間,供數據文件解壓(ya)縮,同(tong)(tong)時要與(yu)緩存實(shi)例(li)網絡互(hu)通,通常要求相同(tong)(tong)VPC和相同(tong)(tong)子網,且安全組規則不限制訪問端(duan)口。
步驟4:導入數據
可借助(zhu)Redis-Shake工具完成數(shu)據導入(ru)。
步驟5:遷移后驗證
數據(ju)導入成(cheng)(cheng)功后,請連接(jie)DCS緩(huan)存實例(li),通過info命令,確認數據(ju)是否已按要求成(cheng)(cheng)功導入。
如(ru)果導(dao)(dao)入(ru)不(bu)成功,需(xu)要分析原因,修正導(dao)(dao)入(ru)語句,然后使用flushall或者flushdb命令(ling)清(qing)理實例中的緩存數(shu)據,并重(zhong)新導(dao)(dao)入(ru)。
導出和導入效率
單機實例如果不(bu)做(zuo)持久化配置,則RDB文件需要臨(lin)時生(sheng)成,導(dao)出耗時較主備實例相(xiang)比稍多一(yi)些。
VPC內進(jin)行導入,平均(jun)100w數據(每條數據20字節),大概(gai)4~10秒完(wan)成。