MySQL :: MySQL 5.6 Reference Manual :: 16.1 Using ZFS Replication
16.1 Using ZFS Replication
Zur Unterstützung von Hochverfügbarkeitsumgebungen ist die Bereitstellung einer sofortigen Kopie der Informationen sowohl auf dem gerade aktiven Rechner als auch auf dem Hot-Backup ein entscheidender Teil der HA-Lösung. Es gibt viele Lösungen für dieses Problem, wie zum Beispiel Kapitel 17, Replikation.
Das ZFS-Dateisystem bietet die Möglichkeit, einen Schnappschuss des Dateisysteminhalts zu erstellen, den Schnappschuss auf einen anderen Rechner zu übertragen und den Schnappschuss zu extrahieren, um das Dateisystem neu zu erstellen. Sie können jederzeit einen Schnappschuss erstellen, und Sie können so viele Schnappschüsse erstellen, wie Sie möchten. Durch kontinuierliches Erstellen, Übertragen und Wiederherstellen von Snapshots können Sie eine Synchronisierung zwischen einem oder mehreren Rechnern ähnlich wie bei DRBD bereitstellen.
Das folgende Beispiel zeigt ein einfaches Solaris-System mit einem einzelnen ZFS-Pool, der unter /scratchpool
eingehängt ist:
Filesystem size used avail capacity Mounted on/dev/dsk/c0d0s0 4.6G 3.7G 886M 82% //devices 0K 0K 0K 0% /devicesctfs 0K 0K 0K 0% /system/contractproc 0K 0K 0K 0% /procmnttab 0K 0K 0K 0% /etc/mnttabswap 1.4G 892K 1.4G 1% /etc/svc/volatileobjfs 0K 0K 0K 0% /system/object/usr/lib/libc/libc_hwcap1.so.1 4.6G 3.7G 886M 82% /lib/libc.so.1fd 0K 0K 0K 0% /dev/fdswap 1.4G 40K 1.4G 1% /tmpswap 1.4G 28K 1.4G 1% /var/run/dev/dsk/c0d0s7 26G 913M 25G 4% /export/homescratchpool 16G 24K 16G 1% /scratchpool
Die MySQL-Daten sind in einem Verzeichnis auf /scratchpool
gespeichert. Zur Veranschaulichung einiger grundlegender Replikationsfunktionen sind auch andere Elemente in /scratchpool
gespeichert:
total 17drwxr-xr-x 31 root bin 50 Jul 21 07:32 DTT/drwxr-xr-x 4 root bin 5 Jul 21 07:32 SUNWmlib/drwxr-xr-x 14 root sys 16 Nov 5 09:56 SUNWspro/drwxrwxrwx 19 1000 1000 40 Nov 6 19:16 emacs-22.1/
Um einen Snapshot des Dateisystems zu erstellen, verwenden Sie zfs snapshot
, wobei Sie den Pool und den Snapshot-Namen angeben:
root-shell> zfs snapshot scratchpool@snap1
Um die bereits erstellten Schnappschüsse aufzulisten:
root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -
Die Snapshots selbst werden in den Metadaten des Dateisystems gespeichert, und der für sie benötigte Speicherplatz variiert im Laufe der Zeit aufgrund der Art und Weise, wie die Snapshots erstellt werden. Die anfängliche Erstellung eines Schnappschusses ist sehr schnell, da ZFS nur den Zeitpunkt und die Metadaten der Erstellung des Schnappschusses aufzeichnet, anstatt eine vollständige Kopie der Daten und Metadaten zu erstellen, die für die Speicherung des gesamten Schnappschusses erforderlich sind.
Je mehr Änderungen am ursprünglichen Dateisystem vorgenommen werden, desto größer wird der Schnappschuss, da mehr Platz für die Aufzeichnung der alten Blöcke benötigt wird. Wenn Sie viele Schnappschüsse erstellen, z. B. einen pro Tag, und dann die Schnappschüsse von früher in der Woche löschen, kann die Größe der neueren Schnappschüsse ebenfalls zunehmen, da die Änderungen, die den neueren Zustand ausmachen, in die neueren Schnappschüsse aufgenommen werden müssen, anstatt über die sieben Schnappschüsse der Woche verteilt zu werden.
Sie können die Snapshots nicht direkt sichern, da sie in den Metadaten des Dateisystems und nicht als normale Dateien vorliegen. Um den Snapshot in ein Format zu bringen, das Sie auf ein anderes Dateisystem, ein Band usw. kopieren können, verwenden Sie den Befehl zfs send
, um eine Stream-Version des Snapshots zu erstellen.
Zum Beispiel, um den Snapshot in eine Datei zu schreiben:
root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1
Oder auf ein Band:
root-shell> zfs send scratchpool@snap1 >/dev/rmt/0
Sie können auch die inkrementellen Änderungen zwischen zwei Snapshots mit zfs send
herausschreiben:
root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes
Um einen Snapshot wiederherzustellen, verwenden Sie zfs recv
, das die Snapshot-Informationen entweder auf ein neues oder ein bestehendes Dateisystem anwendet.