利用云原生數(shù)倉 Databend 構(gòu)建 MySQL 的歸檔分析服務(wù)
常見 MySQL 歸檔處理的方式
現(xiàn)在常見的歸檔方式一般分成兩大類:MySQL & MariaDB,核心工具是:pt-archive 或是解析 binlog 獲取歸檔的數(shù)據(jù)。
首先說第一類使用 MySQL 存儲歸檔
這類方案中,一般是通過購買 PC 機(jī),通常是大容量(50T左右),大內(nèi)存機(jī)型,可以跑實(shí)例,來對線上的生產(chǎn)庫進(jìn)行歸檔。甚至是備份同步。這種場景是最常見的。甚至見到在線下建一個(gè)主從,對 PolarDB 進(jìn)行歸檔對外提供線下內(nèi)網(wǎng)查詢。

該方式的優(yōu)點(diǎn):
基于 MySQL 環(huán)境,大家都熟悉好管理
和線上環(huán)境基本能保持同一個(gè)版本及高度的兼容
歸檔環(huán)境可以使用大容量便宜的磁盤構(gòu)建
當(dāng)然這種歸檔服務(wù)也有以下的缺點(diǎn):
這種架構(gòu)通常為了成本,歸檔節(jié)點(diǎn)通常沒開啟 Binlog,真正的備份還會放到對象存儲中一份,也沒有從庫,如果發(fā)生數(shù)據(jù)損壞,或是硬盤損壞,數(shù)據(jù)恢復(fù)周期長。
計(jì)算能力不夠,基本沒有能力對計(jì)算節(jié)點(diǎn)擴(kuò)展,如果需要計(jì)算,通常需要把數(shù)據(jù)抽出來放到大數(shù)據(jù)環(huán)境中計(jì)算。
這種架構(gòu)存在大量的 CPU 和 RAM 資源的閑置
第二類:使用 MariaDB 歸檔
MariaDB 推出一個(gè)實(shí)驗(yàn)特性:S3 engine 該引擎有較高的較壓縮能力,基本也保持了 MySQL 的使用習(xí)慣。歸檔流程:先寫 InnoDB,然后 alter table tb_name engine=s3;
該方案的優(yōu)點(diǎn):
基本保持了 MySQL 兼容能力
存儲上支持 s3 類對象存儲
支持高壓縮存儲
該方案的缺點(diǎn):
s3 引擎只能讀,不能寫
不支持增加寫入,如需改變還需要轉(zhuǎn)成 InnoDB 表
每次 InnoDB 到 s3 引擎的轉(zhuǎn)換需要非常長的時(shí)間,增加了復(fù)雜度
那么現(xiàn)在有沒有更完美的方案呢?這里給大家給推薦云原生數(shù)倉 Databend
Databend 可以提供的歸檔方式
Databend ?架構(gòu)及介紹

Databend 是一個(gè)使用 Rust 研發(fā)、開源、完全面向云架構(gòu)的新式數(shù)倉,提供極速的彈性擴(kuò)展能力,致力于打造按需、按量的 Data Cloud 產(chǎn)品體驗(yàn)。具備以下特點(diǎn):
開源 Cloud Data Warehouse 明星項(xiàng)目
Vectorized Execution 和 Pull&Push-Based Processor Model
真正的存儲、計(jì)算分離架構(gòu),高性能、低成本,按需按量使用
完整的數(shù)據(jù)庫支持,兼容 MySQL,Clickhouse 協(xié)議,SQL Over HTTP 等
完善的事務(wù)性,支持 Time Travel,Database Clone,Data Share 等功能
支持基于同一份數(shù)據(jù)的多租戶讀寫、共享操作
Databend 設(shè)計(jì)上的原則:
1.No Partition
2.No index(Auto Index)
3.Support Transaction
4.Data Time travel/Data Zero copy clone/Data Share
5.Enough Performance/Low Cost
部署方式

支持 MySQL,Clickhouse,SQL Over Http 三種方式的處理。
安裝方式參考:https://databend.rs/doc/deploy
安裝及使用中如果遇到問題,請?zhí)砑?Wx: ?82565387 獲得支持。
數(shù)據(jù)寫入方式
Insert ?into 寫入
支持 jdbc, python, golang 進(jìn)行 insert 寫入,推薦閱讀:https://databend.rs/doc/develop
如果要使用 insert 寫入,建議使用 Bulk insert 增加批量寫入。這個(gè)使用上和 MySQL 沒有什么區(qū)別,所以這里就不過多介紹了。
Streaming load
Streaming load 語法參考:https://databend.rs/doc/load-data/local

從上面圖上可以看到 81 G 的文件,近 2 億數(shù)據(jù)導(dǎo)入 Databend 只需要 3 分鐘多一點(diǎn)。
另外現(xiàn)在 Databend 也支持直接讀取壓縮文件。例如:
讀取壓文件這塊只是功能上跑通,但性能上不是最佳的方式,同樣的數(shù)據(jù)使用壓縮文件讀取,現(xiàn)在大概需要 13 分鐘,這個(gè)后續(xù)應(yīng)該有不少空間可以提升。
基于 stage 寫入
Stage 可以理解 Databend 的一個(gè)網(wǎng)盤管理功能。具體語法參考:https://databend.rs/doc/load-data/stage

在以上 PPT 中展示了 stage 的創(chuàng)建,文件上傳,文件查看,通過 copy into 的命令可以把 Stage 的文件直接加載到 Databend 的表中。
利用 Databend 歸檔 MySQL 獲得的優(yōu)勢
對于需要考慮 MySQL 歸檔的場景,建議可以考慮使用 Databend 加對象存儲來替代,這樣的方式的優(yōu)點(diǎn):
基于對象存儲基本可以實(shí)現(xiàn)容量無限
Databend 數(shù)據(jù)壓縮比較高,正常情下可以做到 10:1, 降低存儲空間
可以基于 MySQL 協(xié)議管理數(shù)據(jù),對使用上基本可以做到?jīng)]有任何變化
存算分離架構(gòu),對于計(jì)算層不足的情況下,可以非常方便的擴(kuò)容,也無須擔(dān)心存儲的高可用
原來 MySQL 生態(tài)的工具基本可以重用
Databend 現(xiàn)在對象存儲支持:AWS S3, Azure, 阿里云,騰訊云,青云,金山云以及 minio,ceph 等設(shè)備。同時(shí) Databend 的計(jì)算能力驚力,如果需要分析,可以直接 Databend 直接進(jìn)行計(jì)算。
利用 Databend 可以幫著用更方便的使用好云上的資源,讓用戶可以獲得足夠的性能及較低的成本。如果你對該方案有興趣了解更多,也可以添加微信:82565387 進(jìn)行交流。
關(guān)于 Databend
Databend 是一款開源、彈性、低成本,基于對象存儲也可以做實(shí)時(shí)分析的新式數(shù)倉。期待您的關(guān)注,一起探索云原生數(shù)倉解決方案,打造新一代開源 Data Cloud。
Databend 文檔:https://databend.rs/
twitter:https://twitter.com/Datafuse_Labs
Slack:https://datafusecloud.slack.com/
Wechat:Databend
GitHub :https://github.com/datafuselabs/databend
