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的备份。

完整对比说明

  1. --gtid-purged=ON:导出文件会记录 GTID 位点,主从复制迁移才需要,不需要做主从的普通备份不要加。
  2. 没有 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 分支均会出现该报错。

posted @ 2026-09-02 10:10  如烟大帝  阅读(23)  评论(0)    收藏  举报