Error number: MY-013204; Symbol: ER_RELAY_LOG_SPACE_LIMIT_DISABLED; SQLSTATE: HY000
Message: Ignoring the @@global.relay_log_space_limit option because @@global.relay_log_purge is disabled.
错误说明
MySQL中ER_RELAY_LOG_SPACE_LIMIT_DISABLED(错误号为MY-013204,SQLSTATE HY000)是一种表示MySQL中slave线程中回收记录空间限制未启用,而空间限制超出之后无法继续replicate的错误。
常见案例
典型案例是,当slave线程改变了配置选项binlog_space_limit时,假如设置的值比当前的relay_log_space_limit高的话,就可能发生此ER_RELAY_LOG_SPACE_LIMIT_DISABLED这一错误。此外,如果没有允许增加更多的relay log空间,或者由于slave线程没有正确的管理,也有可能产生这一错误。
解决方法
1. 解决此错误,实际上就是要确保relay log空间得到有效的管理。MySQL中master/slave复制架构是通过relay log来对每一条query进行记录,当query被成功执行之后,这条记录就会删除; relog log空间限制是MySQL中引入的一种安全设计,用来限制relay log的大小,从而防止因复制的缓慢或停止而影响到服务器速率的问题。为了解决此问题,必须要在MySQL控制台中输入以下命令来实际启用relay log空间限制:
SET GLOBAL relay_log_space_limit=n;
n代表着在MySQL中可用来为relay log设定的空间限制,一般情况下,可以根据实际需要把这个值设大一点,以防止因slave复制出现推迟或延迟而产生此错误。
2. 如果此已此ER_RELAY_LOG_SPACE_LIMIT_DISABLED错误开始出现,可以使用以下命令移除不再被其他slave线程使用的旧的relay log文件以及相应的应用:
PURGE BINARY LOGS TO ‘ log_name ‘;
log_name代表着当期slave线程已经处理过的relay文件名,删除这些旧的relay log文件可以释放空间以便及时处理replicate错误。
3. 如果此ER_RELAY_LOG_SPACE_LIMIT_DISABLED错误依旧存在,那么最后可以尝试重启MySQL服务器,确保slave-master复制架构及时得到恢复。
总结
MySQL中ER_RELAY_LOG_SPACE_LIMIT_DISABLED(错误号为MY-013204,SQLSTATE HY000)是一种表示MySQL中slave线程中回收记录空间限制未启用,而空间限制超出之后无法继续replicate的错误。可以通过调整binlog_space_limit值,增加relay log空间,删除旧的relay log文件以及重启MySQL服务器等方法来解决此错误。