動態

詳情 返回 返回

藍易雲cdn:Docker版TDengine2.6升級到Tdengine3.0 - 動態 詳情

下面給出一套在 Docker 環境中將 TDengine 2.6 平滑遷移到 3.0的實戰方案。核心原則:<span style="color:red">不做原地覆蓋升級、先備份、可回滾</span>。思路務實、步驟可複用,適合單機與小規模集羣場景。🚀


一、遷移總覽(結論先行)

  • <span style="color:red">2.6 → 3.0 不支持就地升級</span>,採用 導出(taosdump)→ 新集羣 → 導入 的“旁路遷移”策略。
  • 先用 2.6 的 taosdump 全量導出,啓 3.0 新容器(新卷),再用 3.0 的 taosdump 導入。
  • <span style="color:red">客户端與驅動需同時升級</span>(JDBC/taosc/REST),避免協議不兼容。
  • 遷移窗口內,應用側建議短暫“只寫隊列/緩寫”,遷移完成後補寫或回放增量。

二、標準流程(可直接執行)

1)準備 Docker 卷與網絡

# 創建獨立網絡與數據卷(避免與2.6混用)
docker network create tdnet
docker volume create taos2_dump
docker volume create taos3_data
docker volume create taos3_cfg
docker volume create taos3_log

解釋:獨立網絡便於容器間解析與隔離;單獨卷確保<span style="color:red">數據與配置物理隔離</span>,防誤覆蓋。

2)在 2.6 容器中全量導出

# 進入2.6容器(名稱示例:td26)
docker exec -it td26 bash

# 使用2.6自帶的 taosdump 全量導出所有數據庫
taosdump --all-databases -o /dump/full_$(date +%F_%H%M)

# 也可按庫導出(示例導出 db_iot 與 db_log)
# taosdump -D db_iot -D db_log -o /dump/sel_$(date +%F_%H%M)

exit

# 將導出目錄綁定到卷(如2.6容器的 /dump 已映射到 taos2_dump)
docker run --rm -it \
  -v taos2_dump:/dump \
  alpine ls -lah /dump

解釋:必須用 2.6 的 taosdump(與源端完全兼容),--all-databases 會連同表結構、標籤、權限等信息一起導出到可移植文件。導出後用 ls 校驗文件存在與大小。

3)啓動全新 3.0 容器

# 以單節點為例(生產請按需設定 FQDN/EP/角色等)
docker run -d --name td30 \
  --network tdnet \
  -p 6030:6030 -p 6041:6041 \
  -e TAOS_FQDN=td30 \
  -e TAOS_FIRST_EP=td30:6030 \
  -e TAOS_RETENTION_PERIOD=3650 \
  -v taos3_data:/var/lib/taos \
  -v taos3_cfg:/etc/taos \
  -v taos3_log:/var/log/taos \
  -v taos2_dump:/dump:ro \
  tdengine/tdengine:3.0

解釋:使用 3.0 官方鏡像;映射 6030(服務)與 6041(REST);把 2.6 的導出卷只讀掛載到 /dump,<span style="color:red">防止誤改備份</span>。

4)在 3.0 容器中執行導入

docker exec -it td30 bash

# 登錄驗證
taos -s "SHOW DATABASES;"

# 使用3.0版本 taosdump 導入(支持從2.6導出的文件)
taosdump -i /dump/full_YYYY-MM-DD_HHMM

# 或導入選擇性備份
# taosdump -i /dump/sel_YYYY-MM-DD_HHMM

exit

解釋:3.0 的 taosdump 具備向後導入能力。導入會按導出中的元數據恢復庫、超級表、子表、標籤和值。

5)一致性與性能校驗(強制執行)

# 行數對比(示例:db_iot)
docker exec -it td26 taos -s "SELECT COUNT(*) FROM db_iot.st_sensordata;"
docker exec -it td30 taos -s "SELECT COUNT(*) FROM db_iot.st_sensordata;"

# 關鍵查詢延遲/索引驗證
docker exec -it td30 taos -s "
USE db_iot;
SELECT TBNAME, COUNT(*) AS c FROM st_sensordata GROUP BY TBNAME ORDER BY c DESC LIMIT 5;
"

解釋:對比核心錶行數與樣本查詢結果,確認<span style="color:red">無丟無重</span>;如使用納秒級時間戳,請驗證時間精度與邊界值。

