DM 同步上游数据表到下游数据库中时,表名是否可以统一批量指定前缀或后缀?
例如:通过DM将上游的A库中所有表 增量同步到B库中。
源库表名:A.a,A.B,A.c
目标库表名:B.ods_aliy_a,B.ods_aliy_B,B.ods_aliy_c
同时兼容在源库新增表A.d 的时候 DM配置参数可以不用做表级别映射 而 自动同步到下游表B.ods_aliy_d?
DM 同步上游数据表到下游数据库中时,表名是否可以统一批量指定前缀或后缀?
例如:通过DM将上游的A库中所有表 增量同步到B库中。
源库表名:A.a,A.B,A.c
目标库表名:B.ods_aliy_a,B.ods_aliy_B,B.ods_aliy_c
同时兼容在源库新增表A.d 的时候 DM配置参数可以不用做表级别映射 而 自动同步到下游表B.ods_aliy_d?
建议随便学个什么语言,自动生成需要的routes规则。想怎么映射就怎么映射。
如果上游有多个同构的库需要处理,那就更加方便。
https://docs.pingcap.com/zh/tidb/stable/dm-open-api
后续还可以,开个dm-open-api管理source和task。
能写点代码用这个管理dm,就会感到这个比dmctl爽多了。
谢谢,不过我是说的在DM同步的时候映射改表名哦
谢谢你提供的方案,目前用这个就是为了简单便捷,目前人员不足以更深入的研究和二次开发。
好吧。
如果上游的库不超过5个,且同步的表也没有什么分表分库需要合并/需要考虑哪些ddl或dml需要放到下游之类令人头秃问题。这个dm的后续运维还是比较容易的。基本只有你就是上游的开发者的情况下,比较容易做到。
否则相信我,写这个routes规则真的是小活/体力活。后续跑起来没有那么安逸的。上游库的分片策略越复杂,库的使用越不规范,发生的意外的情况就越多。很简单的道理,上游有人在倒垃圾,你下游就别想清闲。 ![]()
是的,所以我把TiDB考虑作为数仓,用DM同步业务数据导数仓的ODS层的时候面临考虑严格意义的按照开发规范(层级命名规范)的问题。如果按照严格的数仓层次命名规范,那么我就要加上前缀ods_源库名_源表名,就目前来看就是按照每张表做表名的映射,后面上游新增表的时候也要手动新增映射关系。
所以,我现在考虑的成本就是按照库级别的一下增量通过过来。涉及到的几张分表合并再单独配制定置映射(毕竟分表表不多,可以控制)。
所以,在严格规范和快捷开发中,在没有更好方案的情况下,我首先考虑了DM整个库级别“原模原样”全部抽取过来。
其他按源库导,如果设计分库分表的数据,再考虑配置路由规则,合并上游数据到下游指定表中,批量表名指定前缀或后缀,我能想到的目前只有针对每个表配置单独的路由规则
整个原模原样抽取看上去只要改下表名,批量生成一次router规则就好了。不过你需要额外注意上游的qps/tps高不高,如果写入并发本来就高/表数据量本来就大,下游的表结构还要注意防止在同步和导入阶段出现写入热点。
https://docs.pingcap.com/zh/tidb/stable/troubleshoot-hot-spot-issues
如果不预先准备好下游的表结构,原模原样搬了mysql表结构到下游,写入出现热点就又要重来了。
基本上的你的任务还是比较简单的。写router规则(体力活)+规划好高并发写入表结构防止写入热点就应该没什么问题了。
是的,目前考虑用你说的这种方案。
是的,当使用DM同步上游数据表到下游数据库时,可以批量指定表名的前缀或后缀。
好吧,那再看看
可以,targetTable可以指定,但要是表比较多也够呛,需要每个都配置
是的,可以使用DM(数据迁移)工具在同步过程中指定表名的前缀或后缀。 DM 允许您配置源数据库和目标数据库之间的表名映射。
为了达到预期的结果,您可以使用DM中的路由规则配置来定义表名映射。 以下是您的场景的示例配置:
route-rules:
- schema-pattern: "A"
table-pattern: ".*"
target-schema: "B"
target-table: "ods_aliy_$1"
在此示例中,架构模式设置为“A”以匹配源架构名称。 表模式设置为“.*”以匹配源模式中的所有表。 target-schema 设置为“B”以指定目标模式名称,target-table 设置为“ods_aliy_$1”以指定目标表名称,其中“$1”占位符表示来自源的匹配表名称。
通过此配置,“A”模式中的所有表将同步到目标数据库中的“B”模式,并在表名中添加前缀“ods_aliy_”。
当您在源数据库添加新表“A.d”时,DM会根据配置的表名映射自动将其同步到名称为“B.ods_aliy_d”的目标数据库。
确保将此配置包含在 DM 配置文件(例如 dm-worker-1.toml)中,并重新启动 DM Worker 以使更改生效。
注意:实际的 DM 配置文件语法可能会有所不同,具体取决于您使用的 DM 版本。 上面提供的示例基于 DM 2.0 语法。 请参阅您所使用的具体版本的官方 DM 文档,以确保配置准确。
这个是很好的案例啊
请问这个要怎么配置,按你这个配置在dm_v5.4.0配置的时候不起作用啊,是不是dm不支持这种配置?
是的,目前就是这种通用