為解決變更資料庫表結構時的鎖表問題,Data Management推出了無鎖結構變更功能,該功能可以較好地規避因鎖表以致於阻塞業務和資料庫原生OnlineDDL帶來的主備延遲問題。本文介紹通過提交無鎖變更工單實現資料庫無鎖結構變更的方法。
前提條件
注意事項
使用具備讀寫權限的資料庫帳號或高許可權資料庫帳號。如果當前資料庫帳號許可權不足,您可以:
授權資料庫帳號許可權。更多資訊,請參見管理資料庫帳號及帳號許可權。
說明為資料庫帳號添加ALL PRIVILEGES許可權或以下讀寫權限:
ALTER、CREATE、DELETE、DROP、INDEX、INSERT、LOCK TABLES、SELECT、TRIGGER、UPDATE、REPLICATION CLIENT和REPLICATION SLAVE許可權。
更換資料庫帳號。更多資訊,請參見編輯執行個體資訊。
確保資料庫磁碟空間充足:由於需要在目標資料庫中建立暫存資料表用於資料拷貝,請確保磁碟剩餘空間為目標表的兩倍以上,磁碟空間不足將導致執行個體被鎖定。更多資訊,請參見資料庫效能。
目標表中有主鍵或唯一鍵:在執行無鎖結構變更時,主鍵或唯一鍵用於全量拷表分段操作及後續累加式更新。
說明如果目標表中僅有主鍵或唯一鍵,在執行結構變更期間更新主鍵或唯一鍵,將導致任務執行失敗。
目標表名的長度不能超過56個字元。
不支援PolarDB分布式版(包含PolarDB-X 1.0和PolarDB-X 2.0)、RDS PostgreSQL等其他非MySQL資料庫使用DMS的無鎖結構變更功能。
操作步驟
如下操作以安全協同模式的執行個體進行舉例。
- 登入Data Management 5.0。
在頂部功能表列中,選擇 。
說明若您使用的是極簡模式的控制台,請單擊控制台左上方的
表徵圖,選擇 。
配置無鎖變更工單。部分參數說明如下:
更多參數說明,請參見操作步驟。
參數名
說明
資料庫
搜尋並選擇目標資料庫,支援選擇多個目標資料庫。
有許可權:只能搜尋並選擇有變更許可權的資料庫。
全部:可以搜尋並選擇所有的資料庫(除開啟中繼資料存取控制的資料庫)。
說明如果您沒有目標資料庫的變更許可權,請在頂部功能表列中選擇
,單擊 ,在許可權申請工單頁面申請您需要的許可權。
執行方式
選擇工單的執行方式:
審批通過後,提交者執行。
審批通過後,自動執行。
最後一個審批人執行。
說明管理員可以在組態管理。
中,修改執行方式列表。具體操作,請參見影響行數
預估本次更新影響的資料行數。
變更SQL
輸入DDL(Data Definition Language),例如
ALTER TABLE
、OPTIMIZE
。說明如果您輸入的是DML(Data Manipulation Language),則您進行的是無鎖資料變更任務。更多資訊,請參見DML無鎖變更。
單擊提交申請。
系統將自動進行SQL預檢查。如果預檢查失敗,您可以根據失敗原因,單擊修改SQL,修改SQL後重試。
等待審批通過後,在工單詳情頁的執行地區,單擊執行變更。
配置任務執行參數。
配置項
說明
執行策略
立即執行:系統預設,單擊確認執行後立即執行工單任務。
定時執行:選擇任務開始執行時間。單擊確認執行後,在指定的時間執行該任務。
說明定時任務的實際執行時間可能與設定執行時間之間存在±1分鐘的誤差。
指定結束時間
指定任務結束時間。如果任務在指定結束時間之前沒有執行完畢,則系統將不再繼續執行未完成的SQL任務,防止高峰期執行任務,影響業務運作。
說明任務的實際結束時間可能與指定結束時間之間存在±1分鐘的誤差。
是否開啟主備檢查
為該資料庫開啟主備檢查後,可即時保障主備資料同步、保障資料庫高可用性和故障快速恢複能力。
灰階類型
批次執行SQL策略。
無灰階:DMS自動執行任務中的所有SQL。
灰階第一條SQL成功後暫停:第一條SQL執行成功後,DMS將會自動暫停執行SQL。如您需要繼續執行SQL,請單擊重試,剩餘SQL將會一次性執行完成,中間再無暫停。
每條SQL執行成功後暫停:每條SQL執行後都會自動暫停,需要您手動單擊重試來執行下一條SQL。
單擊確定執行。
當DMS任務執行中,您可隨時暫停任務。已暫停任務在重啟後,會重新開始執行任務。
您可以在執行地區,查看任務執行狀態、任務設定、詳情和調度日誌。
您還可以在查看無鎖變更進度。
中,
執行個體開啟無鎖結構變更後,除本方案外,您在該執行個體中執行以下類型的結構變更工單或任務,都會優先採用無鎖結構變更的方式。