Immer wieder werde ich gefragt, wie man einen MySQL Datenbankserver komplett absichert. Eine komplette Datenbanksicherung geht über die Shell recht bequem:
mysqldump –opt –all-databases > sicherung.sql
Falls man ein etwas zu restriktives Limit an geöffneten Dateien über die MySQL Konfigurationseigenschaft open_files_limit gesetzt hat, bekommt man gegebenenfalls eine Fehlermeldung dieser Art:
mysqldump: Got error: 29: File ‘./database/table.MYD’ not found (Errcode: 24) when using LOCK TABLES
Der Fehlercode 24 steht für "Too many open files", d.h. zu viele geöffnete Dateien.
Man kann dieses Problem auf eines der folgenden beiden Weisen lösen:
- Man erhöht open_files_limit, standardmäßig ist es auf den Wert 1024 gesetzt.
- Man ändert den Datenbanksicherungsbefehl leicht ab:
mysqldump –opt –all-databases –single-transaction > sicherung.sql
Über das Argument –single-transaction wird veranlasst, dass jeweils nur eine MySQL Tabelle gleichzeitig geöffnet ist.
Wiederherstellung einer einzelnen Datenbank aus einer kompletten Datenbanksicherung
Aus einer kompletten Datenbanksicherung eines MySQL Servers lässt sich per Shell mittels einer einzigen Befehlszeile eine einzelne Datenbank wiederherstellen:
mysql –one-database datenbank < sicherung.sql
(wobei Datenbank durch den tatsächlichen Namen der Datenbank zu ersetzen ist).