全部產品
Search
文件中心

Data Management:普通資料變更

更新時間:Jun 30, 2024

您可以在DMS中通過SQL視窗直接輸入SQL文法或通過資料變更工單提交資料變更。同時,您可以自訂安全規則,實現對不同環境庫定義不同的資料變更執行配置。本文將通過以下4個例子向您介紹典型情境下的安全規則設定與對應提交資料變更的方式。

準備工作

  • 本文已通過DMS的結構設計功能在安全協同模式的poc_prod生產庫和poc_dev開發庫下建立data_modify表。您也可以通過DMS的SQL Console建立data_modify表,免提工單執行DDL語句的操作,請參見免提工單執行DML語句

    建表SQL語句

    CREATE TABLE `data_modify` (
     `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
     `name` varchar(256) NOT NULL COMMENT '姓名',
     `phone` varchar(32) DEFAULT NULL COMMENT '電話',
     `sex` varchar(32) DEFAULT NULL COMMENT '性別',
     `email` varchar(256) DEFAULT NULL COMMENT '郵箱',
     `remarks` varchar(1024) DEFAULT NULL COMMENT '備忘',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='個人資訊登記';
  • POC_prod執行個體關聯的安全規則為POC生產規則,POC_dev執行個體關聯的安全規則為POC開發規則。

通過提交工單執行普通資料變更

本樣本以提交工單的方式給poc_prod庫下的data_modify表中插入資料。

  1. 登入Data Management 5.0

  2. 在頂部功能表列中,選擇資料庫開發 > 資料變更 > 普通資料變更

    說明

    若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 資料庫開發 > 資料變更 > 普通資料變更

  3. 配置工單資訊。部分配置資訊說明如下:

    • SQL文本:輸入文法正確的、可直接執行的SQL語句。多條SQL之間,使用英文分號;隔開。

    • 附件:變更SQL附件與復原SQL附件僅支援.txt.zip.sql檔案類型,且最大不能超過15 MB。

  4. 單擊提交申請

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

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

    說明

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

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

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

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

    配置項

    說明

    執行策略

    選擇是否立即執行策略,支援如下:

    • 立即執行(預設):提交即刻執行。

    • 定時執行:指定特定時間開始執行任務。

    開啟整體事務

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

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

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

    開啟備份

    選擇是否開啟備份,預設開啟。

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

    • MongoDBRedis不支援備份資料。

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

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

        說明

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

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

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

  7. (可選)工單執行成功後,進入poc_prod資料庫的SQL視窗,查看資料變更是否符合預期。

設定開發庫免提工單執行DML語句

若開發庫的資料變更均需提交工單執行,會導致開發人員研發效能下降。您可以通過DMS內建的安全規則引擎,設定允許開發人員直接在SQL Console對開發庫執行DML語句,且不需要提交工單審批,即可實現在不影響資料安全的情況下提升研發效能。

本樣本以在SQL Console執行INSERT語句舉例。

  1. 調整poc_dev庫的安全規則POC開發庫規則。

    說明

    DMS預設的安全規則規定以工單的方式執行DML(Data Manipulation Language)語句。

    1. 以管理員帳號登入Data Management 5.0

    2. 在頂部功能表列中,選擇安全與規範 > 安全規則

      說明

      若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 安全規則

    3. 在安全規則列表中,單擊POC開發庫規則右側操作列下的編輯

    4. 在左側導航列表地區,單擊SQL變更檢測點選擇SQL執行規則

    5. 啟用允許所有DML在SQL控制台直接執行規則,並禁用禁止所有DML在SQL控制台直接執行,必須以工單方式執行規則。

  2. 給data_modify表中插入資料。

    1. 在首頁左側的資料庫執行個體地區,搜尋並單擊poc_dev資料庫。

    2. 在SQL Console中,輸入如下INSERT語句並單擊執行

      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','男');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','女');
      INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','男');
    3. 執行確認對話方塊中,單擊直接執行。出現執行成功提示表示安全規則調整成功。

設定生產庫的高風險SQL需提工單

DMS安全規則引擎可以根據SQL類型設定不同的審批次程序。例如生產庫中,DELETE語句會造成資料丟失,安全風險相對較大,可以為其設定更嚴格的審批次程序,確保資料安全。

本樣本以設定DELETE語句為高風險SQL,並指定執行DELETE語句工單的審批次程序舉例。

  1. 設定審批次程序。

    1. 以管理員帳號登入Data Management服務

    2. 在頂部功能表列中,選擇安全與規範 > 審批次程序

      說明

      若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 審批次程序

    3. 單擊新增審批模板,在新增審批模板面板中配置模板相關資訊。

      審批節點:單擊增加節點增加審批節點。審批順序從小到大,例如1為第一位審批節點,2為第二位審批節點。

    4. 配置完成後,單擊提交

  2. 設定安全規則。

    1. 在頂部功能表列中,選擇安全與規範 > 安全規則

      說明

      若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 安全規則

    2. 在安全規則列表中,單擊POC生產庫規則右側操作列下的編輯

    3. 詳情頁左側導覽列中,單擊SQL變更

    4. 檢測點選擇風險識別規則,單擊新增規則

    5. 新增規則 - SQL變更對話方塊中,配置規則資訊。

      部分配置資訊說明如下:

      配置項

      說明

      規則名稱(必填)

      建立規則名稱為生產環境,DELETE語句為高風險操作

      規則DSL(必填)

      輸入如下規則DSL:

      if
          @fac.env_type in ['product','pre']
          and
          @fac.sql_type in
          [ 'DELETE']
      then
          @act.mark_risk 'high' '高風險:線上環境,生產環境, DELETE語句為高風險操作'
      end
    6. 單擊提交

    7. 單擊生產環境,DELETE語句為高風險操作規則右側的啟用按鈕,並單擊確認

      單擊確認後,該規則會立即生效,即所有DELETE語句都會被識別為高風險操作。

    8. 檢測點選擇風險審批規則,選擇高風險審批次程序,單擊其右側的編輯

    9. 高風險審批次程序中規則DSL地區的模板ID修改為步驟1中建立的模板ID,並單擊提交

    10. 單擊高風險審批次程序規則右側的啟用按鈕,再單擊確認

  3. 執行DELETE語句。

    1. 在首頁左側的資料庫執行個體地區,搜尋並單擊poc_prod資料庫。

    2. 在SQL Console中,輸入如下DELETE語句並單擊執行

      DELETE FROM data_modify WHERE id = 1; 
    3. 執行結果地區顯示由於安全規則導致執行失敗,您可單擊申請資料變更,通過提交工單執行DELETE語句。

      說明

      在該生產庫中執行DELETE語句屬於高風險操作,需要提交工單且需要指定審批模板中的審批人通過後才可執行。

設定生產庫禁止執行TRUNCATE語句

TRUNCATE語句會直接清空表中所有資料,一般在生產庫中是不會執行的,如果執行的話會造成大量資料丟失的問題。您可以通過安全規則禁止TRUNCATE語句執行。

本樣本以禁止生產庫在SQL Console或提交工單執行TRUNCATE語句為例。

  1. 調整安全規則。

    1. 以管理員帳號登入Data Management控制台

    2. 在頂部功能表列中,選擇安全與規範 > 安全規則

      說明

      若您使用的是極簡模式的控制台,請單擊控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 安全與規範 > 安全規則

    3. 在安全規則列表中,單擊POC生產庫規則右側操作列下的編輯

    4. 在左側導覽列中,單擊SQL變更檢測點選擇SQL執行規則

    5. 找到允許TRUNCATE在SQL控制台直接執行規則名,單擊右側操作列下的編輯

    6. 將規則名修改為禁止TRUNCATE執行,並替換原規則DSL為如下DSL,再單擊提交

      if
          @fac.sql_type in
            ['TRUNCATE']
      then
          @act.forbid_execute
      end
      說明

      該段安全規則DSL表示禁止在SQL Console或提交工單執行TRUNCATE語句。更多安全規則文法介紹請參見安全規則DSL文法

    7. 單擊禁止TRUNCATE執行規則右側的啟用按鈕,並單擊確認

  2. 在SQL Console執行TRUNCATE語句。

    1. 在首頁左側的資料庫執行個體地區,搜尋並單擊poc_prod資料庫。

    2. 在SQL Console中,輸入如下TRUNCATE語句並單擊執行

      TRUNCATE TABLE `data_modify`;
    3. 顯示執行失敗。由於設定的安全規則,系統禁止在SQL Console執行TRUNCATE語句。

  3. 提交資料工單執行TRUNCATE語句。提交工單的操作,請參見通過提交工單執行普通資料變更

    說明

    在資料變更工單的變更SQL參數中填入如下SQL:

    TRUNCATE TABLE `data_modify`;

    提交工單後,系統將會顯示預檢查失敗,說明禁止通過提交工單執行TRUNCATE語句的安全規則已生效。