数据管理DMS的影子表同步功能支持根据源表的表结构自动创建影子表(新的数据表,表名是在源表名上增加前缀或后缀的方式生成),适用于全链路压测等场景。

前提条件

  • 数据库实例已录入至DMS中,更多信息,请参见云数据库录入
  • 数据库为如下类型:
    • MySQL系列:自建MySQL、RDS MySQL、PolarDB MySQL、PolarDB-X、AnalyticDB MySQL、OceanBase MySQL
    • SQL Server系列:自建SQL Server、RDS SQL Server
    • PostgreSQL系列:自建PostgreSQL、RDS PostgreSQL、PolarDB PostgreSQL、AnalyticDB PostgreSQL
    • PolarDB-O
    • MariaDB
  • 目标库已打开开启执行能力开关,更多信息,请参见开启执行能力
    说明 若未开启,库表同步将没有SQL执行能力。

操作步骤

  1. 登录数据管理DMS 5.0
    说明 如果您需要切换到旧版数据管理DMS,单击页面右下角返回旧版,进入数据管理DMS平台。具体操作,请参见数据管理DMS 5.0切换至旧版
  2. 在顶部菜单栏中,选择数据库开发 > 结构变更 > 影子表同步
    说明 如果您使用的是旧版数据管理DMS,在顶部菜单栏中,选择全部功能 > 库表结构 > 同步 > 影子表同步
  3. 库表同步工单申请页中,参考下表配置参数。
    参数 说明
    来源库 输入待同步的来源库。
    说明 您需要有该库的查询与变更(读写)权限,更多信息,请参见查看我的权限
    前缀 / 后缀 支持以“前缀+源表名”(默认)或“源表名+后缀”的格式创建影子表名称,并且支持自定义前、后缀。

    影子表名默认为__test_源表名

    同步的表 选择需要同步的表,支持的选项:
    • 部分表
    • 全部表
    同步策略 选择同步的频率,支持的选项:
    • 立即同步:立即进行同步(仅同步一次)。
    • 定时同步:定期定时进行同步,您可以根据需求配置Crontab表达式(本接口最小间隔为一小时,仅支持配置小时、日、月,默认每天02:00执行),更多信息,请参见Crontab表达式
    是否忽略报错 选择是否忽略报错,支持的选项:
    • 不忽略:在执行过程中,遇到出错则中断后面的SQL脚本,不再执行。
    • 忽略:在执行过程中,遇到错误会跳过当前失败SQL脚本,继续往下执行,并执行完所有SQL脚本。
    业务背景(备注) 描述项目的业务背景信息,例如变更目的、预期目标等。
  4. 单击提交申请
    系统将进行结构分析。
    说明 若数据结构在此过程中发生变更,请在工单中单击重新分析
  5. 单击提交审批,等待审批通过。
  6. 单击提交,同步目标库
  7. 确认待执行的SQL脚本,单击确认进行同步
    单击后,系统将开始执行同步脚本,您可以单击详情按钮,查看执行日志详细,包括执行语句、执行所用时间、调度详情等信息。

Crontab表达式

如果您需要从更细维度自定义定时任务的执行时间,可以使用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 号触发调度,不管每个月的 20 号是星期几,则只能使用如下写法:13 13 15 20 * ?。其中,因为日期域已经指定了 20 号,最后一位星期域只能用 ?,不能使用 *。如果最后一位使用*,则表示不管星期几都会触发,与日期域的 20 号相斥,此时表达式不正确。
- 表示起止范围。 例如:在分这个域使用 5-20,表示从 5 分到 20 分钟每分钟触发一次。
/ 表示起始时间开始触发,然后每隔固定时间触发一次。 例如:在分这个域使用 5/20,则意味着 5 分钟触发一次,而 25,45 等分别触发一次。
, 表示列出枚举值。 例如:在分这个域使用 5,20,则意味着在 5 和 20 分每分钟触发一次。
L 表示最后,只能出现在日和星期两个域。 例如:在星期这个域使用 5L,意味着在最后的一个星期四触发。
W 表示有效工作日(周一到周五),只能出现在日这个域,系统将在离指定日期最近的有效工作日触发事件。 例如:在日这个域使用 5W,如果 5 号是星期六,则将在最近的工作日星期五,即 4 号触发。如果 5 号是星期天,则在 6 号(周一)触发;如果 5 号为工作日,则就在 5 号触发。且仅在当前月份生效。
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 * ?