6)業務切換與回滾預案

  • 切換:更新應用連接串指向 3.0(主機、端口、用户),並同步升級客户端驅動(JDBC/taosc/REST SDK)。
  • 回滾:若校驗不通過,停止寫入、回指 2.6,問題修復後重新導入。因為<span style="color:red">全程未覆蓋舊卷</span>,回退零成本。

三、關鍵差異與常見坑(務必關注)

  • 時間精度:3.0 支持更高精度時間戳(納秒)。導入後檢查時間列是否存在精度變化導致的範圍過濾差異。
  • 語法與特性:部分函數與系統表字段在 3.0 有調整;建議對依賴系統表結構的運維腳本做<span style="color:red">迴歸測試</span>。
  • 權限模型:若 2.6 存在多用户與授權策略,確認 taosdump 導出的 DDL 中包含 CREATE USER/GRANT,導入後抽查權限是否生效。
  • 適配層:REST 6041 端口不變,但 3.0 的適配器/驅動實現有更新,老版本客户端可能出現“連接成功但查詢異常”的偽健康狀態。
  • 寫入停頓:遷移窗口建議應用改為“落本地隊列/消息中間件”,遷移完成後回放,避免跨版本雙寫導致冪等問題。

四、對比與原理説明表(支持 WordPress 經典編輯器 / vditor)

維度 2.6 做法 3.0 做法 遷移影響 風險級別
升級方式 原地不可行 旁路新集羣 需導出/導入 <span style="color:red">高</span>
導出工具 taosdump(2.6) taosdump(3.0) 導入 官方兼容
時間精度 毫秒為主 支持納秒 過濾條件需複核
客户端 老驅動 <span style="color:red">升級驅動</span> 否則報錯/性能異常
回滾 複雜 <span style="color:red">簡單(未覆蓋舊卷)</span> 快速恢復

五、最小可用 docker-compose(單機示例)

version: "3.8"
services:
  td30:
    image: tdengine/tdengine:3.0
    container_name: td30
    network_mode: bridge
    environment:
      - TAOS_FQDN=td30
      - TAOS_FIRST_EP=td30:6030
    ports:
      - "6030:6030"   # 服務端口
      - "6041:6041"   # REST API
    volumes:
      - taos3_data:/var/lib/taos     # 數據:全新卷,避免覆蓋老數據
      - taos3_cfg:/etc/taos          # 配置:便於持久化與納管
      - taos3_log:/var/log/taos      # 日誌:問題現場可追溯
      - taos2_dump:/dump:ro          # 2.6 導出文件(只讀)
volumes:
  taos3_data:
  taos3_cfg:
  taos3_log:
  taos2_dump:

解釋:compose 只演示 3.0;2.6 環境保留,確保<span style="color:red">可回滾</span>。生產中如為集羣,請先按官方拓撲起 mnode,再擴 vnode,最後導入。


六、文字版流程圖(vditor/Markdown 友好)

[準備卷與網絡]
      ↓
[2.6 taosdump 全量導出]
      ↓
[啓動 3.0 新容器/新卷]
      ↓
[3.0 taosdump 導入數據]
      ↓
[一致性校驗 + 性能抽測]
      ↓
[升級客户端驅動/切流]
      ↓
[觀察窗口 & 可回滾]

七、質量保障清單(上線前最後一公里)✅

  • <span style="color:red">數據一致性</span>:核心超級錶行數、時間範圍、樣本校驗 3/3 通過。
  • <span style="color:red">關鍵查詢</span>:TOPN、區間聚合、標籤過濾命中正確。
  • <span style="color:red">寫入延遲</span>:與 2.6 同量級或更優;批寫參數與緩存大小按 3.0 默認或調優。
  • <span style="color:red">應用聯調</span>:驅動升級後無異常告警,REST/JDBC/原生連接均通過。
  • <span style="color:red">回滾腳本</span>:指向 2.6 的連接配置與容器腳本可一鍵恢復。

一句話覆盤:把遷移當成“新建 3.0 集羣 + 數據搬家”的工程項目來做,<span style="color:red">先備份、再導入、後切流、保回滾</span>,你會收穫一個穩定、可追溯、結果可控的升級過程。🛠️📈

需要我按你的實際庫名與容器名生成“一鍵導出/導入腳本”,我可以直接給出可執行版。

user avatar u_9449786 頭像 banxiazhimo 頭像 meirenlideshuizhurou 頭像 nathannie 頭像 dayong_59b0e68b1ed0d 頭像
點贊 5 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.