Eine einzelne Datenbank mit Mariabackup sichern?

Eine einzelne Datenbank mit Mariabackup sichern?

Ich habe daran gearbeitet, unsere Datenbanksicherungsroutinen zu überarbeiten, und habe mir Mariabackup angesehen, da mysqldump angesichts der Größe unserer Schemata nicht mehr ausreicht. Wir haben mehrere Schemata, die gesichert werden müssen – sie sind alle unterschiedlich groß und haben auch unterschiedliche Sicherungshäufigkeiten (einige müssen alle sechs Stunden gesichert werden, bei anderen kann zwischen den Sicherungen ein Tag liegen). Darüber hinaus besteht unsere Datenbank aus zwei Datenbankservern, die in einer Master-Slave-Konfiguration laufen.

Zu Beginn habe ich diesen Befehl für eines unserer Schemas ausgeführt:

mariabackup --backup --user root --password <pass> --databases db1

Dadurch wurde eine Kopie der Datendateien des Schemas „db1“ erstellt, zusammen mit einigen von MariaDB selbst verwendeten Dateien (aria_log, ib_buffer_pool, ib_logfile, ibdata usw.). Das funktioniert perfekt – wir können separate Backups für jedes unserer Schemas erstellen.

Das Wiederherstellen scheint jedoch eine andere Geschichte zu sein. Nachdem ich das Backup mit „--prepare“ vorbereitet und den Befehl mariabackup --copy-back ausgeführt habe, wird bemängelt, dass das Datenverzeichnis leer sein muss. Wenn ich getrennte Backups habe, wäre es mir dann möglich, diese Schemata unter einer Datenbank (oder besser gesagt einer MariaDB-Instanz) wiederherzustellen? Um es noch deutlicher zu sagen: Wenn ich Backups der Schemata „db1“, „db2“ und „db3“ erstellt habe, kann ich sie anscheinend nicht alle unter derselben Datenbankinstanz wiederherstellen – verstehe ich da etwas nicht?

Antwort1

Teilsicherungen wie Ihre können nur mit --prepare --export wiederhergestellt werden. Dadurch werden einige .cfg-Dateien und die .ibd-Dateien generiert. Die „Wiederherstellung“ soll „ALTER TABLE .. DISCARD TABLESPACE“, „ALTER TABLE IMPORT TABLESPACE“ für jede Tabelle auf dem Zielsystem sein. Leider ist dies nicht zu 100 % automatisiert, denn um einen Tablespace auf einem Zielsystem zu verwerfen, müssen Sie zuerst einen Tablespace auf dem Zielsystem erstellen, mit demselben „CREATE TABLE“.

verwandte Informationen