DMS普通數據變更功能支持直接執行或定時執行SQL語句來修改數據庫中的數據,例如INSERT、UPDATE、DELETE、TRUNCATE等SQL。本文介紹如何提交普通數據變更工單。
操作概覽
配置并提交普通數據變更工單
選擇需要變更的數據庫或實例,填入變更SQL或上傳SQL附件。
預檢查
在預檢查階段,DMS會主動校驗您提交的SQL是否符合普通數據變更的類型、是否有執行該變更SQL的權限等。
審批工單
在審批階段DMS會檢查待執行的SQL是否會影響數據庫性能,以及是否允許提交工單者執行此SQL等。
執行數據變更
執行提交的變更SQL。如果變更有誤或業務需要回滾SQL,DMS支持在變更完成后,快速創建回滾工單以恢復原數據。
前提條件
實例的管控模式為穩定變更或安全協同模式。更多信息,請參見管控模式。
注意事項
無論工單審批通過與否均可關閉工單,避免審批通過后誤執行工單任務。
建議您在測試環境執行數據變更也通過工單進行管理。通過工單進行變更會有數據備份、行數校驗等保障,如果操作不符合預期可以快速恢復。
說明如果擔心審批工單影響研發效率,可以設置無審批。具體操作,請參見SQL變更。
如果已配置邏輯庫、邏輯表、路由算法,您可以通過一個工單便捷的提交分庫分表的變更操作,無需逐個物理庫表提交。
帶路由算法配置且更新條件帶路由字段的書寫,可快速根據條件自動路由到具體物理庫表執行。
若不帶路由算法配置或變更條件里不帶路由字段、路由字段書寫類型與結構定義不符合這三種場景會造成SQL在每一個分庫分表上逐一執行,執行時間會較久。
僅在執行
UPDATE
、DELETE
語句前,DMS才會自動生成對應的備份腳本附件。
操作步驟
步驟一:配置并提交工單
- 登錄數據管理DMS 5.0。
單擊控制臺左上角的圖標,選擇
。說明若您使用的是非極簡模式的控制臺,在頂部菜單欄中,選擇
。在數據變更工單申請頁面,配置工單參數。部分參數說明如下:
說明以安全協同實例舉例配置。若選擇穩定變更實例,則在配置時參數會略有差異。
數據源實例變更功能正在逐步灰度中。
配置項
是否必填
說明
變更目標
是
支持數據庫和數據源實例。
說明目前數據源實例的變更僅支持選擇如下類型的MySQL實例:RDS MySQL、PolarDB MySQL版和AnalyticDB for MySQL。
數據庫或數據源實例
是
搜索并選擇有變更權限的數據庫或實例。
說明目前數據源實例變更僅支持選擇單個實例。
原因類別
是
選擇數據變更的原因,方便后續查找。
說明管理員可以在配置管理。
中,配置原因類別列表。具體操作,請參見業務背景
是
詳細描述變更原因或目標,以減少溝通成本。
執行方式
是
選擇工單的執行方式:
審批通過后,提交者執行。
審批通過后,自動執行。
最后一個審批人執行。
說明管理員可以在配置管理。
中,修改執行方式列表。具體操作,請參見影響行數
是
預估本次變更會影響的數據行數。
變更SQL
是
您可選擇文本或附件。
SQL文本
是
若變更SQL選擇了文本,才會出現該配置項。在SQL文本框中,輸入可直接執行的SQL語句。
說明多條SQL之間,請用英文分號(;)隔開。
當變更目標為實例時,SQL中的所有表名前需要加上庫名,格式為
${dbName}.${tableName}
。提交工單時會自動校驗SQL語法正確性,不正確則無法提交。
附件
是
若變更SQL選擇了附件,才會出現該配置項。上傳變更SQL附件。
說明附件僅支持.txt、.zip和.sql的文件類型,最大不能超過15 MB。
回滾SQL
否
您可選擇文本或附件。
說明僅在您輸入回滾SQL或上傳回滾文件的情況下,DMS才會在創建回滾工單時自動為您填寫回滾SQL信息,否則您需要自行填寫。
SQL文本
否
若回滾SQL選擇了文本,才會出現該配置項。輸入回滾SQL,回滾SQL為變更SQL對應的逆向腳本。
附件
否
若回滾SQL選擇了附件,才會出現該配置項。單擊上傳文件,上傳回滾SQL附件。
說明附件僅支持.txt、.zip和.sql的文件類型,最大不能超過15 MB。
變更相關人
否
設置的相關人員都可查看工單,并協同工作,非相關人員則不能查看工單(管理員、DBA除外)。
工單附件
否
上傳工單附件,補充當前工單信息。
單擊提交申請。
步驟二:預檢查SQL
提交工單后,系統會自動進行預檢查,如果預檢查沒有通過,請根據提示修改SQL,然后重試。
步驟三:審批工單
預檢查通過后,單擊提交審批,在提示對話框中單擊確認。
數據變更默認審批模板的審批人為DBA。更改默認審批模板,請參見修改默認審批模板。
步驟四:執行變更
請盡量在業務低峰期執行變更。
審批通過后,單擊執行變更,在任務設置對話框中設置任務執行參數,并單擊確定執行。
說明創建工單時,如果執行方式選擇審批通過后,自動執行,系統會自動跳過此步驟。
已暫停的任務重啟后,將從暫停位置繼續執行腳本。
配置項
說明
執行策略
選擇執行策略:
立即執行:單擊確定執行后,立即執行工單任務。
定時執行:指定任務開始執行的時間。例如,在2024年05月22日00:00:00執行任務。
開啟整體事務
選擇是否開啟整體事務,默認關閉。
開啟:執行失敗則全部回滾(僅限DML,DDL不在范圍內)。
關閉:逐條提交SQL任務,執行失敗則終止任務,但不回滾。
開啟備份
選擇是否開啟備份,默認開啟。開啟后,后續您才可以使用備份文件快速恢復數據。
說明僅執行UPDATE和DELETE語句時,支持備份數據。
MongoDB和Redis不支持備份數據。
開啟:執行
UPDATE
、DELETE
語句前,系統自動生成對應的備份腳本附件。如果數據庫類型為MySQL和MariaDB,生成
REPLACE INTO
備份語句。說明MySQL包括:RDS MySQL、PolarDB MySQL版、PolarDB分布式版、其他來源MySQL。
如果數據庫類型為除MySQL、MariaDB外的其他引擎,生成
INSERT
備份語句。
關閉:不生成備份附件。
說明SQL任務的執行會受到安全規則中SQL執行控制模塊的監控,例如SQL執行前數據庫鎖超時機制、數據庫負載檢查、SQL執行后Sleep策略等。如需修改默認的檢測點設置,請參考配置SQL執行控制。
工單執行成功后,在操作列單擊詳情,可查看工單執行狀態、執行次數、影響行數、執行腳本、日志等信息。
工單執行成功后,您可以進入目標數據庫的SQL窗口,查看數據變更是否符合預期。
可選:快速創建回滾工單并恢復原數據。
若數據變更不符合預期,可通過創建回滾工單或手動提交普通數據變更工單,以快速恢復原數據。如下為您演示如何創建回滾工單:
在工單執行區域,單擊目標任務右側的生成回滾工單。
選擇回滾來源,單擊確認。目前支持如下三種回滾來源:
回滾文本:在配置工單信息時,預填寫的回滾文本。
回滾附件:在配置工單信息時,預上傳的回滾附件。
備份文件:工單執行過程中產生的備份附件。
說明使用備份文件恢復原數據的前提是:在執行變更前開啟備份。
(可選):按需修改回滾文本、附件或備份文件。
回滾文本:可以直接在SQL文本框中修改。
回滾附件或備份文件:首先將附件下載到本地,再進行修改,最后重新上傳至回滾工單。
確認回滾信息無誤后,單擊提交申請。后續工單流程與普通數據變更工單流程相同。
下載備份文件。
當您需要保存備份文件或者需要修改后上傳備份文件至DMS時,請下載備份文件。
在操作列,單擊下載備份。備份文件主要包含以下幾部分內容:
變更的原始SQL語句。
數據變更的查詢SQL語句。
數據變更備份SQL。
例如:
/* [Database]: rds@rm-bp144d5ky4l4rli0417****.mysql.rds.aliyuncs.com:3306【rds mysql】 */ /* [SQL]: UPDATE t_order SET product_id = 88 WHERE id = 10054 [BACKUP SQL]: SELECT * FROM t_order WHERE id = 10054 */ REPLACE INTO `t_order`(`id`,`product_id`,`gmt_create`,`gmt_modified`,`customer_id`,`price`,`status`,`province`) VALUES (10054,81,'2021-12-14 09:44:44','2021-12-14 09:44:44',71,63.45,'Success','杭州');
在備份文件中提取備份語句,確認備份語句無誤后,重新提交普通數據變更工單并根據實際情況進行數據恢復。
說明如果是
UPDATE
語句的誤操作,且備份語句為INSERT
,需要自行確認恢復的方式。
(可選)驗證變更是否符合預期。
在工單詳情頁的基本信息區域,將鼠標懸浮在數據庫名稱上,單擊查詢。
跳轉至SQL Console查詢表數據是否符合預期。