问题描述
备份mysql失败,错误信息[Xtrabackup] failed to execute query "LOCK
INSTANCE FOR BACKUP" : 1227 (42000) Access denied; you need (at least one of)
the BACKUP_ADMIN privilege(s) for this operation
解决方法
这个问题是由于MySQL8.0增加了新特性备份锁,关于备份锁以及BCKUP_ADMIN权限的介绍如下
*备份锁
引入了一种新的备份锁(backup lock),它允许在online备份的时候进行DML操作,同时可防止快照不一致。备份锁由lock instance for backup和unlock instance语法支持。使用这些语句需要BACKUP_ADMIN权限。
原来的extrabackup等备份软件是不是应该改写,不要使用flush table with read lock这样的语句来上锁。
当有大事务时,会hung住,无法备份。
如果采用lock instance for backup则没有问题。
解决方法:
通过登录客户的MySQL并使用show grants命令查看,用户的确没有给用户授予BACKUP_ADMIN的权限.
使用以下命令给root用户赋予BACKUP_ADMIN后备份就正常了
GRANTBACKUP_ADMIN,PROCESS,RELOAD,LOCKTABLES,REPLICATIONCLIENTON*.*TO"root"@"localhost";