开发者社区> 问答> 正文

如何解决mysql主外键约束的问题

数据库Mysql,一端在美国机房,另一端在阿里云 先从美国机房倒出数据,倒出数据之后启动美国的服务器,然后把导出来的数据导入到阿里云服务器,在这个过程中因为美国的数据库处于启动状态,所以会丢失部分数据。我的问题是如何补回这部分丢失的数据。

先做了一个直接同步的尝试,结果提示主外键冲突,我估计是因为表没有指定顺序,先导入的子表的数据,导致insert失败,后来禁用主外键之后还是同样的错误。

原提问者GitHub用户 LWT1118

展开
收起
大圣东游 2023-06-21 16:29:58 54 0
2 条回答
写回答
取消 提交回答
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    在这种情况下,您可以尝试使用MySQL的增量备份和恢复功能来补回丢失的数据。以下是一种可能的解决方案:

    1. 在美国机房的MySQL服务器上启用二进制日志(binary logging)。您可以通过在MySQL配置文件中设置log_bin参数来实现。确保在启用二进制日志之前,已经对数据库进行了完整备份。

    2. 在美国机房的MySQL服务器上执行数据导出操作,将数据导出为SQL文件。

    3. 将导出的SQL文件传输到阿里云服务器。

    4. 在阿里云服务器上启动MySQL服务器,并确保已经对数据库进行了完整备份。

    5. 在阿里云服务器上执行数据导入操作,将导出的SQL文件中的数据导入到相应的表中。

    6. 在阿里云服务器上使用mysqlbinlog命令解析美国机房MySQL服务器上的二进制日志文件,并将其中的增量数据应用到阿里云服务器上的数据库中。例如,可以使用以下命令:

      mysqlbinlog binlog-file | mysql -h阿里云服务器地址 -u用户名 -p密码
      

      其中,binlog-file是美国机房MySQL服务器上的二进制日志文件的路径。

    通过执行以上步骤,您可以将美国机房MySQL服务器上的丢失数据补回到阿里云服务器上的数据库中。

    2023-06-26 23:20:23
    赞同 展开评论 打赏
  • 可以使用otter的表权重,子表的权重配置>主表,这样可以保证增量同步优先同步主表数据,然后再插入子表

    原回答者GitHub用户agapple

    2023-06-21 17:41:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像