背景:
数据库版本是5.6
为了新增一台mysql从库,在主库上通过mysqldump导出的sql文件,导入到新的mysql中,报以下错误。
[root@w214 wangzhi]# mysql -uroot -p -P3308 -S /tmp/mysql3308.sock < 3308-0618.sql Enter password: ERROR 1580 (HY000) at line 241069: You cannot ‘DROP‘ a log table if logging is enabled
1、主库上导出的命令
[root@master1 wangzhi]# /usr/local/mysql/bin/mysqldump -S /tmp/mysql.sock -uroot -p -P3308 -Q -B -R -v --opt --single-transaction --master-data=1 --add-drop-database --all-databases 2> 3308-0618.log|gzip > 3308-0618.sql.gz Enter password:
2、新增的从库上导入命令
[root@w214 wangzhi]# mysql -uroot -p -P3308 -S /tmp/mysql3308.sock < 3308-0618.sql Enter password:
3、导入到一半的时候,出现上述的错误提示,同时有部分数据库没有导入成功。
分析:
1、导出sql的时候用到--add-drop-database --all-databases 会把主库上所有的库都给导出,同时sql文件中有删除系统库中表的语句。
解决方式:
mysql> show variables like "slow_query_log"; +----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | ON | +----------------+-------+ 1 row in set (0.00 sec) mysql> SET GLOBAL slow_query_log=0; Query OK, 0 rows affected (0.00 sec) mysql> show variables like "slow_query_log"; +----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | OFF | +----------------+-------+ 1 row in set (0.00 sec) mysql>
再次导入,问题解决。
导入完成后,需要修改回来设置。
mysql> SET GLOBAL slow_query_log=1; Query OK, 0 rows affected (0.00 sec) mysql> show variables like "slow_query_log"; +----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | ON | +----------------+-------+ 1 row in set (0.00 sec) mysql>
mysql 5.6 ERROR 1580 (HY000) at line 241069: You cannot 'DROP' a log table if logging is enabled