全部產品
Search
文件中心

:影子表同步

更新時間:Jun 30, 2024

Data Management的影子表同步功能支援根據源表的表結構自動在當前庫中建立影子表(新的資料表名是通過在源表名上增加首碼或尾碼的方式產生的),支援周期性同步,適用於全鏈路壓測等情境。

前提條件

  • 支援的資料庫類型如下:

    • MySQL:RDS MySQLPolarDB MySQL版MyBase MySQLPolarDB分布式版AnalyticDB MySQL 3.0、其他來源MySQL

    • SQL Server:RDS SQL ServerMyBase SQL Server、其他來源SQL Server

    • PostgreSQL:RDS PostgreSQLPolarDB PostgreSQL版MyBase PostgreSQLAnalyticDB for PostgreSQL、其他來源PostgreSQL

    • MariaDB:RDS MariaDB、其他來源MariaDB

    • OceanBase MySQL模式

    • PolarDB PostgreSQL版(相容Oracle)

  • 擁有來源庫的查詢與變更許可權。更多資訊,請參見查看我的許可權

  • 來源庫已開啟開啟執行能力開關。更多資訊,請參見開啟執行能力

    說明

    若未開啟,庫表同步僅能對比表結構差異,無SQL執行能力。

操作步驟

  1. 登入Data Management 5.0
  2. 在頂部功能表列中,選擇資料庫開發 > 結構變更 > 影子表同步

    說明

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

  3. 庫表同步工單申請頁面,配置工單參數。部分參數說明如下:

    參數

    說明

    來源庫

    搜尋並選擇建立影子表的來源庫。

    說明

    您需要有該庫的查詢與變更許可權。更多資訊,請參見查看我的許可權

    首碼 / 尾碼

    支援以“首碼+源表名”(預設)或“源表名+尾碼”的格式建立影子表名稱,並且支援自訂前、尾碼。

    影子表名預設為__test_源表名

    同步的表

    選擇需要同步的表:

    • 部分表:選定的表在當前庫中建立影子表。

    • 全部表:來源庫中所有的表都會在當前庫中建立影子表。

    同步策略

    選擇同步的頻率,支援的選項:

    • 立即同步:立即執行同步任務(僅同步一次)。

    • 定時同步:定期定時執行同步任務。您可以根據需求配置Crontab運算式。更多資訊,請參見Crontab運算式

      任務最小時間間隔為1小時,預設每天02:00執行任務。

    是否忽略報錯

    選擇是否忽略報錯,支援的選項:

    • 不忽略:在執行過程中,遇到出錯則中斷後面的SQL指令碼,不再執行。

    • 忽略:在執行過程中,遇到錯誤會跳過當前失敗SQL指令碼,繼續往下執行,並執行完所有SQL指令碼。

  4. 單擊提交申請
    系統將進行結構分析。
    說明 若資料結構在此過程中發生變更,請在工單中單擊重新分析
  5. 單擊提交審批,等待審批通過。
  6. 單擊提交,同步目標庫
  7. 確認待執行的SQL指令碼,單擊確認進行同步
    單擊後,系統將開始執行同步指令碼,您可以單擊詳情按鈕,查看執行日誌詳細,包括執行語句、執行所用時間、調度詳情等資訊。

Crontab運算式

時間間隔的單位可以是秒、分鐘、小時、日、周或月的任意組合。Crontab運算式是一組字串,由5個空格隔開,6個域組合而成,取值說明如下:

允許的數值

允許的特殊字元

備忘

0-59

- * /

-

0-59

- * /

-

小時

0-23

- * /

-

日期

1-31

- * ? / L W C

-

月份

1-12

JAN~DEC - * /

-

星期

1-7

SUN~SAT - * ? / L C #

1表示星期天,2表示星期一,依次類推。

說明

日期和星期兩個域,僅能二選一,因為這兩個域會相互影響。若指定了日期域,請在星期域中填入?,反之相同。

特殊字元的含義說明:

字元

含義

樣本

*

表示匹配域的所有值。

在分域使用 *,表示每分鐘都會觸發事件。

?

表示匹配域的任意值,但只能用在日期和星期兩個域,因為這兩個域會相互影響。

在每月的20號觸發調度的寫法:13 13 15 20 * ?

說明

日期域已指定了20號,最後一位星期域只能用?,不能使用*

-

表示起止範圍。

在分域使用5-20,表示在指定小時的第5分鐘到第20分鐘, 每分鐘觸發一次事件。

/

表示起始時間開始觸發,然後每隔固定時間觸發一次。

在分域使用 5/20,表示在指定小時的第5分鐘觸發一次事件,然後每隔20分鐘觸發一次事件。例如,第二次觸發事件的時間是指定小時的第25分鐘。

,

表示列出枚舉值。

在分域使用5,20,表示在指定小時的第5分鐘和第20分鐘分別觸發一次事件。

L

表示最後,只能出現在日和星期兩個域。

在星期域使用5L,表示在指定月份的最後一個星期四觸發事件。

W

表示有效工作日(周一到周五),只能出現在日這個域,系統將在離指定日期最近的有效工作日觸發事件。

在日域使用5W:

  • 如果指定月份的第5日為工作日,事件在5日觸發,且僅在指定月份生效。

  • 如果指定月份的第5日為星期六,最近的工作日為星期五,即事件在指定月份的4日觸發。

  • 如果指定月份的第5日為星期日,則事件在指定月份的6日(周一)觸發。

LW

這兩個字元可以連用,表示在某個月最後一個工作日。

#

表示每個月第幾個星期幾,只能出現在星期這個域。

在星期域使用4#2,表示在指定月份的第二個星期三觸發事件。

  • 4表示星期三。

  • 2表示指定月份的第二個星期。

Crontab運算式樣本:

  • 每星期六、星期日的23:00執行:0 0 23 ? * 7,1

  • 每月5、15、25日的09:30執行:0 30 9 5,15,25 * ?

  • 每隔兩天的零點執行:0 0 0 */2 * ?