mysqldump 报错:couldn't execute select binlog_gtid_pos you are not using binary
报错原因
开启了--gtid-purged参数,但是MySQL 没有开启 binlog 二进制日志,binlog_gtid_pos函数依赖 binlog,无 binlog 就执行失败。
场景:备份单机库、测试库,没开 binlog,mysqldump 加了
--gtid-purged=ON就会报这个错。
方案 1(最常用,直接去掉 gtid 导出)
去掉--gtid-purged=on参数,适合本机、没有 binlog 的实例
mysqldump -u root -p 库名 --single-transaction --routines --triggers > dump.sql
方案 2 强制设置 --gtid-purged=OFF
即使开启 gtid 相关逻辑,关闭该功能
mysqldump -u root -p 库名 --single-transaction --routines --triggers --gtid-purged=OFF > dump.sql
方案 3 需要 GTID 信息,那就开启 binlog(修改 my.cnf)
[mysqld]
log_bin=mysql-bin
server-id=1
改完重启 mysql,再执行带--gtid-purged=ON的备份。
完整对比说明
--gtid-purged=ON:导出文件会记录 GTID 位点,主从复制迁移才需要,不需要做主从的普通备份不要加。- 没有 binlog 的实例,绝对不能用
--gtid-purged=ON。
常见错误完整备份命令(报错的写法)
# ❌错误,无binlog不能加--gtid-purged=on
mysqldump -uroot -p --single-transaction --gtid-purged=ON db1 > db1.sql
✅正确无 binlog 备份
mysqldump -uroot -p --single-transaction --routines --triggers db1 > db1.sql
补充:Mysql8.0、MariaDB、国产 mysql 分支均会出现该报错。

浙公网安备 33010602011771号