问题描述
RDS MySQL主备复制中断,出现如下报错:
The incident LOST_EVENTS occured on the master. Message: REVOKE/GRANT failed while granting/revoking privileges in databases.
Error_code: 1590
问题原因
在MySQL 5.6和5.7版本中,当使用GRANT
或REVOKE
一次性为多个用户设置权限时,如果某个用户的权限变更遇到问题,比如由于用户不存在或权限语法错误等原因。为了避免将失败的语句同步给备库,主库会主动向Binlog(用于复制的数据日志)中写入一个LOST_EVENT
以此中断主备复制关系。
例如,如下示例会导致主备复制中断:
revoke select on db1.* from 'testuser1'@'%','testuser1'@'%';
解决方案
因为MySQL 5.6和5.7版本的DDL操作是非原子性的,为避免这种复制中断的问题,建议在使用GRANT或REVOKE命令时,每次只处理一个用户,不要一次设置多个用户。
适用于
云数据库RDS MySQL版
该文章对您有帮助吗?