封尘网

让学习成为一种习惯!

binlog恢复数据时报@@SESSION.GTID_NEXT cannot be set to UUID NUMBER

在Mysql5.7的版中使用了gtid复制,可以多线程复制,同时也省去了记binlog起始点的烦恼;

但是在一次测试环境中通过binlog日志来恢复误删数据时却耗了不少时间;

[root@mysql-01 tmp]# mysqlbinlog --no-defaults mysql-bin.000018 --start-position="4" --stop-position="1102" |mysql test
ERROR 1781 (HY000) at line 17: @@SESSION.GTID_NEXT cannot be set to UUID:NUMBER when @@GLOBAL.GTID_MODE = OFF.

参考文档:http://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-disable-gtids.html

最终根据文档:在Mysql命令行中执行一下命令即可,解决问题;
哪怕你查看的已经是OFF了;

mysql> show global variables like 'gtid_mode';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

最终,通过以下命令解决问题;

set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

导入日志记录:

mysqlbinlog --no-defaults --start-position="441" mysql-bin.00000*| mysql test

就不会再报那个错了;