[TIDB DM] DM可以合并任务吗

之前一个任务同步一张表, 配置了很多任务, 导致TIDB连接数不够用了
现在想一个任务同步N张表, 这N张表的数据,我都已经同步过来了,就仅仅想通过合并任务来减少连接数需求。
如果重新写一个配置文件,重新命名一个任务名的话,就又要重新全量同步,数据库量大,比较费时费力,有没有什么办法, 可以合并任务,然后增量同步?

好像最好的办法就是重新全量同步了吧?除非能容忍数据丢失

N张表同步过来的数据的binlog,和pos点记录了么,如果记录的话,个人觉得比较安全点的做法
1.停止同步任务
2.修改dm_meta库的当前任务表的binlog,pos点数据(ps:如果不起作用可以将该dm_meta库的对应任务表备份到别的数据库,然后删除该表)
3.修改任务配置文件为记录的binlog和pos,syncer采用安全模式,即mode为true
4.启动任务

按照以上步骤应该就可以了,如果单纯想减少连接数,也可以减少syncer的线程

这些程序都是有自动记录的。 主要是手工改很容易出错
syncer的线程数已经降低到1了。 但是连接数还是占用比较多的
只能通过合并任务来了
DM好像是以每个任务为名,自动创建3张元数据表,里面记录了每个分表的binlog情况
现在要合并成一个任务, 这个任务名字肯定是要新的。 然后要修改元数据, 手工搞也不太敢,缺少程序命令行自动处理的功能

手工改也不会出错啊,本质就是同步二进制,合并也不用改任务名,只是相当于多同步几张表而已

你的意思是,把所有 ****_syncer_checkpoint 的表的记录,合并到一张表里吗

不用,上面的操作步骤已经写清楚了,比如你要改的任务名叫task_a
1.先把要合并的任务都停了,记录这些任务当前同步的最早的binlog和pos点
2.删除task_a任务的表,或将task_a任务表中的binlog和pos改成步骤1获取的binlog和pos
3.修改task_a的配置文件,将其他表也加入到同步的表中,同步模式为安全模式
4.启动task_a

1.先把要合并的任务都停了,记录这些任务当前同步的最早的binlog和pos点
------------------------ 最早的? 还是当前的? 这些不是在dm_meta里本身就记录了吗

2.删除task_a任务的表,或将task_a任务表中的binlog和pos改成步骤1获取的binlog和pos
--------------- 这个怎么改?配置文件里改?还是dm_meta里改?
3.修改task_a的配置文件,将其他表也加入到同步的表中,同步模式为安全模式
4.启动task_a

1.当前的最早时间点,比如
task_a 同步到 log_bin.4 pos 104.
task_b 同步到 log_bin.3 pos 104.
task_c 同步到 log_bin.2 pos 208.
task_d 同步到 log_bin.4 pos 405

这个时间节点就写log_bin.2 pos 208
这一步的操作是担心合并之后丢数据

2.因为启动任务之后的dm同步数据是根据dm_meta来同步的,所以可以有两种办法来做,这里先说一种吧,我怕你弄混了
删除dm_meta中task_a对应的表(删表之前先备份),然后修改task_a的配置文件,增量模式,增量起始点为log_bin.2 pos 208,safe_mode为true

版本在更新,其实现在也可以填 source 中最早的 position ,然后通过 --start-time 以及 safe-mode=true 让任务从最早的时间点开始启动。这样就不用一个个去查 position 了

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。