全部產品
Search
文件中心

ApsaraDB for OceanBase:配置匹配規則

更新時間:Jul 01, 2024

本文為您介紹遷移/同步對象匹配規則的背景資訊、使用限制、配置方式,以及情境樣本和常見問題。

背景資訊

您在建立資料移轉或資料同步專案時,需要指定具體的遷移或同步的對象。資料轉送提供指定對象、匯入對象和匹配規則三種方式供您選擇。其中匹配規則方式支援您通過編寫通配規則指定需要遷移或同步的對象,並且支援配置源端及目標端的對象映射邏輯,通過簡單、高效的字串匹配能力,可以有效地降低您在待遷移/同步對象數量眾多時的配置難度。同時,符合匹配規則的新增表可以通過增量 DDL 的方式自動同步至目標端。資料移轉增量 DDL 的詳情請參見 同步 DDL 的支援範圍和使用限制。 

資料轉送支援的通配規則及其要求如下。

說明

下方表格中的星號(*)表示通配規則。

類別

支援的通配規則

樣本

說明

庫表平遷

*.*

kd_test*.person*

將源端 kd_test 開頭的所有庫下 person 開頭的所有表遷移至目標端,庫名、表名保持不變。

*.<源端表>

kd_test*.person

將源端 kd_test 開頭的所有庫下 person 表遷移至目標端,庫名、表名保持不變。

<源端庫>.*

kd_test.person*

將源端名為 kd_test 的庫下 person 開頭的所有表遷移至目標端,庫名、表名保持不變。

<源端庫>.<源端表>

kd_test.person

將源端名為 kd_test 的庫下名為 person 的表遷移至目標端,庫名、表名保持不變。

庫表重新命名

<源端庫>.<源端表>=<目標端庫>.<目標端表>

kd_test.person=kd_test_new.person_new

將源端名為 kd_test 的庫下名為 person 的表遷移至目標端,並且將庫 kd_test 重新命名為 kd_test_new,表 person 重新命名為 person_new。

<源端庫>.*=<目標端庫>.*

kd_test.person*=kd_test_new.person*

將源端名為 kd_test 的庫下 person 開頭的所有表遷移至目標端,並且將庫 kd_test 重新命名為 kd_test_new,表名保持不變。

*.<源端表>=*.<目標端表>

kd_test*.person=kd_test*.person_new

將源端 kd_test 開頭的所有庫下名為 person 的表遷移至目標端,並且將表 person 重新命名為 person_new,庫名保持不變。

庫表匯聚

<源端庫>.*=<目標端庫>.<目標端表>

kd_test.person*=kd_test.person_all

將源端名為 kd_test 的庫下 person 開頭的所有表匯聚至目標端庫 kd_test 下的表 person_all 中。

*.<源端表>=<目標端庫>.<目標端表>

kd_test*.person=kd_test_all.person

將源端以 kd_test 開頭的所有庫下名為 person 的表匯聚至目標端庫 kd_test_all 下的表 person 中。

*.*=<目標端庫>.<目標端表>

kd_test*.person*=kd_test_all.person_all

將源端以 kd_test 開頭的所有庫下以 person 開頭的所有表匯聚至目標端庫 kd_test_all 下的表 person_all 中。

*.*=<目標端庫>.*

kd_test*.person*=kd_test_all.person*

將源端以 kd_test 開頭的所有庫下以 person 開頭的所有表匯聚至目標端庫 kd_test_all 下,表名保持不變。

*.*=*.<目標端表>

kd_test*.person*=kd_test*.person_all

將源端以 kd_test 開頭的所有庫下以 person 開頭的所有表匯聚至目標端以 kd_test 開頭的庫下的表 person_all 中,庫名保持不變。

通配規則要求如下:

  • 目標端的庫名和表名不允許同時為通配規則。例如,kd_test*.person*=kd_test*.person*

  • 如果源端庫和目標端庫均為通配規則,則庫層級的運算式必須完全一樣,表示庫平遷。

  • 如果源端表和目標端表均為通配規則,則表層級的運算式必須完全一樣,表示表平遷。

  • 如果目標端庫為通配規則,則源端庫必須也為通配規則。

  • 如果目標端表為通配規則,則源端表必須也為通配規則。

