【 TiDB 使用环境】生产
【 TiDB 版本】5.4
【遇到的问题】
我们之前的MySQL数据库,有一个业务表比较大,分表分成了100张表。
第一次从MySQL迁移到tidb的时候,原封不动的直接同步到了tidb,就没有做表合并。现在tidb里面这个业务表也有一百张表,但是我想把这100张表在tidb里面合并回一张表,找了一下文档,没找到合适的方案,大佬们有对策吗?谢谢
【 TiDB 使用环境】生产
【 TiDB 版本】5.4
【遇到的问题】
我们之前的MySQL数据库,有一个业务表比较大,分表分成了100张表。
第一次从MySQL迁移到tidb的时候,原封不动的直接同步到了tidb,就没有做表合并。现在tidb里面这个业务表也有一百张表,但是我想把这100张表在tidb里面合并回一张表,找了一下文档,没找到合适的方案,大佬们有对策吗?谢谢
可以将其他分表都迁移到表1中去,然后再TRUNCATE TABLE 分表,不知对你有用没,
思路: insert into table select 分表 where _tidb_rowid >m order by _tidb_rowid asc limit n
根据_tidb_rowid或 主键往前推进。
注意:需要控制n的数量 (数量太大容易oom)
可以写shell脚本定时执行,执行成了就记录日志,直到分表全部合并到一张表。
考虑使用tidb的DM功能,route路由功能能实现表的合并
tidb主打不要分库分表。所以你新建一个空表,依次把这100个表的数据合并进去就行。前提是100个表没有数据冲突。
创建新表,然后select into.
select into 到一张表 对历史数据是可以的,但是增量数据很难,尽量避免业务停机
select into 到一张表 对历史数据是可以的,但是增量数据很难,尽量避免业务停机
数据应该没啥问题,id都是雪花算法分布式id,select into 到一张表 对历史数据是可以的,但是增量数据很难,尽量避免业务停机。
DM我看文档只能从MySQL到tidb吧,我这里源头已经在tidb了
不停机增量数据怎么办呢
我觉得 一般做法就是select into 了
不停机,那就只能考虑,迁移工具了,或者使用kafaka等工具了
搞个复杂的,dumpling 100张分库表,新建1张合并表导进去,从dumpling出了的时间点配置cdc同步到kafka,然后消费kafka数据写入值新建的合并表
新建表没有指定特定的主键 应该也没事
这工作量就老大了,kafka后面写入增量数据,我不知道有没有成熟的工具,如果自己手动解析再写入tidb,这就很麻烦
我还得考虑不停业务
大佬,迁移工具有推荐吗
增量是不是可以利用binlog?