mysql 通过binlogs恢复时如何解决此GTID错误?

vsnjm48y  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(166)

我用mysqlbinlog binlog.000093 > log93.sql命令创建了一系列sql文件,从93到109。这些日志可以追溯到数据库的创建过程,因此我想我可以完全还原数据库。我需要将数据库还原到特定日期时的状态。我尝试执行命令cat log93.sql | mysql -u root -p,但得到错误@@SESSION.GTID_NEXT cannot be changed by a client that owns a GTID. The client owns ANONYMOUS. Ownership is released on COMMIT or ROLLBACK.
我尝试了两件事:

  • 我补充道:
[mysqlbinlog]
skip-gtids

字符串
my.cnf文件中,但什么都没有,我得到相同的错误。

  • 我添加了(而不是之前的配置):
[mysqld]
enforce_gtid_consistency = 'ON'
gtid-mode = 'ON'


但是我得到错误@@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON
运行mysql Ver 8.0.33-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))。如何解决此问题并有效还原数据库?

sdnqo3pr

sdnqo3pr1#

你遇到的错误是关于MySQL中的全局事务标识符(GTID)。GTID用于唯一标识跨多个服务器的事务,并帮助维护复制设置中的数据一致性。
当使用binlog生成的SQL文件还原数据库时,您需要谨慎地使用与GTID相关的配置,以确保成功还原。由于您正在尝试还原到特定的日期时间,您应该在还原过程中禁用与GTID相关的检查。
要解决GTID错误并有效地还原数据库,请执行以下步骤:
1.编辑my.cnf文件:打开MySQL配置文件(my.cnf)并在[mysqld]部分下追加以下行以停用与GTID相关的检查:

[mysqld]
skip-gtids

字符串
1.重新启动MySQL服务器:保存对my.cnf文件的更改,然后重新启动MySQL服务器以应用新配置。
1.恢复数据库:禁用GTID后,您现在可以使用SQL文件还原数据库。执行以下命令:

cat log93.sql | mysql -u root -p


my.cnf文件中的skip-gtids选项将防止在还原过程中应用GTID检查,允许您从SQL文件还原数据库,而不会遇到GTID相关错误。
一旦恢复完成,如果您希望重新启用GTID以供将来的操作,您可以将my.cnf文件恢复到其原始状态:
1.删除my.cnf中的skip-gtids行。
1.重新启动MySQL Server以应用更改。

相关问题