btrfs inkrementelles Senden und Empfangen von lokalem an Remote-Computer mit mariadb

653
Siranee Jaraswachirakul.

Ich habe ein Problem mit inkrementellem Btrfs-Senden und Empfangen von einem lokalen zu einem entfernten Computer.

Mein Host Lxd ist Ubuntu 16.04.3 LTS mit LXD 2.0.10 und Btrfs-Progs v4.4

Meine 2 Container sind centos7 (CentOS Linux Release 7.3.1611 (Core) mit

btrfs-progs-devel-4.4.1-1.el7.x86_64

btrfs-progs-4.4.1-1.el7.x86_64

mariadb-libs-5.5.52-1.el7.x86_64

mariadb-5.5.52-1.el7.x86_64

mariadb-server-5.5.52-1.el7.x86_64

Der erste mariadb centos7-container. (lokale btrfs)

Ich mache Btrfs-Sub-Volume / var / lib / mariadb / mysql, um die mariadb-Datenbank zu halten, und mache sehr schnell einen Schnappschuss

Das Ergebnis des Btrfs-Snapshot-Beispiels für den ersten mariadb-centos7-Container

ID 281 - Gen 195 - Pfad der obersten Ebene 5 mysql_201707210830

ID 288 gen 186 Pfad der obersten Ebene 5 mysql_201707220830

ID 290 Gen 191 Pfad der obersten Ebene 5 mysql_201707230830

ID 292 Gen 217 MySQL-Pfad der obersten Ebene 5

Der zweite mariadb centos7-Container. (Remote-Btrfs)

Ich mache Btrfs Sub Volume / var / lib / mariadb

und Btrfs-Sub-Volume-Snapshot aus dem ersten mariadb centos7-Container senden, der mit mysql_201707210830 und der Erhöhung zwischen mysql_201707210830 und mysql_201707220830 und der Erhöhung zwischen mysql_201707220830 und mysql_201707230830 beginnt

Das Ergebnis des Btrfs-Snapshot-Beispiels für den zweiten mariadb-centos7-Container

ID 270 Gen 68 Pfad der obersten Ebene 5 mysql_201707210830

ID 274 Gen 66 Pfad der obersten Ebene 5 mysql_201707220830

ID 276 gen 71 Pfad der obersten Ebene 5 mysql_201707230830

Ich beginne das Ergebnis auf dem zweiten mariadb centos7-Container mit folgendem Verfahren zu testen (vor allem "cd / var / lib / mariadb").

  1. Verwenden Sie den Befehl "btrfs sub snap mysql_201707210830 mysql" und dann "systemctl start mariadb". Das Ergebnis ist, dass mariadb wie erwartet funktioniert. (Nach diesem "systemctl stop mariadb", "btrfs sub del mysql" und "btrfs sub sync.")

    1. Verwenden Sie den Befehl "btrfs sub snap mysql_201707220830 mysql" und dann "systemctl start mariadb". Das Ergebnis ist, dass mariadb wie erwartet funktioniert. (Nach diesem "systemctl stop mariadb", "btrfs sub del mysql" und "btrfs sub sync.")

    2. Verwenden Sie den Befehl "btrfs sub snap mysql_201707230830 mysql" und dann "systemctl start mariadb". Das Ergebnis ist nicht wie erwartet !!!! mariadb kann nicht starten.

Helfen Sie mir bitte, in welchem ​​Schritt mache ich den Fehler?

Freundliche Grüße,

Siranee Jaraswachirakul.

0

1 Antwort auf die Frage

0
Siranee Jaraswachirakul.

Mit aller Hilfe vom btrfs-Supportteam. Vielen Dank für die Vorschläge von "Chris Murphy" und "A L".

Schließlich fand ich die Fehlerschritte, die das Ergebnis falsch machten. Das Werkzeug, das sich beim Senden / Empfangen des Quell- und Ziel-Snapshots als identisch erweisen sollte, lautet "rsync -avnc / var / lib / mariadb / mysql_yyyymmddhhmm / user @ ip_destination: / var / lib / mariadb / mysql_yyyymmddhhmm /"

Am Samstag, 12. August 2017 um 20:20 Uhr schrieb:

[root @ backuplogC7 ~] # rsync -avnc / var / lib / mariadb / mysql_201708090830 root@192.168.45.166: // var / lib / mariadb / mysql_201708090830

Sie benötigen für das erste Verzeichnis mit der Option -a ein /.

rsync -a dir dir

ist nicht derselbe Befehl wie

rsync -a dir / dir

Es ist verwirrend, aber Ihr Befehl versucht, das Verzeichnis mysql_201708090830 in der Quelle und im Verzeichnis mysql_201708090830 auf dem Ziel zu erstellen. Deshalb stimmt alles nicht überein. Um "Inhalt von" bedeuten zu können, müssen Sie mindestens den Ursprung nachlaufen.

- Chris Murphy

Ich erinnerte mich nicht an die Schritte, bei denen ich einen Fehler gemacht hatte, und stellte fest, dass die mysql-UUID empfangen hatte.

Der Hauptpunkt, der dazu geführt hat, dass btrfs inkrementell falsch gesendet / empfangen wurde, ist das aktuelle Sub-Volume "mysql" mit "Received UUID", das beim Empfang am Zielstandort (Remote) auftreten sollte, in meinem Fall jedoch am Quellstandort (Local).

Siranee.ja@tpc.co.th schrieb am 13.08.2017 um 12:52 Uhr:

Hallo "A L",

[root @ backuplogC7 ~] # btrfs sub show / var / lib / mariadb/mysql/var/lib/mariadb/mysql Name: mysql UUID: 92f319c5-e132-3249-9b13-d39ee77a2b44 Übergeordnete UUID: - Received UUID: 3ad05 -654c-add6-b1cbcdeaa639 Erstellungszeit: 2017-06-21 13:27:41 +0700 Subvolume ID: 257 Generierung: 539 Gen bei Erstellung: 9 Eltern-ID: 5 Top-Level-ID: 5 Flaggen: - Momentaufnahme (en): mysql_201708060830 mysql_201708070830 mysql_201708080830 mysql_201708090830 mysql_201708100830 mysql_201708110830 mysql_20170812083030

Ja, ich glaube es hat UUID erhalten, weil ich die Quelle aus dem Snapshot mysql_201708040830 wiederhergestellt habe, um zu beweisen, dass der lokale Snapshot funktioniert hat.

Wie lösche ich die empfangene UUID? Was macht man als nächstes? Sie müssen einen Lese- / Schreib-Snapshot von / var / lib / mariadb / mysql erstellen und dann das alte Subvolume und alle seine Snapshots entfernen.

Beispiel aus https://github.com/digint/btrbk/blob/master/doc/FAQ.md

cd / mnt / btr_pool

mv mysubvolume mysubvolume.broken

btrfs subvolume snapshot mysubvolume.broken mysubvolume

Sie können dasselbe mit jedem Ihrer Snapshots tun und als vollständige Snapshots (ohne -p) senden.

~ A

- wie empfohlen von https://github.com/digint/btrbk/blob/master/doc/FAQ.md -

"Ich erhalte eine Fehlermeldung: Abgebrochen:" Received UUID "ist gesetzt

Sie haben wahrscheinlich ein Backup mit send-receive wiederhergestellt und mit dem Eigenschaftensatz btrfs lesen / schreiben lassen. Dies ist schlecht, da alle Snapshots und Sicherungen diese identische "Received UUID" erben, was dazu führt, dass alle diese Sub-Volumes als "dieselben Daten enthaltend" behandelt werden.

Um dies zu beheben, erstellen Sie einen "richtigen" Snapshot:

  • Dies ist als Ihr Vorschlag für das Subvolume "mysql"

cd / mnt / btr_pool

mv mysubvolume mysubvolume.broken

btrfs subvolume snapshot mysubvolume.broken mysubvolume

Jetzt sollte mysubvolume eine leere "Received UUID" haben. Beachten Sie, dass Sie für eine saubere Umgebung auch alle Sub-Volumes (Snapshots sowie Backups) reparieren müssen, die Sie mit dem defekten Sub-Volume erstellt haben.

Prüfen Sie, ob weitere defekte Subvolumes vorhanden sind:

Das Btrfs-Subvolume zeigt mysubvolume.broken

Liste der Btrfs-Subvolumes -a -R / mnt / btr_pool | grep <"Empfangene UUID" von oben>

Liste der Btrfs-Subvolumes -a -R / mnt / btr_backup | grep <"Empfangene UUID" von oben>

  • Dieses Handbuch scheint, dass ich <"Received UUID"> nur das Subvolume "mysql" und die anderen löschen muss ("mysql_201708070830" sollte btrfs subvolume snapshot -r anstelle von btrfs subvolume snapshot verwenden. Ist dies korrekt?

Bereinigen Sie nun alle aufgelisteten Subvolumes (wie oben, jedoch mit dem Btrfs-Subvolume Snapshot -r jetzt). Dann löschen Sie alle defekten Subvolumes:

btrfs subvolume delete * .broken

Schließlich sollten Sie eine saubere Umgebung haben, und btrbk wird sich nicht mehr beschweren.

Das letzte Verfahren zum Reparieren der defekten Snapshot-Subvolumes wird ausgeführt.

Ich habe folgendes getan und es funktioniert so, wie es jetzt sein sollte.

[root @ backuplogC7 mariadb] # btrfs subvolume Momentaufnahme mbroken_201708070830 rw_201708070830 Erstellen Sie eine Momentaufnahme von 'mbroken_201708070830' in './rw_201708070830' [root @ backuplogC7 mariadb]. 511 mbroken_201708070830 ID 318 gen 568 mbroken_2017080808305 ID 319 gen 569 mbroken_2017080908305 ID 318 gen 568 mbroken_201708080830830 ID 320 Gen 570 mbroken_2017080801080103080108013.cn ID 320 Gen 570 mbroken_20170801080108010801080103080108308010830800830801030800830801080083080080083080080080108010801080108010800800 Ebene 5 Pfad mbroken_201708110830 ID 322 Gen 572 oberste Ebene 5 Pfad mbroken_201708120830 ID 323 Gen 573 oberste Ebene 5 Pfad Mbroken_201708130830 ID 324 Gen 543 oberste Ebene 5 Pfad MySQL ID 348 Gen 576 obere Ebene 5 Pfad rw_201707070830 [root @ backruktu04] mbroken_201708080830 rw_201708080830 Erstellen Sie eine Momentaufnahme von 'mbroken_201708080830'. 511 mbroken_201708070830 ID 318 gen 577 5 mbroken_2017080808308 ID 319 gen 578 mbroken_2017080908308 ID 318 gen 577 mbroken_201708080830830 ID 320 Gen 577 mbroken_20170801080108010801080105 ID 320 Gen 579 der obersten Ebene 5 Pfad Ebene 5 Pfad mbroken_201708110830 ID 322 Gen 581 Oberste Ebene 5 Pfad Mbroken_201708120830 ID 323 Gen 582 Oberste Ebene 5 Pfad Mbroken_201708130830 ID 324 Gen 543 Oberste Ebene 5 Pfad MySQL ID 348 Gen 576 Obere Ebene 5 Pfad rw_201707070830 ID 349 Gen. 350 gen 578 oberste Ebene 5 Pfad rw_201708090830 ID 351 Gen 579 obere Ebene 5 Pfad rw_201708100830 ID 352 Gen 580 oberste Ebene 5 Pfad rw_201708110830 ID 353 Gen 581 oberste Ebene 5 Pfad rw_201708120830 ID 354 Gen 582 obere Ebene 5 Pfad rw_2104104 # Btrfs Subvolume-Liste -a -R. | grep "

[root @ backuplogC7 mariadb] # Liste der Btrfs-Subvolumes -a -R. | grep 3ad0334a-4063-654c-add6-b1cbcdeaa639 / var / lib / mariadb / mysql_201708070830 | sch 192.168.45.166 Bootstreffer / in / air / lib / mariakb / mysql_201708070830 bei subvol mysql_201708070830 [root @ backuplogC7 mariadb] # btrfs sub show mysql_201707070880 -126d-574a-814c-e3b4c81b414e Übergeordnete UUID: 1d5bb8eb-b0df-2549-8b62-552cfa517609 erhaltene UUID: - Erstellungszeit: 2017-08-14 07:00:08 +0700 Erstellungsdatum: 355 Generation bei der Erstellung: 583 Parent ID: 5 ID der obersten Ebene: 5 Flags: readonly Snapshot (s): [root @ backuplogC7 mariadb] # rsync -avnc / var / lib / mariadb / mysql_201708070830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708070830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3773 Bytes empfangen 19 Bytes 1083,43 Bytes / Sek. Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189441.32 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201707070830/var/lib/lari/b / mysqa1000 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708080830 Bei Snapshot mysql_201708080830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708080830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708080830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3769 Bytes empfangen 19 Bytes 688,73 Bytes / Sek Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189641.37 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201708080830/var/lib/mariadb / mysql50 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708090830 Bei Snapshot mysql_201708090830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708090830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708090830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3773 Bytes empfangen 19 Bytes 583.38 Bytes / Sek Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189441.32 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201709090830/var/lib/lari/b / mysqa0r050 / 300 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708100830 Bei Snapshot mysql_201708100830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708100830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708100830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3773 Bytes empfangen 19 Bytes 689,45 Bytes / Sek. Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189441.32 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201708100830 / var / lib / mariadb / mysqa1 / 0/0 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708110830 Bei Snapshot mysql_201708110830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708110830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708110830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3773 Bytes empfangen 19 Bytes 689,45 Bytes / Sek Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189441.32 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201708110830 / var / lib / mariadb / mysql4o / 0/0 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708120830 Bei Snapshot mysql_201708120830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708120830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708120830 / Senden der Liste der inkrementellen Dateien ./

gesendet 3773 Bytes empfangen 19 Bytes 689,45 Bytes / Sek Gesamtgröße ist 718361496 Die Geschwindigkeit ist 189441.32 (DRY RUN) [root @ backuplogC7 mariadb] # btrfs send -p / var / lib / mariadb / mysql_201708120830 / var / lib / mariadb / mysqlu / 0/0 ssh 192.168.45.166 Btrfs erhalten / var / lib / MariaDB Bei SubVol / var / lib / MariaDB / mysql_201708130830 Bei Snapshot mysql_201708130830 [root @ backuplogC7 MariaDB] # rsync -avnc / var / lib / MariaDB / mysql_201708130830 / root@192.168.45.166: / var / lib / mariadb / mysql_201708130830 / Senden der Liste der inkrementellen Dateien ./

3773 empfangene Bytes empfangen 19 Bytes 689,45 Bytes / Sek. Gesamtgröße ist 718361496. Geschwindigkeit ist 189441.32 (DRY RUN). [root @ backuplogC7 mariadb] #