Error number: MY-010015; Symbol: ER_RPL_GTID_TABLE_CANNOT_OPEN; SQLSTATE: HY000
Message: Gtid table is not ready to be used. Table ‘%s.%s’ cannot be opened.
错误说明
ER_RPL_GTID_TABLE_CANNOT_OPEN错误是MySQL服务器发出的错误异常,表示无法打开或未正确解析GTID表。MySQL每次启动后,都会去 加载一个表,该表中的全局事务标识符当前是哪些,以及这些事务是什么类型,且只在每次MySQL服务器启动期间使用。该错误表示,加载或解析该表的过程出错,使得MySQL无法正确加载与GTID有关的全局事务信息,该表目前无法打开。
常见案例
该错误常见于MySQL从5.7版本开始支持复制,使用Qualys GTID作为复制同步媒介,将同步时不能传输历史记录,并且数据库无法进行同步操作,这是因为GTID表打开失败造成的,此时数据库会报出 ER_RPL_GTID_TABLE_CANNOT_OPEN 错误。
解决方法
1. 禁用复制,在主库上运行以下命令查看是否已开启复制:show slave status;如复制已开启,关闭复制即可,关闭复制的命令为:stop slave;
2. 避免手动修改GTID表,因为GTID表是MySQL自动维护的,手动修改GTID表非常容易出错,会导致GTID表打开失败,造成 ER_RPL_GTID_TABLE_CANNOT_OPEN 错误;
3. 重新加载GTID表,可以在my.cnf配置文件中加入下面的选项强制复制重新加载GTID表:
skip-slave-start
slave-load-tmpdir = /var/tmp
4. 重启MySQL服务器,重启可以重新加载GTID表;
5. 检查mysql目录权限,使用show variables like ‘%tmp%’ 查看slave-load-tmpdir的路径,确保MySQL用户下的MYSQL文件目录及临时目录的权限可用。