数据库Mysql,一端在美国机房,另一端在阿里云 先从美国机房倒出数据,倒出数据之后启动美国的服务器,然后把导出来的数据导入到阿里云服务器,在这个过程中因为美国的数据库处于启动状态,所以会丢失部分数据。我的问题是如何补回这部分丢失的数据。
先做了一个直接同步的尝试,结果提示主外键冲突,我估计是因为表没有指定顺序,先导入的子表的数据,导致insert失败,后来禁用主外键之后还是同样的错误。
原提问者GitHub用户 LWT1118
在这种情况下,您可以尝试使用MySQL的增量备份和恢复功能来补回丢失的数据。以下是一种可能的解决方案:
在美国机房的MySQL服务器上启用二进制日志(binary logging)。您可以通过在MySQL配置文件中设置log_bin
参数来实现。确保在启用二进制日志之前,已经对数据库进行了完整备份。
在美国机房的MySQL服务器上执行数据导出操作,将数据导出为SQL文件。
将导出的SQL文件传输到阿里云服务器。
在阿里云服务器上启动MySQL服务器,并确保已经对数据库进行了完整备份。
在阿里云服务器上执行数据导入操作,将导出的SQL文件中的数据导入到相应的表中。
在阿里云服务器上使用mysqlbinlog
命令解析美国机房MySQL服务器上的二进制日志文件,并将其中的增量数据应用到阿里云服务器上的数据库中。例如,可以使用以下命令:
mysqlbinlog binlog-file | mysql -h阿里云服务器地址 -u用户名 -p密码
其中,binlog-file
是美国机房MySQL服务器上的二进制日志文件的路径。
通过执行以上步骤,您可以将美国机房MySQL服务器上的丢失数据补回到阿里云服务器上的数据库中。
可以使用otter的表权重,子表的权重配置>主表,这样可以保证增量同步优先同步主表数据,然后再插入子表
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。