使用限制

  • 資料同步專案中,僅資料庫至資料庫同步支援通過配置匹配規則的方式選擇同步對象。

  • 資料轉送允許輸入多條規則,但需要注意每條規則不能跨行且前後不允許有空格。

  • 遷移或同步對象規則不允許為空白,排除對象規則允許為空白。

  • 資料轉送不支援在結構遷移、全量遷移期間進行 DDL 變更。

  • 通過匹配規則的方式選擇遷移或同步對象時,資料轉送不支援表名包含特殊字元(包括換行、空格,以及 .|"'`()=;/&*?[][!])。

  • 資料轉送不支援通過多條匹配規則,將源端同一個庫下的不同表映射至目標端的不同庫下。例如,a.a* = b.a* & a.b* = c.b*

  • 存在庫或表匯聚的情境下,不支援反向增量。

    說明

    資料轉送僅在儲存或啟動資料移轉/資料同步專案時,根據已有的庫表是否存在匯聚情境進行判斷。如果在專案運行過程中新出現庫表匯聚的情境,則不會被資料轉送攔截,可能出現反向增量無法正確識別庫表映射關係,導致資料品質問題。

  • 資料轉送暫不支援 CREATE DATBASE 的 DDL 語句。如果建立的庫名在遷移/同步的匹配規則內,您需要手動在目標端建立資料庫才能繼續新增庫的資料同步。

注意事項

  • 當您完成配置遷移/同步對象規則和排除對象規則後,如果源端表名在遷移/同步對象規則和排除對象規則的差集內,則相關對象可以被選擇。

    說明

    差集是指對於給定的兩個集合,返回一個包含所有存在於第一個集合但不存在於第二個集合的元素的新集合。

  • 開啟同步 DDL 功能後,當您使用 DDL 語句在源端建立一張新表或者修改一張表結構時,如果對應的表名在遷移/同步對象規則和排除對象規則的差集內,則該 DDL 語句可以被資料轉送同步至目標端。

  • 庫表匯聚情境下:

    • 建議您使用匯入對象或匹配規則的方式映射源端和目標端的關係。

    • 建議您自行在目標端建立表結構。如果使用資料轉送建立,請在結構遷移步驟跳過部分失敗對象。

    • 如果您在庫或表匯聚的情境下勾選了 DDL 同步,可能存在誤刪風險。例如,源端多個庫或表匯聚至目標端的一個庫或表中。此時,刪除源端的一個庫或表,可能導致目標端的匯聚庫或表被刪除。

    • 您在建立資料移轉或資料同步專案時,請配置 全量遷移目標端對象存在記錄時處理策略 為 忽略

      說明

      選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端多資料的情境,並且校正效能存在一定程度降級。

  • 如果表存在重新命名映射,則優先重新命名映射。例如,同時存在規則 a.b[0-3]a.b[3-5]=a.c,則表 a.b3 重新命名為 a.c

  • 執行 RENAME TABLE 的 DDL 語句時,如果 RENAME 後的表對象不在原匹配規則或排除規則內,可能導致非預期同步問題,請謹慎操作。

配置匹配規則

  1. 建立資料移轉或資料同步專案,並配置至 選擇遷移對象 選擇同步對象 步驟。

    詳情請參見相應類型的 資料移轉資料同步 專案文檔。

    說明
  2. 選擇遷移對象 頁面,選擇當前資料移轉專案的遷移對象。

    您可以通過 指定對象匹配規則 兩個入口選擇遷移對象,本文僅為您介紹如何配置匹配規則。

    1. 勾選 匹配規則

      image

    2. 選擇遷移範圍 地區,輸入 遷移對象規則排除對象規則(可選)。支援的匹配規則詳情請參見 萬用字元規則說明

      說明

      如果您配置的規則中包含空格,可能導致遷移或同步對象有誤。

    3. 單擊 校正

      如果您需要查看匹配結果,請在校正成功後單擊 預覽對象 進行查看。您填寫的通配遷移對象規則和排除對象規則,會同時應用於表和視圖。匹配結果 包括最終對象、新增對象和減少對象。

      對象

      描述

      最終對象

      配置的匹配規則最終匹配的遷移對象。

      新增對象

      最終匹配結果和前一次配置的匹配結果相比,新增的遷移對象。

      減少對象

      最終匹配結果和前一次配置的匹配結果相比,減少的遷移對象。

  3. 根據提示完成後續的專案配置。

情境樣本

庫表平遷

將源端 jenkins_api 開頭的所有庫下,以 test 開頭的所有表遷移至目標端,庫名、表名保持不變。匹配規則的配置如下。

image.png

庫表重新命名

將源端名為 jenkins_my2dh_one 的庫下,以 test 開頭的所有表遷移至目標端,並且將庫 jenkins_my2dh_one 重新命名為 jenkins_my2dh_one_new,表名保持不變。匹配規則的配置如下。

image.png

庫表匯聚

將源端以 jenkins_api 開頭的所有庫下,以 order 開頭的所有表匯聚至目標端庫 jenkins_api_all 下的表 order 中。匹配規則的配置如下。

截屏2023-12-04 18.33.49.png

配置排除對象規則

設定無需同步源端名為 jenkins_api_mysql56 的庫下的歷史表和日誌表,且歷史表以 "history_" 開頭,日誌表以 log 結尾。匹配規則的配置如下。

image.png

常見問題

  • 許可權不足

    請注意源端使用者的使用權限設定問題。如果您授予使用者的許可權不足,部分對象未被資料轉送從前端展示出來,會導致您不能正確配置匹配規則。因此您需要將未授予許可權的對象加入 排除對象規則,以避免資料轉送因無法找到目標端對象而造成資料移轉或資料同步專案中斷。

  • 不支援過濾 DML

    在未開啟同步 DDL 的情況下,資料轉送允許使用匹配規則的方式選擇對象。在增量同步處理的過程中,如果建立表滿足匹配規則,相關的 DDL 語句會被忽略,但資料轉送會繼續同步 DML 語句,這樣會造成無法寫入目標端對象而造成資料移轉或資料同步專案中斷,因此您需要在目標端建立表或者將表加入黑名單。