如何停止 automysqlbackup 抛出 LOCK TABLES 错误?

iai*_*inH 21 mysql backup 12.04

如何停止 automysqlbackup 的 cron.daily 脚本——从安装和配置开始apt-get install automysqlbackup——抛出以下错误:

 mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 
'debian-sys-maint'@'localhost' for table 'cond_instances' when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)

由于升级到 Ubuntu 12.04 LTS 而升级到 MySQL 5.5 后,这第一次发生(对我而言)。

iai*_*inH 32

automysqlbackup 2.6+debian.2-1可以通过停止 automysqlbackup 转储performance_schemainformation_schema数据库来解决此错误(已在 中修复)。这可以通过/etc/default/automysqlbackup如下编辑来完成:

向 grep 步骤添加一个额外的管道以从 DBNAMES 列表中删除performance_schemainformation_schema

因此,在开始的行中DBNAMES=,并在| grep -v ^mysql$插入之后

| grep -v ^performance_schema$ | grep -v ^information_schema$
Run Code Online (Sandbox Code Playgroud)

| tr \\\r\\\n ,\最后一行之前应该看起来像

DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | grep -v ^information_schema$ | tr \\\r\\\n ,\ `
Run Code Online (Sandbox Code Playgroud)

感谢杰罗姆·杜洛埃。

或者,如果您使用来自 sourceforge 的原始 automysqlbackup 包而不是 apt-package,则可以通过修改 /etc/automysqlbackup/myserver.conf 中包含 CONFIG_db_exclude 的行,将 performance_schema 数据库添加到排除的数据库中:

# List of DBNAMES to EXLUCDE if DBNAMES is empty, i.e. ().
CONFIG_db_exclude=( 'information_schema' 'performance_schema' )
Run Code Online (Sandbox Code Playgroud)