Wie stoppe ich automysqlbackup beim Auslösen eines LOCK TABLES-Fehlers?

21

So stoppen Sie das cron.daily-Skript von automysqlbackup - wie installiert und konfiguriert von apt-get install automysqlbackup- und lösen den folgenden Fehler aus:

 mysqldump: Got error: 1142: SELECT,LOCK TABL command denied to user 
'debian-sys-maint'@'localhost' for table 'cond_instances' when using LOCK TABLES

Dies geschah (für mich) zum ersten Mal nach einem Upgrade auf MySQL 5.5 als Folge eines Upgrades auf Ubuntu 12.04 LTS.

iainH
quelle

Antworten:

32

Dieser Fehler (der in behoben wurde automysqlbackup 2.6+debian.2-1) kann umgangen werden, indem automysqlbackup daran gehindert wird, die performance_schemaund information_schema-Datenbanken zu sichern . Dies kann folgendermaßen bearbeitet /etc/default/automysqlbackupwerden:

Fügen Sie eine zusätzliche Pipe hinzu, um grep step zu entfernen performance_schemaund information_schemaaus der Liste der DBNAMES zu entfernen .

Also, in der Zeile, die beginnt DBNAMES=, und nach dem | grep -v ^mysql$Einfügen

| grep -v ^performance_schema$ | grep -v ^information_schema$

davor | tr \\\r\\\n ,\sollte die letzte Zeile so aussehen

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 ,\ `

Vielen Dank an Jérôme Drouet.

Wenn Sie alternativ das ursprüngliche automysqlbackup-Paket von sourceforge und nicht das apt-Paket verwenden, können Sie die Datenbank performance_schema zu Ihren ausgeschlossenen Datenbanken hinzufügen, indem Sie die Zeile mit CONFIG_db_exclude in Ihrer Datei /etc/automysqlbackup/myserver.conf ändern:

# List of DBNAMES to EXLUCDE if DBNAMES is empty, i.e. ().
CONFIG_db_exclude=( 'information_schema' 'performance_schema' )
iainH
quelle
Ihre Antwort funktioniert. Gehen Sie vor und wählen Sie Ihre Antwort als die richtige.
Stefan Lasiewski
Dies ist auch die Fehlerbehebung unter OS X (über Homebrew).
Michael Thompson