全部產品
Search
文件中心

:通過無鎖變更工單實現無鎖結構變更

更新時間:Jun 30, 2024

為解決變更資料庫表結構時的鎖表問題,Data Management推出了無鎖結構變更功能,該功能可以較好地規避因鎖表以致於阻塞業務和資料庫原生OnlineDDL帶來的主備延遲問題。本文介紹通過提交無鎖變更工單實現資料庫無鎖結構變更的方法。

前提條件

  • 資料庫類型僅支援RDS MySQLPolarDB MySQL版MyBase MySQL或其他來源MySQL。不支援PolarDB分布式版(包含PolarDB-X 1.0和PolarDB-X 2.0)、RDS PostgreSQL等其他非MySQL資料庫使用DMS的無鎖結構變更功能。

    說明

    其他來源是指來自其他雲廠商或自建的資料庫。

  • 資料庫引擎為InnoDB、Rocksdb、X-Engine。

  • 資料庫已開啟Binlog日誌。

    說明

    PolarDB MySQL版預設未開啟Binlog。開啟Binlog操作,請參見開啟Binlog

  • 執行個體的管控模式為穩定變更或安全協同。更多資訊,請參見查看管控模式

  • 執行個體已開啟無鎖結構變更。具體操作,請參見開啟無鎖結構變更

注意事項

  • 使用具備讀寫權限的資料庫帳號或高許可權資料庫帳號。如果當前資料庫帳號許可權不足,您可以:

    • 授權資料庫帳號許可權。更多資訊,請參見MySQL資料庫帳號許可權管理

      說明

      為資料庫帳號添加ALL PRIVILEGES許可權或以下讀寫權限:

      ALTER、CREATE、DELETE、DROP、INDEX、INSERT、LOCK TABLES、SELECT、TRIGGER、UPDATE、REPLICATION CLIENT和REPLICATION SLAVE許可權。

    • 更換資料庫帳號。更多資訊,請參見編輯執行個體資訊

  • 確保資料庫磁碟空間充足:由於需要在目標資料庫中建立暫存資料表用於資料拷貝,請確保磁碟剩餘空間為目標表的兩倍以上,磁碟空間不足將導致執行個體被鎖定。更多資訊,請參見資料庫效能

  • 目標表中有主鍵或唯一鍵:在執行無鎖結構變更時,主鍵或唯一鍵用於全量拷表分段操作及後續累加式更新。

    說明

    如果目標表中僅有主鍵或唯一鍵,在執行結構變更期間更新主鍵或唯一鍵,將導致任務執行失敗。

  • 目標表名的長度不能超過56個字元。

操作步驟

說明

如下操作以穩定變更模式的執行個體進行舉例。若您選擇安全協同模式的執行個體,還會出現原因類別執行方式等參數。參數的詳細資料,請參見操作步驟

  1. 登入Data Management 5.0
  2. 在頂部功能表列中,選擇資料庫開發 > 資料變更 > 無鎖變更

    說明

    若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 資料庫開發 > 資料變更 > 無鎖變更

  3. 配置無鎖變更工單。

    參數名

    說明

    資料庫

    搜尋並選擇目標資料庫,支援選擇多個目標資料庫。

    • 有許可權:只能搜尋並選擇有變更許可權的資料庫。

    • 全部:可以搜尋並選擇所有的資料庫(除開啟中繼資料存取控制的資料庫)。

      說明

      如果您沒有目標資料庫的變更許可權,請在頂部功能表列中選擇安全與規範 > 許可權中心 > 許可權工單,單擊許可權申請 > 庫許可權,在許可權申請工單頁面申請您需要的許可權。

    變更SQL

    輸入DDL(Data Definition Language),例如ALTER TABLEOPTIMIZE

    說明

    如果您輸入的是DML(Data Manipulation Language),則您進行的是無鎖資料變更任務。更多資訊,請參見DML無鎖變更

  4. 單擊提交申請

    系統將自動進行SQL預檢查。如果預檢查失敗,您可以根據失敗原因,單擊修改SQL,修改SQL後重試。

  5. 等待審批通過後,在工單詳情頁的執行地區,單擊執行變更

  6. 配置任務執行參數。

    配置項

    說明

    執行策略

    • 立即執行:系統預設,單擊確認執行後立即執行工單任務。

    • 定時執行:選擇任務開始執行時間。單擊確認執行後,在指定的時間執行該任務。

    指定結束時間

    • 開啟:選擇任務結束時間。如果任務在指定結束時間之前沒有執行完畢,則系統將不再繼續執行未完成的SQL任務,防止高峰期執行任務,影響業務運作。

    • 關閉:系統預設。

  7. 單擊確定執行

    說明

    已暫停任務,重啟後,會重新開始執行任務。

    • 您可以在執行地區,查看任務執行狀態、任務設定、詳情和調度日誌。

    • 您還可以在營運管理 > 任務管理中,查看無鎖結構變更任務進度。具體操作,請參見查看無鎖變更進度

執行個體開啟無鎖結構變更後,除本方案外,您在該執行個體中執行以下類型的結構變更工單或任務,都會優先採用無鎖結構變更的方式。