一旦數據丟失,系統崩潰帶來的可能不僅是業務中斷,更可能是不可逆的損失。如何做到“有備無患”?時序數據庫 TDengine 提供了四種(zhong)覆蓋廣泛場(chang)景的數據(ju)備份(fen)(fen)方(fang)案(an)。本文將(jiang)帶你深入了解每種(zhong)方(fang)法(fa)的特(te)性(xing)與操作(zuo)要點,教你選對備份(fen)(fen)策略,也能快(kuai)速恢復數據(ju)。
數據備份工具 taosdump
taosdump 是 TDengine 社區版首(shou)選的數(shu)據(ju)備份(fen)工(gong)具(ju)(企業(ye)版同樣支持),其核心特點是操(cao)作簡便、支持多(duo)線程處理,且(qie)備份(fen)文件采用 Apache Avro 格(ge)式(大(da)數(shu)據(ju)領域通用數(shu)據(ju)交換(huan)格(ge)式),便于向其他系統共享數(shu)據(ju)。工(gong)具(ju)支持跨平臺連接(jie)遠(yuan)程服務(wu)器執行備份(fen) / 恢復(fu)操(cao)作,兼(jian)容(rong) Native、Restful、WebSocket 等多(duo)種連接(jie)協議。
優缺點分析:
- 優點:操作簡單且社區版支持,導出格式為開放式 avro 格式。
- 缺點:功能選項相對基礎,未覆蓋復雜場景需求。
工具獲取
隨企業版 / 社區(qu)版安裝包內置,無需(xu)額(e)外下載。
備份操作
- 全庫備份(包括系統庫)
命令示例:taosdump -A -o /data/backup(-A 表示全庫,-o 指定備份目錄)。
- 指定備份庫或表
支持單庫(ku)多(duo)表備份(fen),不(bu)支持多(duo)庫(ku)。
命令示例:taosdump -D db01 -o /data/backup/db01(-D 指定數據庫名)。
- 指定時間段備份
支持按時(shi)間區(qu)間篩選(xuan)數據,未指定則備份(fen)全量。
命令示例:taosdump -S '2024-01-01T00:00:00+0800' -E '2024-01-02T00:00:00+0800' -D db01 -o /data/backup/time_range(-S 和 -E 分別指定起始和結(jie)束時(shi)間)。
- 指定線程備份
支持自定義線程(cheng)加速(su)備(bei)份,默認(ren) 8 線程(cheng)。
命令示例:taosdump -T 32 -A -o /data/backup(-T 表示備(bei)份線程數)。
- 只備份元數據
命令示例:taosdump -s -D db01 -o /data/backup/meta(-s 表示僅元數據)。
恢復操作
- 全量恢復 命令示例:
taosdump -i /data/backup(-i指定備份目錄,恢復所有數據)。 - 恢復時修改庫名 命令示例:
taosdump -i /data/backup -W "db01=new_db01"(將原庫db01恢復為new_db01)。 - 指定線程恢復 命令示例:
taosdump -i /data/backup -T 16(使用 16 線程加速恢復)。 - 指定數據庫恢復 操作步驟:全庫備份后,刪除備份目錄中不需要恢復的數據庫文件夾(如
db02),保留db01文件夾,再執行taosdump -i /data/backup,僅恢復db01。 - 元數據恢復
若(ruo)目(mu)標庫表已存在(zai),元(yuan)數(shu)據不會覆蓋,僅保留現有結(jie)構。
表結構有變動的備份/恢復
- TDengine 3.3.6.0 之前版本:若目標庫表結構有變動(如增刪列),直接恢復會失敗。需通過 “舊備份導入新庫→新庫導出新備份→新備份導入目標庫” 迂回恢復。
- TDengine 3.3.6.0 及之后版本:支持表結構增刪列(列名不變僅類型修改仍不支持),恢復時新增列以
null填充。
數據管道工具 taosX
taosX 是 TDengine 企業(ye)版專用(yong)的(de)數據(ju)(ju)(ju)管(guan)道工具,定位為 “零代碼(ma)數據(ju)(ju)(ju)集(ji)成(cheng)平臺”,核心(xin)功能覆蓋數據(ju)(ju)(ju)接(jie)(jie)入、同步(bu)、備份、恢復(fu)及遷移。支持跨(kua)集(ji)群 / 實例的(de)異步(bu)數據(ju)(ju)(ju)復(fu)制(zhi),可作為橋(qiao)梁(liang)對接(jie)(jie) TDengine 與第三方數據(ju)(ju)(ju)源(yuan)(如(ru)關系(xi)型數據(ju)(ju)(ju)庫、消息隊列(lie)等)。
優缺點分析:
- 優點:功能全面(支持增量備份、斷點續備等)、速度快、導出格式多樣(CSV/Parquet 列存)。
- 缺點:社區版不支持、使用復雜度高。
工具獲取
隨企(qi)業版(ban)安(an)裝包內置,部(bu)分(fen)生(sheng)態對接組件(jian)需單(dan)獨(du)安(an)裝。
核心功能
taosX 功能豐(feng)富,覆(fu)蓋數據全(quan)生命(ming)周期管(guan)理,具體包括:
- 數據備份與恢復:支持增量備份 / 恢復(3.3.x + 版本支持圖形化操作)、斷點續備,備份文件格式支持 CSV 和 Parquet(列存)。
- 數據遷移與同步 :
- 支持基于訂閱(TMQ)的實時數據同步(3.0 + 版本)和基于 SELECT 的歷史數據遷移(2.4+/2.6+/3.0 + 版本)。
- 支持歷史數據(history 模式)、實時數據(realtime 模式)、混合(both 模式)遷移。
- 任務支持進度保存,異常恢復后可續傳。
- 跨集群復制 :支持數據庫或(超級)表的全量 / 增量復制,可選擇列級復制、模式(schema)復制,表名支持正則匹配。
- 外部數據源接入 :
- 關系型數據庫:MySQL、Oracle、PostgreSQL、Microsoft SQL Server。
- 時序數據庫:OpenTSDB、InfluxDB。
- 工業實時數據庫:PI System、Aveva Historian。
- 消息隊列:Kafka。
- 其他常見協議:OPC-UA/DA、MQTT。
- 數據轉換(Transform):支持對輸入流進行過濾、映射、聚合等處理,處理后數據流入目標端。
- 雙活部署管理 :通過 taosx replica 系列命令管理主備集群同步任務,支持任務啟動、停止、重啟及進度查看 。
- 可視化操作 :可通過 taos-explorer(Web 界面)配置數據遷移任務、監控任務狀態(如數據寫入量、延時等)。
備份/恢復步驟:
一、備份步驟
- 配置備份任務參數(命令行方式)
- –from 參數 (源端配置):
auto.offset.reset=latest&experimental.snapshot.enable=false:不備份歷史數據,從當前 WAL 最新位置開始備份。upcoming:指定下次執行備份任務的時間(如now表示立即開始)。interval:兩次備份任務的間隔(如interval=60s表示每 60 秒執行一次)。self.repeat=true:開啟持續重復調度。
- –to 參數 (目標端配置):
move.to:備份文件寫入完成后,移動到指定目錄(如/data/send)。
- 啟動備份任務 使用
nohup方式后臺啟動備份任務,示例命令(以跨隔離場景為例):
nohup taosx backup
--from "auto.offset.reset=latest
&experimental.snapshot.enable=false
&upcoming=now
&interval=60s
&self.repeat=true"
--to "move.to=/data/send"
> backup.log 2>&1 &
此命(ming)令會持續生成增量備份文件到本地路徑,并在完成后移動至 /data/send/ 目錄。
- 圖形化操作(3.3.x + 版本) 通過
taos-explorer(Web 界面,訪問地址如//<集群IP>:6060)配置備份任務:- 進入 “系統管理 – 備份” 頁面,點擊 “新增備份”。
- 配置參數:備份周期(每天 / 每 7 天 / 每 30 天)、目標數據庫(需
wal_retention_period>0)、備份目錄(如/root/data_backup)。 - 點擊 “確定” 后任務啟動,支持監控任務狀態(數據寫入量、延時等)。
二、恢復步驟
- 配置恢復任務參數(命令行方式)
-
post_action=del :恢復完成后自動刪除備份文件(避免重復恢復)。
-
- 啟動恢復任務 在目標集群使用
nohup啟動恢復任務,示例命令:
nohup taosx restore --from "/data/receive" --post_action=del > restore.log 2>&1 &
此命令會監聽接收目錄(如/data/receive),解析并(bing)寫入增量備(bei)份文件到目標 TDengine 集(ji)群。
- 圖形化操作(3.3.x + 版本) 在
taos-explorer的 “系統管理 – 備份” 頁面中:- 進入 “備份文件” 列表,選擇需恢復的備份點。
- 點擊 “數據恢復” 按鈕,選擇目標數據庫后完成恢復。
數據庫管理工具 taos-CLI
taos-CLI 工(gong)具是(shi) TDengine 自(zi)帶的數(shu)據庫管理(li)工(gong)具(社區版及(ji)企業版均支持(chi)),其備份及(ji)恢復功能主要(yao)通過 CSV 文(wen)件實現,工(gong)具適(shi)合小數(shu)據量臨(lin)時(shi)備份場景,操作簡(jian)單但性能有限(xian),需結(jie)合實際需求選擇使用。
優缺點分析:
- 優點:操作簡單,可靈活備份任意查詢結果(如特定子表、部分列或自定義查詢結果)。
- 缺點:僅支持單線程操作,速度較慢,適用于小數據量的臨時備份。
工具獲取
taos-CLI 工具(ju)內置(zhi)于 TDengine 社區版及企業版中,無需額(e)外(wai)安裝。
備份操作
備份時主要通過taos命令行的重定向符號>>將(jiang)查詢結果導出為 CSV 文件,支持以下場(chang)景:
- 子表整體備份 :直接導出子表的所有數據。 示例(導出子表
child_table):
SELECT * FROM child_table >> /path/to/backup.csv
- 查詢結果備份 :導出特定查詢條件的結果(如時間范圍、過濾條件)。 示例(導出 2025-06-01 至 2025-06-30 的數據):
SELECT * FROM sensor_data
WHERE ts BETWEEN '2025-06-01' AND '2025-06-30'
>> /path/to/query_backup.csv
- 部分列備份 :僅導出指定列的數據(適用于表結構變化大的遷移場景)。 示例(導出
id和value列):
SELECT id, valueFROM sensor_data >> /path/to/partial_columns_backup.csv
恢復操作
恢(hui)復時需(xu)注意刪除 CSV 文件的第一行(xing)(xing)標題(ti)行(xing)(xing)(避免列(lie)名被誤導入),并根據(ju)備份列(lie)數據(ju)類(lei)型選擇對(dui)應(ying)語法:
- 子表整體恢復 :直接將 CSV 數據導入目標子表。 示例(導入到子表
child_table):
INSERTINTO child_table FILE /path/to/backup.csv;
- 部分列恢復 :需明確指定目標表的列名,確保 CSV 文件的列順序與指定列一致。 示例(導入到
target_table的id和value列):
INSERTINTO target_table (id, value) FILE /path/to/partial_columns_backup.csv;
庫文件備份
庫文件備份是指直接備份 TDengine 中 dataDir 指向(xiang)的數據(ju)(ju)庫文件目錄,屬于(yu)整體備(bei)份方式(shi),主要用于(yu)災(zai)備(bei)場景(如 TDengine 無法啟動時(shi)),類似于(yu)制作數據(ju)(ju)庫鏡(jing)像。
優缺點分析:
- 優點:不依賴于 TDengine 服務,備份速度快。
- 缺點:恢復時 TDengine 版本要與備份時保持一致,同時全部數據(包括元數據)只能整體恢復至備份時。
工具獲取
無工(gong)具,使用系統 copy 命令(ling)。
備份操作
備份操作建議(yi)結合自動(dong)化腳本(ben)定期執(zhi)行,以提(ti)升可靠性。
- 備份范圍 :
- 不需要備份的文件夾 :WAL(預寫日志)文件夾(通常較大,無需備份)。
- 多副本場景 :僅需備份主副本(leader)的數據,無需備份所有副本。
- 集群場景 :多節點應在相同時間點備份,以減少節點間數據差異。
- 備份時機 :
- 理想情況 :停止 TDengine 服務后備份,確保數據一致性。
- 生產環境(熱備份) :若無法停止服務,可執行
flush database <dbname>命令強制內存數據落盤,再進行備份。
恢復操作
建議手動操作,明確自己(ji)在做什么,以保證數據安全,恢復前需(xu)停(ting)止服務。
- 前置條件 :
- 必須停止 TDengine 服務。
- TDengine 版本請與備份時保持一致。
- 恢復方式 :
- 完整恢復 :需基于完整的備份目錄恢復。可修改
dataDir參數指向備份目錄;若使用原目錄,需清空原目錄后替換(不可新舊混合)。 - 多副本恢復 :
- 若為全量備份,與完整恢復操作相同。
- 若僅備份了 leader 數據,需將 leader 備份文件復制到其他副本節點。
- 集群恢復 :所有節點必須使用同一備份數據恢復,僅恢復部分節點可能導致啟動失敗或不可預期問題。
- 完整恢復 :需基于完整的備份目錄恢復。可修改
結語
TDengine 提供的四種備份 / 恢復方法各有優劣與適(shi)用(yong)場景:
- taosdump :社區版首選,適合小到中數據量的開放格式備份;
- taosX :企業版推薦,功能全面,支持復雜遷移與增量操作;
- taos-CLI :輕量臨時備份,適合小數據量靈活導出;
- 庫文件備份 :災備場景必選,離線操作但覆蓋全量數據;
企業需(xu)結合(he)數據規模、可(ke)用資源(yuan)、場景需(xu)求(如災備(bei) / 遷移 / 臨時(shi)備(bei)份),選擇單一(yi)或組合(he)方案,確保數據安(an)全與(yu)業務穩定。你目前用的是哪(na)種(zhong)備(bei)份方式?有(you)沒有(you)踩過什(shen)么坑,或者有(you)什(shen)么實用經驗(yan)?歡迎在評論區分享!


























