全部產品
Search
文件中心

:普通資料變更

更新時間:Dec 20, 2024

DMS普通資料變更功能支援直接執行或定時執行SQL語句來修改資料庫中的資料,例如INSERT、UPDATE、DELETE、TRUNCATE等SQL。本文介紹如何提交普通資料變更工單。

操作概覽

  1. 配置並提交普通資料變更工單

    選擇需要變更的資料庫或執行個體,填入變更SQL或上傳SQL附件。

  2. 預檢查

    在預檢查階段,DMS會主動校正您提交的SQL是否符合普通資料變更的類型、是否有執行該變更SQL的許可權等。

  3. 審批工單

    在審批階段DMS會檢查待執行的SQL是否會影響資料庫效能,以及是否允許提交工單者執行此SQL等。

  4. 執行資料變更

    執行提交的變更SQL。如果變更有誤或業務需要復原SQL,DMS支援在變更完成後,快速建立復原工單以恢複原資料。

前提條件

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

注意事項

  • 無論工單審批通過與否均可關閉工單,避免審批通過後誤執行工單任務。

  • 建議您在測試環境執行資料變更也通過工單進行管理。通過工單進行變更會有資料備份、行數校正等保障,如果操作不符合預期可以快速恢複。

    說明

    如果擔心審批工單影響研發效率,可以設定無審批。具體操作,請參見SQL變更

  • 如果已配置邏輯庫邏輯表路由演算法,您可以通過一個工單便捷的提交分庫分表的變更操作,無需逐個物理庫表提交。

    • 帶路由演算法配置且更新條件帶路由欄位的書寫,可快速根據條件自動路由到具體物理庫表執行。

    • 若不帶路由演算法配置或變更條件裡不帶路由欄位、路由欄位書寫類型與結構定義不符合這三種情境會造成SQL在每一個分庫分表上逐一執行,執行時間會較久。

  • 僅在執行UPDATEDELETE語句前,DMS才會自動產生對應的備份指令碼附件。

操作步驟

步驟一:配置並提交工單

  1. 登入Data Management 5.0
  2. 單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 資料庫開發 > 資料變更 > 普通資料變更

    說明

    若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇資料庫開發 > 資料變更 > 普通資料變更

  3. 資料變更工單申請頁面,配置工單參數。部分參數說明如下:

    說明
    • 以安全協同執行個體舉例配置。若選擇穩定變更執行個體,則在配置時參數會略有差異。

    • 資料來源執行個體變更功能正在逐步灰階中。

    配置項

    是否必填

    說明

    變更目標

    支援資料庫資料來源執行個體

    說明

    目前資料來源執行個體的變更僅支援選擇如下類型的MySQL執行個體:RDS MySQLPolarDB 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除外)。

    工單附件

    上傳工單附件,補充當前工單資訊。

  4. 單擊提交申請

步驟二:預檢查SQL

提交工單後,系統會自動進行預檢查,如果預檢查沒有通過,請根據提示修改SQL,然後重試。

image

步驟三:審批工單

預檢查通過後,單擊提交審批,在提示對話方塊中單擊確認

說明

資料變更預設審批模板的審批人為DBA。更改預設審批模板,請參見修改預設審批模板

image

步驟四:執行變更

重要

請盡量在業務低峰期執行變更。

  1. 審批通過後,單擊執行變更,在任務設定對話方塊中設定任務執行參數,並單擊確定執行

    說明
    • 建立工單時,如果執行方式選擇審批通過後,自動執行,系統會自動跳過此步驟。

    • 已暫停任務重啟後,將從暫停位置繼續執行指令碼。

    配置項

    說明

    執行策略

    選擇執行策略:

    • 立即執行:單擊確定執行後,立即執行工單任務。

    • 定時執行:指定任務開始執行的時間。例如,在2024年05月22日00:00:00執行任務。

    開啟整體事務

    選擇是否開啟整體事務,預設關閉。

    • 開啟:執行失敗則全部復原(僅限DML,DDL不在範圍內)。

    • 關閉:逐條提交SQL任務,執行失敗則終止任務,但不復原。

    開啟備份

    選擇是否開啟備份,預設開啟。開啟後,後續您才可以使用備份檔案快速恢複資料。

    說明
    • 僅執行UPDATE和DELETE語句時,支援備份資料。

    • MongoDB和Redis不支援備份資料。

    • 開啟:執行UPDATEDELETE語句前,系統自動產生對應的備份指令碼附件。

      • 如果資料庫類型為MySQL和MariaDB,產生REPLACE INTO備份語句。

        說明

        MySQL包括:RDS MySQLPolarDB MySQL版PolarDB分布式版、其他來源MySQL。

      • 如果資料庫類型為除MySQL、MariaDB外的其他引擎,產生INSERT備份語句。

    • 關閉:不產生備份附件。

    說明

    SQL任務的執行會受到安全規則SQL執行控制模組的監控,例如SQL執行前資料庫鎖逾時機制、資料庫負載檢查、SQL執行後Sleep策略等。如需修改預設的檢測點設定,請參考配置SQL執行控制

    • 工單執行成功後,在操作列單擊詳情,可查看工單執行狀態、執行次數、影響行數、執行指令碼、日誌等資訊。

    • 工單執行成功後,您可以進入目標資料庫的SQL視窗,查看資料變更是否符合預期。

  2. 可選:快速建立復原工單並恢複原資料。

    若資料變更不符合預期,可通過建立復原工單或手動提交普通資料變更工單,以快速恢複原資料。如下為您示範如何建立復原工單:

    1. 在工單執行地區,單擊目標任務右側的產生復原工單

    2. 選擇復原來源,單擊確認。目前支援如下三種復原來源:

      • 復原文本:在配置工單資訊時,預填寫的復原文本。

      • 復原附件:在配置工單資訊時,預上傳的復原附件。

      • 備份檔案:工單執行過程中產生的備份附件。

        說明

        使用備份檔案恢複原資料的前提是:在執行變更前開啟備份。

    3. (可選):按需修改復原文本、附件或備份檔案。

      • 復原文本:可以直接在SQL文字框中修改。

      • 復原附件或備份檔案:首先將附件下載到本地,再進行修改,最後重新上傳至復原工單。

    4. 確認復原資訊無誤後,單擊提交申請。後續工單流程與普通資料變更工單流程相同。

  3. 下載備份檔案。

    當您需要儲存備份檔案或者需要修改後上傳備份檔案至DMS時,請下載備份檔案。

    1. 在操作列,單擊下載備份。備份檔案主要包含以下幾部分內容:

      • 變更的原始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','杭州');
                                          
    2. 在備份檔案中提取備份語句,確認備份語句無誤後,重新提交普通資料變更工單並根據實際情況進行資料恢複。

      說明

      如果是UPDATE語句的誤操作,且備份語句為INSERT,需要自行確認恢複的方式。

  4. (可選)驗證變更是否符合預期。

    1. 在工單詳情頁的基本資料地區,將滑鼠懸浮在資料庫名稱上,單擊查詢

      image

    2. 跳轉至SQL Console查詢表資料是否符合預期。