影子表同步
數(shù)據(jù)管理DMS的影子表同步功能支持根據(jù)源表的表結(jié)構(gòu)自動在當(dāng)前庫中創(chuàng)建影子表(新的數(shù)據(jù)表名是通過在源表名上增加前綴或后綴的方式生成的),支持周期性同步,適用于全鏈路壓測等場景。
前提條件
支持的數(shù)據(jù)庫類型如下:
MySQL:RDS MySQL、PolarDB MySQL版、MyBase MySQL、PolarDB分布式版、AnalyticDB MySQL 3.0、其他來源MySQL
SQL Server:RDS SQL Server、MyBase SQL Server、其他來源SQL Server
PostgreSQL:RDS PostgreSQL、PolarDB PostgreSQL版、MyBase PostgreSQL、AnalyticDB PostgreSQL版、其他來源PostgreSQL
MariaDB:RDS MariaDB、其他來源MariaDB
OceanBase MySQL模式
PolarDB PostgreSQL版(兼容Oracle)
擁有來源庫的查詢與變更權(quán)限。更多信息,請參見查看我的權(quán)限。
來源庫已打開開啟執(zhí)行能力開關(guān)。更多信息,請參見開啟執(zhí)行能力。
說明若未開啟,庫表同步僅能對比表結(jié)構(gòu)差異,無SQL執(zhí)行能力。
操作步驟
- 登錄數(shù)據(jù)管理DMS 5.0。
在頂部菜單欄中,選擇 。
說明若您使用的是極簡模式的控制臺,請單擊控制臺左上角的圖標(biāo),選擇
。在庫表同步工單申請頁面,配置工單參數(shù)。部分參數(shù)說明如下:
參數(shù)
說明
來源庫
搜索并選擇創(chuàng)建影子表的來源庫。
說明您需要有該庫的查詢與變更權(quán)限。更多信息,請參見查看我的權(quán)限。
前綴 / 后綴
支持以“前綴+源表名”(默認(rèn))或“源表名+后綴”的格式創(chuàng)建影子表名稱,并且支持自定義前、后綴。
影子表名默認(rèn)為
__test_源表名
。同步的表
選擇需要同步的表:
部分表:選定的表在當(dāng)前庫中創(chuàng)建影子表。
全部表:來源庫中所有的表都會在當(dāng)前庫中創(chuàng)建影子表。
同步策略
選擇同步的頻率,支持的選項:
立即同步:立即執(zhí)行同步任務(wù)(僅同步一次)。
定時同步:定期定時執(zhí)行同步任務(wù)。您可以根據(jù)需求配置Crontab表達(dá)式。更多信息,請參見Crontab表達(dá)式。
任務(wù)最小時間間隔為1小時,默認(rèn)每天02:00執(zhí)行任務(wù)。
是否忽略報錯
選擇是否忽略報錯,支持的選項:
不忽略:在執(zhí)行過程中,遇到出錯則中斷后面的SQL腳本,不再執(zhí)行。
忽略:在執(zhí)行過程中,遇到錯誤會跳過當(dāng)前失敗SQL腳本,繼續(xù)往下執(zhí)行,并執(zhí)行完所有SQL腳本。
- 單擊提交申請。系統(tǒng)將進(jìn)行結(jié)構(gòu)分析。說明 若數(shù)據(jù)結(jié)構(gòu)在此過程中發(fā)生變更,請在工單中單擊重新分析。
- 單擊提交審批,等待審批通過。
- 單擊提交,同步目標(biāo)庫。
- 確認(rèn)待執(zhí)行的SQL腳本,單擊確認(rèn)進(jìn)行同步。單擊后,系統(tǒng)將開始執(zhí)行同步腳本,您可以單擊詳情按鈕,查看執(zhí)行日志詳細(xì),包括執(zhí)行語句、執(zhí)行所用時間、調(diào)度詳情等信息。
Crontab表達(dá)式
時間間隔的單位可以是秒、分鐘、小時、日、周或月的任意組合。Crontab表達(dá)式是一組字符串,由5個空格隔開,6個域組合而成,取值說明如下:
域 | 允許的數(shù)值 | 允許的特殊字符 | 備注 |
秒 | 0-59 | - * / | - |
分 | 0-59 | - * / | - |
小時 | 0-23 | - * / | - |
日期 | 1-31 | - * ? / L W C | - |
月份 | 1-12 | JAN~DEC - * / | - |
星期 | 1-7 | SUN~SAT - * ? / L C # | 1表示星期天,2表示星期一,依次類推。 |
日期和星期兩個域,僅能二選一,因為這兩個域會相互影響。若指定了日期域,請在星期域中填入?
,反之相同。
特殊字符的含義說明:
字符 | 含義 | 示例 |
* | 表示匹配域的所有值。 | 在分域使用 *,表示每分鐘都會觸發(fā)事件。 |
? | 表示匹配域的任意值,但只能用在日期和星期兩個域,因為這兩個域會相互影響。 | 在每月的20號觸發(fā)調(diào)度的寫法: 說明 日期域已指定了20號,最后一位星期域只能用 |
- | 表示起止范圍。 | 在分域使用5-20,表示在指定小時的第5分鐘到第20分鐘, 每分鐘觸發(fā)一次事件。 |
/ | 表示起始時間開始觸發(fā),然后每隔固定時間觸發(fā)一次。 | 在分域使用 5/20,表示在指定小時的第5分鐘觸發(fā)一次事件,然后每隔20分鐘觸發(fā)一次事件。例如,第二次觸發(fā)事件的時間是指定小時的第25分鐘。 |
, | 表示列出枚舉值。 | 在分域使用5,20,表示在指定小時的第5分鐘和第20分鐘分別觸發(fā)一次事件。 |
L | 表示最后,只能出現(xiàn)在日和星期兩個域。 | 在星期域使用5L,表示在指定月份的最后一個星期四觸發(fā)事件。 |
W | 表示有效工作日(周一到周五),只能出現(xiàn)在日這個域,系統(tǒng)將在離指定日期最近的有效工作日觸發(fā)事件。 | 在日域使用5W:
|
LW | 這兩個字符可以連用,表示在某個月最后一個工作日。 | 無 |
# | 表示每個月第幾個星期幾,只能出現(xiàn)在星期這個域。 | 在星期域使用4#2,表示在指定月份的第二個星期三觸發(fā)事件。
|
Crontab表達(dá)式示例:
每星期六、星期日的23:00執(zhí)行:
0 0 23 ? * 7,1
。每月5、15、25日的09:30執(zhí)行:
0 30 9 5,15,25 * ?
。每隔兩天的零點執(zhí)行:
0 0 0 */2 * ?
。