背景
从一个备份数据库还原数据到一个新的库,使用mysqldump
导出
mysqldump -h -u -p -t 数据库 表名 > data.sql
-h 指定数据库连接地址
-u 指定数据库用户名(-u紧跟用户名,无空格)
-p 指定数据库用户密码
-t 只导出数据,不包含结构等内容
-u 指定数据库用户名(-u紧跟用户名,无空格)
-p 指定数据库用户密码
-t 只导出数据,不包含结构等内容
执行后报错
ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
解决
看报错内容为执行第18行时报错,查看导出的sql文件定位到18行
[root@aikx ~]# sed -n 18p data.sql SET @@SESSION.SQL_LOG_BIN= 0;
话不多说直接百度解决方式(其实直接批量删除这条命令即可)
mysqldump
导出时添加--set-gtid-purged=off
mysqldump -h -u -p -t 数据库 表名 --set-gtid-purged=off > data.sql
ok,这样导出后就可以直接导入了
加了–set-gtid-purged=OFF时,在会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加–set-gtid-purged=OFF,否则你在主上导入恢复了数据,主没有了binlog日志,同步则不会被同步。