日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

源庫存在觸發器時如何配置同步或遷移作業

當您同步實例的對象為整庫,且該數據庫中包含了會更新庫內某個表的觸發器(Trigger)時,可能會導致源庫和目標庫的數據不一致。本文介紹源庫存在觸發器的情況下如何正確地配置同步作業,以確保數據的一致性和完整性。

背景信息

若同步或遷移實例的源庫包含觸發器且實例滿足以下條件,請參考相關文檔同步或遷移觸發器,以確保源庫和目標庫的數據一致性。其他包含觸發器的同步或遷移實例,請參考本文進行操作。

源庫

目標庫

說明

相關文檔

無限制

PostgreSQL、PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)

  • 若實例使用的目標庫賬號有足夠的權限(高權限賬號或者super權限賬號),觸發器同步或遷移到目標庫后,DTS會以Session級別自動禁用該觸發器。

  • 若實例使用的目標庫賬號權限不足,您需要確保在實例運行期間目標數據庫中session_replication_role的參數值為replica

MySQL、PolarDB MySQL版、MariaDB

MySQL、PolarDB MySQL版、MariaDB

支持手動配置同步或遷移觸發器的方式。

配置同步或遷移觸發器的方式

SQL Server

SQL Server

實現流程

  1. 創建源庫到目標數據庫的遷移實例

    相關配置文檔,請參見遷移方案概覽

    重要
    • 遷移類型只需勾選庫表結構遷移

    • 源庫對象中選擇的粒度為數據庫或Schema。

  2. 登錄目標數據庫,刪除從源數據庫遷移過來的觸發器。

  3. 創建源庫到目標數據庫的同步或遷移實例。

    相關配置文檔,請參見同步方案概覽遷移方案概覽

    重要
    • 同步實例:同步類型默認已勾選增量同步,您只需勾選全量同步,請勿勾選庫表結構同步

    • 遷移實例:遷移類型勾選全量遷移增量遷移,請勿勾選庫表結構遷移

  4. (可選)數據傳輸完成后,結束或釋放實例。

    操作文檔,請參見結束DTS實例釋放DTS實例

    說明

    實例結束或釋放后,請根據業務需求手動在目標庫中添加觸發器。

案例介紹

說明

本操作以自建MySQL同步至RDS MySQL為例介紹配置流程。

數據準備

MySQL數據庫triggertestdata中存在了兩個表:parent和child。其中,表parent中有一個觸發器(定義:當INSERT一條數據到表parent之后,將其INSERT寫入的數據寫入一份至表child中)。

說明

表結構及觸發器定義如下表所示。

對象類型

名稱

結構語句

parent

CREATE TABLE `parent` (
  `user_vs_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`user_vs_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8

child

CREATE TABLE `child` (
  `sys_child_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_vs_id` int(11) DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`sys_child_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2001 DEFAULT CHARSET=utf8

觸發器

data_check

CREATE TRIGGER data_check
AFTER INSERT ON parent
FOR EACH ROW
insert into child(user_vs_id, name) values(new.user_vs_id, new.name) ;

在此案例中,如果在數據同步時,在源庫的表parent中執行了INSERT操作,將導致源和目標庫中的表child數據不一致。為解決該問題,需要刪除被遷移到目標庫中的觸發器。

操作步驟

  1. 創建一個數據遷移實例,將源庫的結構遷移至目標庫。

    1. 進入遷移任務的列表頁面。

      1. 登錄DMS數據管理服務

      2. 在頂部菜單欄中,單擊集成與開發

      3. 在左側導航欄,選擇數據傳輸(DTS) > 數據遷移

      說明
    2. 遷移任務右側,選擇遷移實例所屬地域。

      說明

      新版DTS遷移任務列表頁面,需要在頁面左上角選擇遷移實例所屬地域。

    3. 單擊創建任務,進入任務配置頁面。

    4. 配置源庫信息目標庫信息后,單擊頁面下方的測試連接以進行下一步

      參數說明等信息,請參見自建MySQL遷移至RDS MySQL

    5. 遷移類型選擇為庫表結構遷移,然后選擇待遷移的數據庫或Schema。

      image

    6. 根據業務需求,完成后續配置。

  2. 由于執行結構遷移時,觸發器也會被遷移至目標庫中。當遷移實例完成后,您需要登錄目標數據庫,執行如下命令刪除被遷移過去的觸發器。

    drop trigger <觸發器名稱>;

    示例:

    drop trigger data_check;
  3. 創建數據同步實例,將源庫的數據同步至目標庫中。

    1. 在左側導航欄,單擊數據同步

    2. 配置源庫信息目標庫信息后,單擊頁面下方的測試連接以進行下一步

      參數說明等信息,請參見自建MySQL同步至RDS MySQL

      說明

      同步實例配置的源庫和目標庫需與步驟1保持一致。

    3. 同步類型手動勾選全量同步

      說明
      • 同步對象需和步驟1中配置的遷移對象保持一致。

      • 同步類型默認已勾選增量同步,請勿勾選庫表結構同步

      image

    4. 根據業務需求,完成后續配置。

數據一致性測試

  1. 登錄源數據庫,在表parent中插入一條記錄。

    insert into parent values(1,'testname');

    執行該操作后,由于源庫觸發器的緣故,該條記錄也會被寫入至源庫的child表中。

  2. 登錄源和目標數據庫,查詢表child的數據,比對其數據是否一致。

    • 源庫查詢結果

      +--------------+------------+----------+
      | sys_child_id | user_vs_id | name     |
      +--------------+------------+----------+
      |         2001 |          1 | testname |
      +--------------+------------+----------+
    • 目標庫查詢結果

      +--------------+------------+----------+
      | sys_child_id | user_vs_id | name     |
      +--------------+------------+----------+
      |         2001 |          1 | testname |
      +--------------+------------+----------+

    經比對,數據一致。

后續操作

  1. 在數據同步需求完成后,結束步驟3創建的同步實例。

    更多信息,請參見結束DTS實例

  2. (可選)查看觸發器的創建語法。

    1. 找到步驟1創建的遷移實例。

    2. 單擊目標實例的ID。

    3. 任務管理頁面,單擊結構遷移2模塊。

    4. 任務詳情頁簽,單擊查看創建語法

  3. 登錄目標數據庫,手動添加觸發器。