Docker-Compose-MariaDB-Instanzen reparieren (aria_chk -r)

English Deutsch

Problem:

Sie versuchen, einen MariaDB-Container mit docker-compose zu starten. Der Datenbankcontainer startet jedoch nicht und Sie sehen Fehlermeldungen wie diese in den Logs:

mariadb-aria-errors.txt
[ERROR] mysqld: Aria recovery failed. Please run aria_chk -r on all Aria tables and delete all aria_log.######## files
[ERROR] Plugin 'Aria' init function returned error.
[ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
....
[ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
[ERROR] Failed to initialize plugins.
[ERROR] Aborting

Lösung

Die Log-Meldungen sagen Ihnen bereits, was zu tun ist – aber nicht, wie man es macht:

aria-recovery-instructions.txt
Aria recovery failed. Please run aria_chk -r on all Aria tables and delete all aria_log.######## files

Zuerst sichern Sie das gesamte MariaDB-Datenverzeichnis: Prüfen Sie, auf welches Host-Verzeichnis das Datenverzeichnis (/var/lib/mysql) des Containers abgebildet ist, und kopieren Sie das gesamte Verzeichnis an einen Backup-Speicherort. Dies ist wichtig, falls der Reparaturprozess fehlschlägt.

Nun führen wir aria_chk -r aus, um MySQL-Tabellendateien zu überprüfen und zu reparieren.

docker-aria-repair.sh
docker-compose run my-db bash -c 'aria_chk -r /var/lib/mysql/**/*'

Ersetzen Sie my-db durch den Namen Ihres Datenbankcontainers. Dies wird versuchen, auch viele Nicht-Tabellen-Dateien zu reparieren, aber aria_chk ignoriert diese glücklicherweise.

Nun können wir die Log-Dateien löschen:

docker-remove-aria-logs.sh
docker-compose run my-db bash -c 'rm /var/lib/mysql/aria_log.*'

Ersetzen Sie erneut my-db durch den Namen Ihres Datenbankcontainers.


Check out similar posts by category: Databases, Docker