為解決變更資料庫表結構時的鎖表問題,Data Management推出了無鎖結構變更功能,該功能可以較好地規避因鎖表以致於阻塞業務和資料庫原生OnlineDDL帶來的主備延遲問題。本文介紹通過提交無鎖變更工單實現資料庫無鎖結構變更的方法。
前提條件
資料庫類型僅支援RDS MySQL、PolarDB 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個字元。
操作步驟
如下操作以穩定變更模式的執行個體進行舉例。若您選擇安全協同模式的執行個體,還會出現原因類別、執行方式等參數。參數的詳細資料,請參見操作步驟。
- 登入Data Management 5.0。
在頂部功能表列中,選擇 。
說明若您使用的是極簡模式的控制台,請單擊控制台左上方的表徵圖,選擇
。配置無鎖變更工單。
參數名
說明
資料庫
搜尋並選擇目標資料庫,支援選擇多個目標資料庫。
有許可權:只能搜尋並選擇有變更許可權的資料庫。
全部:可以搜尋並選擇所有的資料庫(除開啟中繼資料存取控制的資料庫)。
說明如果您沒有目標資料庫的變更許可權,請在頂部功能表列中選擇
,單擊 ,在許可權申請工單頁面申請您需要的許可權。
變更SQL
輸入DDL(Data Definition Language),例如
ALTER TABLE
、OPTIMIZE
。說明如果您輸入的是DML(Data Manipulation Language),則您進行的是無鎖資料變更任務。更多資訊,請參見DML無鎖變更。
單擊提交申請。
系統將自動進行SQL預檢查。如果預檢查失敗,您可以根據失敗原因,單擊修改SQL,修改SQL後重試。
等待審批通過後,在工單詳情頁的執行地區,單擊執行變更。
配置任務執行參數。
配置項
說明
執行策略
立即執行:系統預設,單擊確認執行後立即執行工單任務。
定時執行:選擇任務開始執行時間。單擊確認執行後,在指定的時間執行該任務。
指定結束時間
開啟:選擇任務結束時間。如果任務在指定結束時間之前沒有執行完畢,則系統將不再繼續執行未完成的SQL任務,防止高峰期執行任務,影響業務運作。
關閉:系統預設。
單擊確定執行。
說明已暫停任務,重啟後,會重新開始執行任務。
您可以在執行地區,查看任務執行狀態、任務設定、詳情和調度日誌。
您還可以在查看無鎖變更進度。
中,查看無鎖結構變更任務進度。具體操作,請參見
執行個體開啟無鎖結構變更後,除本方案外,您在該執行個體中執行以下類型的結構變更工單或任務,都會優先採用無鎖結構變更的方式。