MySQL 迁移后无法快速导数据问题解决

 更新时间:2023年10月18日 10:43:59   作者:爱可生开源社区  
这篇文章主要为大家介绍了MySQL 迁移后无法快速导数据问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

关于 5.6 升级到 5.7 之后,GTID 的相关功能的注意事项。

某金融公司有套系统最近刚迁移完,从 5.6 迁移到 5.7.30,并且在迁移前未开启 GTID,迁移后开启了 GTID 相关功能。业务按照以往的方式使用 CREATE TABLE ... SELECT ... 导数据的时候出现报错:Error Code:1786 (HY000): Mysql Statement violates GTID consistency: CREATE TABLE ... SELECT

问题原理

这个问题比较简单,原因就是迁移后的 MySQL5.7 使用了 GTID,开启了 enforce_gtid_consistency 参数(GTID 强一致性)。

为保证分布式事务的一致性,MySQL 使用 GTID 来唯一标识一个事务。在 GTID 模式下,DDL 和 DML 语句会自动产生不同的 GTID 来标识不同的事务操作。但是 CREATE TABLE ... SELECT ... 只生成了一个 GTID,将 DDL 和 DML 操作合并为一个事务执行,这在语句执行失败时,会造成主从数据不一致。开启 enforce_gtid_consistency 参数就是为了 GTID 事务的原子性。

官方文档也有对 CREATE TABLE ... SELECT ... 这一操作的说明:

解决方案

为了安全,不建议关闭这个参数。

在 MySQL5.7 上可以用拆分成两句 SQL 的方式,解决这个问题,比如:

#先创建表
CREATE TABLE ... LIKE...
#再插入数据
INSERT INTO ... SELECT ...

虽然之前的单条 SQL 能简单快速的导数到另一张表,但为了安全可以适当麻烦一点。

MySQL 8.0

好消息是从 MySQL8.0.21 开始,支持原子 DDL 的存储引擎允许使用 CREATE TABLE ... SELECT ... 语句了。

以上就是MySQL 迁移后无法快速导数据问题解决的详细内容,更多关于MySQL迁移导数据的资料请关注脚本之家其它相关文章!

相关文章

  • 一次docker登录mysql报错问题的实战记录

    一次docker登录mysql报错问题的实战记录

    这篇文章主要给大家介绍了一次docker登录mysql报错问题的实战记录,文中通过实例代码介绍的非常详细,对大家学习或者使用docker具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Mysql数据库事务的脏读幻读及不可重复读详解

    Mysql数据库事务的脏读幻读及不可重复读详解

    这篇文章主要为大家介绍了Mysql数据库事务的脏读幻读及不可重复读详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • master and slave have equal MySQL server ids

    master and slave have equal MySQL server ids

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids
    2013-07-07
  • 解决mysql5.6 utf8设置无效问题

    解决mysql5.6 utf8设置无效问题

    这篇文章主要介绍了mysql5.6 utf8设置无效问题,本文虽然内容不长,但是解决方法给出,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • mysql按天/小时/半小时/N分钟/分钟进行数据分组统计功能

    mysql按天/小时/半小时/N分钟/分钟进行数据分组统计功能

    我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况,例如,每一天中每个小时网站的访问量,某路口每半个小时通过的车辆数量等,下面给大家分享mysql按天/小时/半小时/N分钟/分钟进行数据分组统计功能,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • MySQL循环插入千万级数据

    MySQL循环插入千万级数据

    这篇文章主要介绍了MySQL如何实现循环插入千万级数据,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • mysql的分区技术详细介绍

    mysql的分区技术详细介绍

    这篇文章主要介绍了mysql的分区技术详细介绍,本文讲解了分区技术概述、分区的类型及分区操作等内容,需要的朋友可以参考下
    2015-03-03
  • MySQL清空所有表的数据方法示例

    MySQL清空所有表的数据方法示例

    本文主要介绍了MySQL清空所有表的数据方法示例,要清空MySQL数据库中所有表的数据,但保留表结构,下面就介绍了几种常用的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • MySQL的的数据一致性保障与延迟问题处理

    MySQL的的数据一致性保障与延迟问题处理

    在分布式数据库和高并发应用场景下,数据一致性 和 数据延迟 是两个不可忽视的问题,MySQL 作为广泛使用的关系型数据库,提供了多种机制来保障数据一致性,本文将深入探讨 MySQL 如何保障数据一致性 以及 应对数据延迟的策略,需要的朋友可以参考下
    2025-03-03
  • mysql关联查询速度慢的问题及解决

    mysql关联查询速度慢的问题及解决

    这篇文章主要介绍了mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03

最新评论