Vitess 23.0.0 現已發佈,這是 Vitess 的最新大版本,帶來了新的默認設置、更好的運維工具以及更精細的監控指標。本次發佈基於 22 版本的堅實基礎,旨在讓部署和可觀測性更順暢,同時繼續自信地橫向擴展 MySQL 工作負載。
對於生產環境中的 Vitess 用户,本次版本有多方面的意義:
-
默認升級:將默認 MySQL 版本升級到 8.4,確保部署具備未來兼容性。
-
更好指標:新增的可觀測性讓事務路由、分片行為和恢復動作更清晰,調試和告警更精準。
-
清理和廢棄:移除舊指標和 API,簡化監控,避免混淆。
-
運維強化:改進 VTOrc 和拓撲控制,降低大規模集羣風險,提升安全邊界。
Vitess 23 亮點
以下是需要了解的主要改動:
新默認版本
-
vitess/lite:latest 鏡像的默認 MySQL 版本從 8.0.40 升級到 8.4.6。
-
VTGate 默認通告 MySQL 版本為 8.4.6(原為 8.0.40)。如果後端版本不同,請用 mysql_server_version 標誌調整。
-
重要升級説明(針對 Operator 用户): 升級 MySQL 8.0 到 8.4 時,需:
僅在跨 8.0 → 8.4 時需要一次,詳見官方發佈説明。
-
在 YAML 的額外 .cnf 文件中添加 innodb_fast_shutdown=0。
-
應用配置並等待所有 pod 健康。
-
切換鏡像到 vitess/lite:v23.0.0。
-
刪除 innodb_fast_shutdown=0 並重新應用。
-
新增與改進的指標
-
VTGate 新增指標 TransactionsProcessed(維度:Shard、Type),統計按分片和事務類型處理的事務數量。
-
VTOrc 新增指標 SkippedRecoveries(維度:RecoveryName、Keyspace、Shard、Reason),跟蹤跳過恢復的次數及原因。
這些改進增強了可觀測性,幫助運維更細緻地跟蹤系統行為。
廢棄與移除
-
VTOrc 指標重命名:DiscoverInstanceTimings 改為 DiscoveryInstanceTimings。
-
移除廢棄的 VTGate 指標:QueriesProcessed、QueriesRouted、QueriesProcessedByTable、QueriesRoutedByTable。
-
移除 VTOrc API 端點 /api/aggregated-discovery-metrics。
拓撲與 VTOrc 增強
-
--consul_auth_static_file 標誌現在要求 JSON 中至少包含一條憑證。
-
VTOrc 支持動態控制基於 EmergencyReparentShard 的恢復。
這些改動提升了集羣管理的安全性和穩定性。
VTTablet 與 CLI / Docker 更新
-
託管 MySQL 配置默認改為 caching-sha2-password。
-
MySQL 時區環境變量傳遞改進。
-
gRPC tabletmanager 客户端錯誤處理更清晰。
-
Docker 鏡像工作流及標誌更新,保持一致性。
升級須知
-
檢查自定義儀表盤:如果用到了被移除的指標,請更新到新指標(如 TransactionsProcessed)。
-
Operator 用户升級 8.0 → 8.4:請嚴格按照四步升級流程操作。
-
如果在 VTGate 中覆蓋了 mysql_server_version,確保它與後端 MySQL 版本一致。
-
先在測試環境中驗證涉及重親和、恢復或 Consul 集成的改動。
未來展望
接下來,項目團隊將繼續推動 Vitess 發展:
- 深化對 MySQL 8.4 的兼容。
- 擴展 VReplication、MoveTables 和 Resharding 的可觀測性。
- 持續改進 Operator 的可靠性和易用性。