小 T 導讀:為了讓大家更(geng)好(hao)地進行(xing) TDengine 集群間的(de)備份和遷移(yi)工作,一款名為 taosdump 的(de)工具(ju)應(ying)用(yong)程序被打(da)造出來(lai)。在本篇文章中,我們對 taosdump 的(de)使用(yong)方法和注意(yi)事項進行(xing)了相關(guan)匯總,給到有需要的(de)開發者。
作為 TDengine 的(de)一(yi)款工具應用(yong)程序,taosdump 支持從運行中的(de) TDengine 集群備(bei)份數據(ju),并將備(bei)份的(de)數據(ju)恢復到相同或另一(yi)個運行中的(de) TDengine 集群中,其使用(yong) Apache AVRO()作為數據(ju)文件格(ge)式來(lai)存儲備(bei)份數據(ju)。
值得一提的(de)(de)是,taosdump 可以(yi)用 Database、超級表或(huo)普通表作為邏輯數(shu)據(ju)(ju)單元進行備份(fen),也可以(yi)對 Database、超級表和普通表中指定(ding)(ding)時(shi)間段內的(de)(de)數(shu)據(ju)(ju)記錄(lu)進行備份(fen)。在使用時(shi),我(wo)們可以(yi)對 taosdump 指定(ding)(ding)數(shu)據(ju)(ju)備份(fen)的(de)(de)目錄(lu)路(lu)徑;如果(guo)不指定(ding)(ding)位(wei)(wei)置,它就會(hui)默(mo)認將(jiang)數(shu)據(ju)(ju)備份(fen)到(dao)當前目錄(lu);如果(guo)指定(ding)(ding)的(de)(de)位(wei)(wei)置已(yi)經有數(shu)據(ju)(ju)文(wen)件,taosdump 會(hui)提示用戶并立即(ji)退(tui)出,避免數(shu)據(ju)(ju)被覆蓋。這(zhe)意味著(zhu)同一路(lu)徑只能被用于一次備份(fen)。如果(guo)大家看到(dao)相關提示,務必小心操作。
但需要注(zhu)意的(de)(de)是,taosdump 是一個(ge)邏(luo)輯備份工具,它不應被用于備份任(ren)何原始數據、環(huan)境設置、 硬(ying)件信息、服務(wu)端配置或集群的(de)(de)拓撲結構。
安裝
taosdump 有以下兩種安裝方(fang)式(shi):
- 安裝 taosTools 官方安裝包,你可以進入 //yakult-sh.com.cn/all-downloads 此頁面找到 taosTools 并進行下載安裝。
- 單獨編譯 taosTools 并安裝,詳情請參考 taos-tools 倉庫()。
常用使用場景
taosdump 備份數據
- 備份所有數據庫:指定
-A或--all-databases參數; - 備份多個指定數據庫:使用
-D db1,db2,...參數; - 備份指定數據庫中的某些超級表或普通表:使用
dbname stbname1 stbname2 tbname1 tbname2 ...參數,注意這種輸入序列第一個參數為數據庫名稱,且只支持一個數據庫,第二個和之后的參數為該數據庫中的超級表或普通表名稱,中間以空格分隔; - 備份系統 log 庫:TDengine 集群通常會包含一個系統數據庫,名為
log,這個數據庫內的數據為 TDengine 自我運行的數據,taosdump 默認不會對 log 庫進行備份。如果有特定需求對 log 庫進行備份,可以使用-a或--allow-sys命令行參數。 - “寬容”模式備份:taosdump 1.4.1 之后的版本提供
-n參數和-L參數,用于備份數據時不使用轉義字符和“寬容”模式,可以在表名、列名、標簽名沒使用轉義字符的情況下減少備份數據時間和備份數據占用空間。如果不確定是否符合使用-n和-L條件時,請使用默認參數進行“嚴格”模式進行備份。轉義字符的說明請參考官方文檔()。
需要注意
- taosdump 1.4.1 之后的版本提供
-I參數,用于解析 avro 文件 schema 和數據,如果指定-s參數將只解析 schema。 - taosdump 1.4.2 之后的備份使用
-B參數指定的批次數,默認值為 16384,如果在某些環境下由于網絡速度或磁盤性能不足導致 “Error actual dump .. batch ..” ,可以通過-B參數調整為更小的值進行嘗試。 - taosdump 的導出不支持中斷恢復,所以當進程意外終止后,正確的處理方式是刪除當前已導出或生成的所有相關文件。
- taosdump 的導入支持中斷恢復,但是當進程重新啟動時,會收到一些“表已經存在”的提示,可以忽視。
taosdump 恢復數據
如果我們想要恢復指定路徑下的數據文件,方式是:使用 -i 參數加上數據(ju)文件所(suo)在路徑。如前文提(ti)及,我(wo)們不能使用同一(yi)個(ge)目錄備份(fen)不同數據(ju)集合,也不能在同一(yi)路徑多次備份(fen)同一(yi)數據(ju)集,否則備份(fen)數據(ju)會造成覆蓋或多次備份(fen)。
需要注意
taosdump 內部使用 TDengine stmt binding API 進行恢復數據的寫入,為提高數據恢復性能,目前使用 16384 為一次寫入批次。如果備份數據中有較多列的數據,可能會導致產生 “WAL size exceeds limit” 錯誤,此時可以通過使用 -B 參數(shu)調整為一個更小的值進行嘗試。
寫在最后
如(ru)果大(da)家(jia)想要(yao)查閱(yue) taosdump 詳細命令行參數列表,可以進(jin)入 獲取(qu)。毫無(wu)疑問(wen),如(ru)果你掌握了(le)上述 taosdump 使用指南,一(yi)定能幫助(zhu)你較為完美地解決所遭遇(yu)的數據遷移問(wen)題。但如(ru)果在應用過程中出(chu)現了(le)一(yi)些個性化難題,也無(wu)需心(xin)急,你可以進(jin)入 TDengine 用戶交流群尋找(zhao)幫助(zhu)。



























