華為云企業級Redis揭秘第十一期:從SSDB、LevelDB、RocksDB遷移到高斯Redis
【最新活動】企業級Redis專場熱銷中!首月免費,包年僅需4折!
GaussDB(for Redis)是一款基于計算存儲分離架構,兼容Redis生態的云原生NoSQL數據庫,基于共享存儲池的多副本強一致機制,支持持久化存儲。在保障數據庫的高兼容、搞性價比、高可靠、無損擴容等特點的同時,GaussDB(for Redis)團隊針對不同的數據庫產品,為用戶提供了多種數據遷移方案,本期將詳細介紹SSDB、LevelDB和RocksDB到GaussDB(for Redis)的遷移。
1????? SSDB到GaussDB(for Redis)的遷移
SSDB是一款使用C/C++語言開發的高性能NoSQL數據庫,和Redis具有相似的API,支持KV,list,map(hash),zset(sorted set),qlist(隊列)等數據結構,因此得到了廣泛的應用。SSDB是一個持久化的KV存儲系統,底層使用leveldb作為存儲引擎。其業務直接與LevelDB交互,Compaction等操作會對業務讀寫造成直接的影響。 GaussDB(for Redis)是一款兼容Redis生態的云原生NoSQL數據庫,基于共享存儲池的多副本強一致機制,以保證數據的安全性和可靠性。GaussDB(for Redis)使用RocksDB作為存儲引擎,其性能與leveldb相比有了很大的提升, 并解決了leveldb主動限制寫的問題,同時實現了冷熱分離,減小了存儲層的操作對性能造成的影響。
1.1????? 遷移原理
ssdb-port作為源端SSDB數據庫的主節點的從節點(replica)運行,通過主從復制的方式進行數據遷移。將獲取到的數據解析、轉換為Redis支持的格式,并發送到配置文件中指定的Redis實例,遷移過程如下圖所示。全量同步完成后,SSDB中新增的數據也會同步到Redis實例中。
1.2????? 前提條件
部署遷移工具ssdb-port。
保證遷移工具ssdb-port、源端SSDB和目標端GaussDB(for Redis)網絡互通。
1.3????? 操作步驟
正確修改ssdb-port的配置文件conf。
使用./ssdb-port ssdb_port.conf命令啟動進程,進行數據遷移。
跟蹤遷移日志,評估遷移進度,遷移完成后,在高斯Redis實例上校驗遷移數據的正確性和完備性。
校驗完成后將業務切到GaussDB (for Redis)
1.4????? 使用須知
ssdb-port作為SSDB主節點的從節點,只讀取全量和增量數據,無數據受損風險。
由于在源端使用ssdb-port遷移工具,源端SSDB性能會受到一定的影響。
全量遷移和增量遷移可以不停服,數據全部遷入GaussDB(for Redis)后需要短暫停服。
1.5????? 遷移性能參考
環境:源端SSDB和ssdb-port同時部署在華為云4U16GB的彈性云服務器上,目標端為8U16GB,3節點GaussDB(for Redis)實例。
預置數據:使用memtier_benchmark工具預置100GB數據。
遷移性能:約3000qps。
2????? LevelDB到GaussDB(for Redis)的遷移
LevelDB是一個開源的持久化KV單機數據庫引擎,具有很高的隨機寫,順序讀/寫性能,適合應用在寫多讀少的場景。其內部沒有設計成C/S網絡結構,使用時必須和服務部署在同一臺服務器,對于服務的部署、使用有較大的限制。相比于在LevelDB基礎上開發的RocksDB,? LevelDB存在較多缺點,如無法很好的使用多核服務器的計算性能,無法支撐TB級數據存儲,不支持從HDFS讀取數據等。
GaussDB(for Redis)采用RocksDB作為存儲引擎,兼容Redis協議,具有豐富的數據類型,可以滿足LevelDB的使用需求。同時GaussDB(for Redis)對RocksDB進行深度定制,實現秒級分裂彈性擴容,擴縮容無需搬遷數據,快速而平滑,為LevelDB業務轉到Redis生態提供了便利。
2.1????? 遷移原理
使用自研遷移工具leveldb-port,和LevelDB部署在相同機器上,準備好配置文件,啟動遷移即可自動完成全量與增量的遷移。全量遷移對LevelDB數據進行快照,然后掃描整個數據庫,將數據打包成GaussDB(for Redis)識別的格式,發送到GaussDB(for Redis) ,具有很高的遷移效率。增量遷移解析LevelDB的wal文件,將LevelDB的操作解析出來,然后對其中的key進行分片,多線程進行發送。
2.2????? 操作步驟
1.? 準備工作:
將 leveldb-port 部署在 leveldb 所在服務器上,確保與高斯 Redis 網絡打通。
確保目標端GaussDB (for Redis) 實例已清空。
修改配置文件。
2. 執行命令./leveldb-port ./leveldb-port.conf。
3. 跟蹤日志,判斷遷移狀態:
全量遷移完成,會打印"Full migrate finished";
增量遷移定時打印尚未完成的 wal 文件數及尚未發送出去的 kv 數。
4. 數據驗證:對 LevelDB 進行抽樣驗證,確保GaussDB (for Redis) 加載數據正確。
5. 服務切換:當增量遷移進入尾聲時,將服務切換到GaussDB (for Redis)。
2.3????? 使用須知
遷移工具需要部署在源端,對性能有一定消耗,可通過修改配置文件進行一定的控制。
遷移過程讀取LevelDB的源數據文件,只讀操作,理論上不會有數據受損風險。
遷移過程不需要停服。
若遷移過程出現故障,需要清理GaussDB(for Redis)實例,重新啟動遷移。
3????? RocksDB到GaussDB(for Redis)的遷移
RocksDB是FaceBook基于LevelDB開發的一個持久化KV單機數據庫引擎,具有強大的順序讀寫及隨機寫性能。相對于LevelDB,RocksDB做了許多優化,性能有了很大提升, 而且解決了LevelDB主動限制寫的問題。作為一個數據庫引擎,RocksDB沒有設計成C/S網絡結構,直接使用需要和服務部署在同一臺服務器,對于服務的部署、使用有較大的限制。
GaussDB(for Redis)采用RocksDB作為存儲引擎,兼容Redis協議具有豐富的數據類型,可以滿足RocksDB的使用需求。同時GaussDB(for Redis)對RocksDB進行深度定制,實現秒級分裂彈性擴容,擴縮容無需搬遷數據,快速而平滑,為RocksDB業務轉到Redis生態提供了便利。
3.1????? 遷移原理
使用自研遷移工具rocksdb-port,和RocksDB部署在相同機器上,準備好配置文件,啟動遷移即可自動完成全量與增量的遷移。全量遷移對RocksDB數據進行快照,然后掃描整個數據庫,將數據打包成GaussDB(for Redis)識別的格式,發送到GaussDB(for Redis),具有很高的遷移效率。增量遷移解析RocksDB的wal文件,將RocksDB的操作解析出來,然后對其中的key進行分片,多線程進行發送。
3.2????? 前提條件
部署遷移工具pika-port
確保源端Pika實例、pika-port和目標端GaussDB(for Redis)實例網絡互通。
3.3????? 操作步驟
1. 準備工作:
將 rocksdb-port 部署在 rocksdb 同服務器上,確保與高斯 Redis 網絡打通。
確保目標端GaussDB (for Redis) 實例已清空。
修改配置文件。
2. 啟動遷移:執行命令./rocksdb-port ./rocksdb-port.conf
3. 跟蹤日志,判斷遷移狀態:
全量遷移完成,會打印"Full migrate finished";
增量遷移定時打印尚未解析的 wal 文件數及尚未發送出去的 kv 數。
4. 數據驗證:對 RocksDB 進行抽樣驗證,確保 GaussDB (for Redis) 加載數據正確。
5. 服務切換:當增量遷移進入尾聲時,將服務切換到 GaussDB (for Redis) 。
3.4????? 使用須知
遷移工具需要部署在源端,對性能有一定消耗,可通過修改配置文件進行一定的控制。
遷移過程讀取RocksDB的源數據文件,只讀操作,理論上不會有數據受損風險。
遷移過程不需要停服。
若遷移過程出現故障,需要清理GaussDB(for Redis)實例,重新啟動遷移。
4????? 結語
高斯 Redis 在社區版 Redis 的基礎上,結合華為自研強一致存儲DFV Pool,具有強一致、秒擴容、超可用、低成本等優勢,保證了計數的準確性、可靠性。
杭州/西安/深圳簡歷投遞:yuwenlong4@huawei.com
GaussDB(for Redis)產品主頁:
https://www.huaweicloud.com/product/gaussdbforredis.html
更多技術文章,關注GaussDB(for Redis)官方博客:
https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813
MySQL Redis 云數據庫 GaussDB(for Redis) 數據庫 緩存
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。