Mysql单表备份有很多种方法。对于数据量比较大的表,小表可以使用mysqldump。通常使用下面的语句。createtableAasselect*fromB在备份时出现如下错误。mysql>createtablesdeptmember_bakasselect*fromdeptmember;ERROR1064(42000):你的SQL语法有错误;查看你的MySQL服务器版本对应的手册第1行使用near'tablesdeptmember_bakfromasselect*deptmember'查询官方信息的正确语法,原因是MySQL5.6.7及以后版本启用了enforce_gtid_consistency=true功能,MySQL官方解释,开启enforce_gtid_consistency功能后,MySQL只允许事务安全,执行可以记录的SQL语句,如createtable...select和createtemporarytable语句,更新事务的SQL语句或事务表和非事务表不允许同时执行,所以默认是禁用的,需要启用时才需要启用。启用环境enforce_gtid_consistency参数。mysql>showvariableslike'ENFORCE_GTID_CONSISTENCY';+------------------------+--------+|变量名|价值|+------------------------+--------+|enforce_gtid_consistency|ON|+------------------------+--------+1rowinset(0.01sec)下面有2个选项,可以根据情况自由选择1.方法一:修改数据库参数解决办法关闭GTID模式mysql配置my.cnf修改参数如下:gtid_mode=OFFenforce_gtid_consistency=OFF重启mysql再次查看是否生效,再执行备份就不会报错了。mysql>showvariableslike'%gtid_mode%';+----------------+--------+|变量名|值|+----------------+-------+|gtid_模式|OFF|+----------------+--------+1rowinset(0.01sec)mysql>showvariableslike'%enforce_gtid_consistency%';+-------------------------+------+|变量名|值|+--------------------------+------+|enforce_gtid_consistency|OFF|+--------------------------+--------+1rowinset(0.01sec)2.方法2:step-by-stepoperation方法2使用目标表结构的第一个副本,然后插入数据这种方法的优点是不需要重启数据库mysql>createtabledeptmember_baklikedeptmember;QueryOK,0rowsaffected(0.11sec)mysql>insertintodeptmember_bakselect*fromdeptmember;查询OK,4rowsaffected(0.01sec)Records:4Duplicates:0Warnings:0
