为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【概述】
现在想从MySQL分库分表架构迁移到一个TiDB实例上面去,不同的MySQL实例里面有同名的数据库,在使用DM迁移到TiDB的时候必然要通过task配置来改名字。
但是为了防止迁移失败应用端能随时切回MySQL,我需要把TiDB的增量数据反向同步回MySQL,这时候数据库名字已经变了,目前使用TiCDC和binlog都无法实现上下游数据库名称映射,请问这种情况如何处理呢?
或者有没有其他更好的方案。
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【概述】
现在想从MySQL分库分表架构迁移到一个TiDB实例上面去,不同的MySQL实例里面有同名的数据库,在使用DM迁移到TiDB的时候必然要通过task配置来改名字。
但是为了防止迁移失败应用端能随时切回MySQL,我需要把TiDB的增量数据反向同步回MySQL,这时候数据库名字已经变了,目前使用TiCDC和binlog都无法实现上下游数据库名称映射,请问这种情况如何处理呢?
或者有没有其他更好的方案。
您是指作为上游和作为下游的mysql用同一个实例么
不管用不用原来的MySQL实例,都会有这个问题吧
我觉得这个可以,就是先将数据备份到文件,在将文件内容解析(这块得手动处理),不过你要用mysql作为上下游的时候都用同一实例,我觉得很有可能有问题,而且我不知道这种的转换库是依赖于row模式,还是依赖于use db
或者也可以看看市面上的dms,dts等是否支持这种
https://docs.pingcap.com/zh/tidb/stable/tidb-binlog-reparo
手动去解析binlog工作量有点大了,市面上其他工具估计识别不了tidb的binlog吧
也是,目前能想到的就是用另一个mysql来接受tidb过来的这些增量(这里不改变库名,与tidb的库名一致),开启log_update_slave,row然后用这个mysql作为一个主,来把增量数据同步到其他数据库上(这里改变库名)
按照您这个思路我找了下资料,确实可以通过加一层MySQL主从复制来实现改名。
但是又想到个新问题,上游同步到TiDB的时候名字已经变了,应用端切换到TiDB还是要先改代码,这一步好像没办法避免。
这个我感觉是没办法避免的,要不然就是多套tidb来对应,要不然就是两套程序,切数据库的也切程序,你的同名库是做了分库是么,根据主键分的么
是的,MySQL做了分库分表
那应该比较好办,采用分库分表的迁移方式,迁移到同一个表中,参考下面的链接,即分库在tidb中不做多个库,而用同一个库,但做的时候要注意DDL的影响,而且要检查下数据一致性
https://docs.pingcap.com/zh/tidb-data-migration/stable/feature-shard-merge
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。