無鎖結(jié)構(gòu)變更
DMS為解決結(jié)構(gòu)變更時(shí)的鎖表問題而推出的無鎖結(jié)構(gòu)變更功能,能較好地規(guī)避因數(shù)據(jù)庫變更導(dǎo)致鎖表以至于阻塞業(yè)務(wù)的現(xiàn)象、以及數(shù)據(jù)庫原生Online DDL帶來的主備延遲現(xiàn)象。
前提條件
實(shí)例的管控模式為穩(wěn)定變更或安全協(xié)同。更多信息,請參見管控模式。
目標(biāo)實(shí)例已開啟DMS無鎖表結(jié)構(gòu)變更策略。具體操作,請參見開啟無鎖結(jié)構(gòu)變更。
說明本示例中,您需要提前對模擬開發(fā)環(huán)境的RDS MySQL實(shí)例開啟DMS無鎖表結(jié)構(gòu)變更策略。
操作步驟
本示例通過無鎖結(jié)構(gòu)變更功能將big_table
表的long_text_a
字段類型從varchar(1024)
改為text
。
普通用戶提交工單。
以普通用戶賬號,登錄數(shù)據(jù)管理DMS 5.0。
在頂部菜單欄中,選擇 。
說明若您使用的是極簡模式的控制臺,請單擊控制臺左上角的圖標(biāo),選擇全部功能 > 數(shù)據(jù)庫開發(fā) > 數(shù)據(jù)變更 > 無鎖變更。
配置如下信息,并單擊提交申請。
參數(shù)名
說明
數(shù)據(jù)庫(必填)
選擇安全協(xié)同模式的
poc_dev
數(shù)據(jù)庫。原因類別(必填)
選擇變更的原因,方便后續(xù)查找。
業(yè)務(wù)背景(必填)
詳細(xì)描述變更原因或目標(biāo),減少溝通成本。
執(zhí)行方式(必填)
選擇最后一個(gè)審批人執(zhí)行。
影響行數(shù)(必填)
預(yù)估本次更新會(huì)影響的數(shù)據(jù)行數(shù),可在SQL Console以
count
統(tǒng)計(jì)。變更SQL(必填)
輸入如下
ALTER
語句。ALTER TABLE `big_table` MODIFY COLUMN `long_text_a` text NULL AFTER `name`;
說明將
long_text_a
字段的類型從varchar(1024)
改為text
。回滾SQL(選填)
可直接執(zhí)行的SQL語句,變更SQL的對應(yīng)逆向SQL。
變更相關(guān)人(選填)
設(shè)置的相關(guān)人員都可查看工單,并協(xié)同工作,非相關(guān)人員則不能查看工單(管理員、DBA除外)。
在工單詳情頁中,確認(rèn)工單詳情信息。
說明您可以在工單詳情頁中,查看工單的詳情信息,同時(shí)系統(tǒng)也會(huì)對將要執(zhí)行的SQL進(jìn)行執(zhí)行前的預(yù)檢查,包括SQL語法解析、安全規(guī)則中的SQL類型校驗(yàn)、工單提交人的權(quán)限檢查、預(yù)計(jì)檢查掃描行數(shù)等。
確認(rèn)信息無誤且預(yù)檢查通過后,單擊提交審批,并在彈窗中單擊確認(rèn)。
重要在提交審批前,您可以修改工單內(nèi)容,一旦提交審批后,將不能修改相關(guān)信息。
管理員審批工單。
以管理員賬號,登錄數(shù)據(jù)管理DMS 5.0。
在DMS控制臺首頁我的工單區(qū)域,單擊待處理工單。
在我的工單頁面,單擊目標(biāo)工單號。
在工單詳情頁,確認(rèn)工單變更信息,單擊同意。
在審批意見文本框中輸入具體意見,并單擊確定。
普通用戶執(zhí)行工單。
以普通用戶賬號,登錄數(shù)據(jù)管理DMS 5.0。
在工單詳情頁面的執(zhí)行區(qū)域,單擊執(zhí)行變更,在彈窗中配置如下信息,并單擊確定執(zhí)行。
配置項(xiàng)
說明
是否立即執(zhí)行
選擇是否立即執(zhí)行,支持:
立即執(zhí)行:提交即刻執(zhí)行。
定時(shí)執(zhí)行:按需指定在業(yè)務(wù)特定時(shí)間執(zhí)行。
默認(rèn)為立即執(zhí)行。
是否事務(wù)控制
選擇是否打開事務(wù)控制開關(guān):
打開:遇到失敗則全部回滾(僅支持DML語句,不支持DDL語句)。
關(guān)閉:逐條提交,遇到失敗則終止但不回滾。
默認(rèn)為關(guān)閉。
是否備份數(shù)據(jù)
選擇是否打開備份數(shù)據(jù)開關(guān):
打開:針對本次變更中被
UPDATE和
DELETE
語句影響的數(shù)據(jù),系統(tǒng)將生成對應(yīng)的INSERT
腳本,以對原數(shù)據(jù)進(jìn)行備份。關(guān)閉:不對上述數(shù)據(jù)生成備份腳本。
默認(rèn)為開啟。
說明單擊確定執(zhí)行后,系統(tǒng)將自動(dòng)開始執(zhí)行。
查看任務(wù)進(jìn)展并驗(yàn)證
以管理員賬號,單擊基本信息區(qū)域變更數(shù)據(jù)庫的名稱。在提示框中,單擊查詢。
頁面將自動(dòng)跳轉(zhuǎn)至SQL Console頁面。
在SQL Console窗口中,輸入查詢的SQL語句后,單擊執(zhí)行。
例如輸入查詢當(dāng)前數(shù)據(jù)庫下表的SQL語句。
SHOW TABLES;
說明系統(tǒng)在進(jìn)行無鎖結(jié)構(gòu)變更時(shí),生成了兩張臨時(shí)表。
在頂部菜單欄中,選擇 。
說明若您使用的是極簡模式的控制臺,請單擊控制臺左上角的圖標(biāo),選擇
。單擊目標(biāo)任務(wù)號,進(jìn)入任務(wù)執(zhí)行詳情頁。
單擊目標(biāo)任務(wù)操作列下的進(jìn)度按鈕。
在無鎖結(jié)構(gòu)變更頁,查看當(dāng)前的整體拷貝進(jìn)度。
變更完成后,對表結(jié)構(gòu)進(jìn)行驗(yàn)證。
big_table
的表結(jié)構(gòu)已變更,臨時(shí)表已被刪除。