最近在做数据库出拆分迁移。背景如下: 原有的mysql实例用的是阿里云的PolarDB,现在需要将数据库拆分到阿里云的rds集群上,数据同步用的是阿里的DTS,全量同步+增量实时同步,业务应用进行数据源切换即可。 原来有一个集中从库,多对一主从同步集中到自建的ecs服务器上的mysql实例上,拆分迁移过程当中,需要修改复制通道主库地址,现在的操作是在DTS同步链路创建之前,rds空实例记录位点信息,等待应用切换之后,从起始位点同步全量数据,数据量较大时候出现很大的延迟。 业务要求不停机迁移,集中从库没有办法确认数据的具体位点信息,所以每次迁移集中从库都得全量同步数据。 现在有一个想法,集中从库是否可以不拉取全量数据,先记录rds的位点信息,此时rds已经完成DTS全量同步,增量实时同步中,rds位点可能会随时变化,先不管,此时直接将集中从库切换到rds上,集中从库的数据比rds记录位点数据要新,一直在同步旧的主库PolarDB的数据,直接change master到rds上,忽略1032,1062这样的报错信息,是否可以保证数据一致性。 直接change master到rds上,位点信息不准确,重复应用binlog是否会出现数据不一致的问题,一直没有找到会引起数据不一致的操作场景。 PolarDB版本:5.7.28 rds版本:5.7.44 集中从库版本:5.7.28 binlog为row格式 ,binlog_row_image 是FULL |
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com