不同版本TiDB集群间的全量数据迁移问题

【前提】
由于CentOS7明年停止维护,需要将旧有的机器更换系统到RHEL8,而目前只有v6.x版本支持RHEL8,现有集群版本为v4.x,而升级集群+更换系统难度较大,因此打算直接用新机器建新集群然后数据迁移
【问题】
目前的理想方案是在新机器上新建一个v6.5集群,然后把旧有数据迁移到新的集群上,但官方推荐的方案不支持跨版本迁移,升级两个大版本后再迁移同样需要大量的时间和精力。
想问一下是否有其他的跨版本全量数据迁移方案(旧有集群迁移时可以停机一段时间,所以全量迁移即可)
【现有集群参数】
版本:v4.0.11
数据量:10T左右

这个方案没问题,并没有说不支持跨版本迁移。如果BR不兼容且数据量不是特别大的话dumpling加增量也是可以的。


好的,那也就是说BR并不在意两个集群间的版本差异吗?
不过我有点疑惑的是上面这个截图中 v6.x 的几个版本中也提到了兼容问题,如果同一个大版本中都存在类似的兼容性问题,那大版本之间是否也存在兼容问题呢?我没有看到官方对此的说明,所以有点困惑

跨这么大版本是有可能产生不兼容的问题的,考虑下用dumlping做全量同步呢,我看数据是10T不算太多,我们近期也准备用这种方式加binlog同步来升级3到6,3的时候还没有BR和ticdc只能用dumpling。

建议重点测试业务驱动变更到新版本后是否有适配问题、SQL 语句的兼容性、是否有性能回退的情况

根据您提供的业务场景有如下几个方案可供参考

  1. 逻辑导入方式
    源库4.x:逻辑备份(dumpling)sql 文件
    目标端 6.5:逻辑导入(lighting)sql,据说 6.5 有 10 倍左右的性能提升

  2. 物理导入的方式
    源库4.x:br工具导出
    目标端同版本 4.x: br 工具导入
    目标端同版本 4.x: 离线升级(–offline)5x,再离线升级到 6x

  3. 不停机维护方式
    使用逻辑导入导出的方式(规避了br工具兼容性问题),然后使用 ticdc 进行同步(我记得 4.0.11 对 ticdc 有提升),然后逐步对业务进行切换

2 个赞

感谢,不过物理导入后再升级的方案我这个情况不太适用,因为目标机器是RHEL8的系统,4.x的集群不支持RHEL8,没法迁移后再升级,只能从v4.x到v6.x一步到位

方案2绝了,我迁移时候怎么没有想到这个方案 :joy:
我迁移时候使用的方案3,还是挺折腾的,dumpling备份出来的文件是根据统计信息里来的,实际上并不均匀,在tidb-lightning导入时候,有几个表明明很小,但是有很多小文件,导致导入速度很慢,需要手动处理。(在使用dumping工具导出时候,也因为参数问题,重试了好几次)

这个验证过么?理论上不会吧。


我这边没有做过测试,但我看文档上是这样写的,所以就用这个为前提了

我建议是先试下能不能安装成功,因为你只是用TiDB4做一个过渡,只要能导入成功,后续升级到TiDB 6就可以了。

PS: 我是用的逻辑导出/导入的方式来做的迁移,中间还是有不少细节需要注意,工期很不方便预估

感谢,我也参考一下这个方案,后续我先试试看RHEL8上搭建4.0集群是否可行

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