发布时间:2025-11-05 02:36:19 来源:创站工坊 作者:数据库

Mysql单表备份有很多方式,备报错对于数据量比较大的份表表,可以使用mysqldump
小表通常使用如下语句就行了。备报错
复制create table A as select * from B1.在一次备份中出现如下错误。份表
复制mysql> create tables deptmember_bak as select * from deptmember;ERROR 1064 (42000): You have 备报错an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near tables deptmember_bak as select * from deptmember at line 11.2.查询官方资料,原因是份表MySQL 5.6.7及更高的版本,开启了enforce_gtid_consistency=true 功能导致的备报错,亿华云MySQL官方解释说当启用 enforce_gtid_consistency 功能的份表时候,MySQL只允许能够保障事务安全,备报错并且能够被日志记录的份表SQL语句被执行,像create table … select 和 create temporarytable语句,备报错以及同时更新事务表和非事务表的份表SQL语句或事务都不允许执行,所以默认关闭掉,需要开启时再启用
查看环境enforce_gtid_consistency参数为开启状态。备报错
复制mysql> show variables like ENFORCE_GTID_CONSISTENCY;+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| enforce_gtid_consistency | ON |+--------------------------+-------+1 row in set (0.01 sec)1.2.3.4.5.6.7.下面提供了2种方案,IT技术网份表可以根据情况自由选择
解决办法关闭GTID模式
mysql配置my.cnf里面修改参数如下
复制gtid_mode =OFF
enforce_gtid_consistency = OFF1.2.重启mysql再次查看已经生效,再次执行备份就不会报错了
复制mysql> show variables like %gtid_mode%;+---------------+-------+| Variable_name | Value |+---------------+-------+| gtid_mode | OFF |+---------------+-------+1 row in set (0.01 sec)mysql> show variables like %enforce_gtid_consistency%;+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| enforce_gtid_consistency | OFF |+--------------------------+-------+1 row in set (0.01 sec)1.2.3.4.5.6.7.8.9.10.11.12.13.14.方法二采用先复制目标表结构,然后插入数据的方式,这种方法的好处是不用重启数据库
复制mysql> create table deptmember_bak like deptmember;Query OK, 0 rows affected (0.11 sec)mysql> insert into deptmember_bak select * from deptmember;Query OK, 4 rows affected (0.01 sec)Records: 4 Duplicates: 0 Warnings: 01.2.3.4.5.