華為云企業級Redis揭秘第十一期:從SSDB、LevelDB、RocksDB遷移到高斯Redis

      網友投稿 656 2022-05-30

      【最新活動】企業級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)實例,重新啟動遷移。

      華為云企業級Redis揭秘第十一期:從SSDB、LevelDB、RocksDB遷移到高斯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小時內刪除侵權內容。

      上一篇:NVIDIA顯卡硬件技術交流整理
      下一篇:一文縱覽向量檢索
      相關文章
      亚洲无圣光一区二区| 综合自拍亚洲综合图不卡区| 91丁香亚洲综合社区| 亚洲麻豆精品果冻传媒| 国产v亚洲v天堂无码网站| 亚洲色婷婷六月亚洲婷婷6月| 亚洲伊人久久综合中文成人网| 亚洲av片在线观看| 国产亚洲精品AAAA片APP| 学生妹亚洲一区二区| 亚洲色大成网站WWW国产| 亚洲色精品VR一区区三区| 亚洲一区动漫卡通在线播放| 亚洲一区二区三区在线观看蜜桃| 亚洲av午夜精品无码专区| 亚洲va精品中文字幕| 久久精品亚洲AV久久久无码| 亚洲一区二区三区四区视频 | 成人午夜亚洲精品无码网站| 亚洲中久无码不卡永久在线观看| 亚洲国产主播精品极品网红 | 亚洲综合图片小说区热久久| 亚洲精品国产电影午夜| 亚洲国产日产无码精品| 97se亚洲国产综合自在线| 亚洲精品无码成人片久久不卡 | 久久亚洲精品高潮综合色a片| 国产精品日本亚洲777| 亚洲偷自拍拍综合网| 亚洲人成人无码网www电影首页| 久久精品国产精品亚洲精品| 日韩精品一区二区亚洲AV观看| 亚洲精品在线网站| 亚洲小说图区综合在线| 国产精品久久亚洲一区二区| 国产精品亚洲视频| 亚洲精品免费视频| 亚洲一区二区三区高清视频| 蜜桃传媒一区二区亚洲AV| 久久激情亚洲精品无码?V| 亚洲av永久无码制服河南实里|