| 級別 | 定義 | 審批流程 | 執行窗口 |
|---|---|---|---|
| 一般變更 | 低風險、可回滾、影響面小 | DBA 組長/技術負責人審批 | 業務低峰期 (建議 16:00 後) |
| 重大變更 | 高風險、不可逆、核心業務、大表結構變更 | 技術總監/架構師 + 變更諮詢委員會 (CAB) 審批 | 維護窗口 (建議 18:00 後/半年期維護日) |
應對: 分批次 (每批 5000–10000 行)、pt-online-schema-change 模式、配合 WHERE pk BETWEEN ... 範圍提交、每批 SLEEP(0.1) 降壓。
WHERE 條件命中高選擇性索引 (EXPLAIN type=ref/range)驗證: 先 SELECT 確認影響行數與預期一致,再執行 UPDATE。
應對: 先低峰加索引 (在線 DDL/OSC) → 走索引訂正 → 再評估是否保留索引。
| 文件大小 | 變更級別 | 建議 |
|---|---|---|
| ≤ 1 GB | 一般 | 16:00 後執行,LOAD DATA INFILE / mysqldump 導入 |
| > 1 GB | 視壓力定級 | 核心表/高併發表 → 重大;非核心 → 一般。分文件並行導入,監控 Innodb_buffer_pool_pages_dirty |
無數據遷移風險,僅創建對象。需審核:命名規範、引擎選擇 (InnoDB)、字符集 (utf8mb4)、主鍵設計、索引合理性。
觸發條件: 表數據文件 > 500MB 且執行以下操作:
執行策略:
ALGORITHM=INPLACE, LOCK=NONE黃金法則: 先加新索引,驗證生效 (EXPLAIN),再刪舊索引。避免瞬間無索引導致全表掃描風暴。
| 操作 | 級別 | 備註 |
|---|---|---|
| 修改表名 / 庫間移表 / 增加註釋 / 創建刪除分區 / 刪除表 / 修改自增值 | 一般 | 元數據操作,鎖表極短 |
| mysqldump 備份 / 修改字符集 / 修改分區邏輯 | 重大 | 長時間鎖表/IO 暴增/數據重寫 |
max_connections、innodb_buffer_pool_size (5.7+ 支持在線擴容)SHOW VARIABLES 留存,執行後驗證 SHOW GLOBAL VARIABLESinnodb_log_file_size、innodb_page_size、lower_case_table_namesSELECT *、無無索引 UPDATE/DELETE、大事務拆分)EXPLAIN 驗證、影響行數確認、備份完成SLEEP 降壓、實時監控 (QPS、延遲、IO、鎖等待)pt-online-schema-change (Percona)、gh-ost (GitHub)MySQL 變更管理的核心是「風險分級、流程固化、工具賦能、事後複盤」。本規範將模糊經驗量化為可執行標準:500MB/50 萬行/1% 修改量 為關鍵分水嶺,Online DDL / OSC / gh-ost 為大表變更三板斧,半年期維護窗口 為靜態參數修改安全網。建議團隊根據業務成熟度持續迭代,引入自動化審核平台,將「人治」升級為「法治」,讓每一次變更都可控、可追溯、可復盤。