MySQL : : Manuel de référence MySQL 5.6 : : 16.1 Utilisation de la réplication ZFS

16.1 Utilisation de la réplication ZFS

Pour prendre en charge les environnements de haute disponibilité, fournir une copie instantanée des informations à la fois sur la machine actuellement active et sur la sauvegarde à chaud est une partie critique de la solution HA. Il existe de nombreuses solutions à ce problème, comme le chapitre 17, Réplication.

Le système de fichiers ZFS fournit une fonctionnalité permettant de créer un instantané du contenu du système de fichiers, de transférer l’instantané vers une autre machine et d’extraire l’instantané pour recréer le système de fichiers. Vous pouvez créer un snapshot à tout moment, et vous pouvez créer autant de snapshots que vous le souhaitez. En créant, transférant et restaurant continuellement des instantanés, vous pouvez fournir une synchronisation entre une ou plusieurs machines d’une manière similaire à DRBD.

L’exemple suivant montre un système Solaris simple fonctionnant avec un seul pool ZFS, monté à /scratchpool :

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

Les données MySQL sont stockées dans un répertoire sur /scratchpool. Pour aider à démontrer certaines des fonctionnalités de réplication de base, il y a également d’autres éléments stockés dans /scratchpool :

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/

Pour créer un instantané du système de fichiers, vous utilisez zfs snapshot, en spécifiant le pool et le nom de l’instantané :

root-shell> zfs snapshot scratchpool@snap1

Pour lister les instantanés déjà pris :

root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -

Les instantanés eux-mêmes sont stockés dans les métadonnées du système de fichiers, et l’espace nécessaire pour les conserver varie au fil du temps en raison de la manière dont les instantanés sont créés. La création initiale d’un instantané est très rapide, car au lieu de prendre une copie complète des données et des métadonnées nécessaires pour conserver l’instantané entier, ZFS n’enregistre que le point dans le temps et les métadonnées du moment où l’instantané a été créé.

Au fur et à mesure que des modifications sont apportées au système de fichiers d’origine, la taille de l’instantané augmente car il faut plus d’espace pour conserver l’enregistrement des anciens blocs. Si vous créez beaucoup d’instantanés, disons un par jour, puis supprimez les instantanés du début de la semaine, la taille des instantanés les plus récents pourrait également augmenter, car les modifications qui constituent le nouvel état doivent être incluses dans les instantanés les plus récents, plutôt que d’être réparties sur les sept instantanés qui constituent la semaine.

Vous ne pouvez pas sauvegarder directement les instantanés car ils existent dans les métadonnées du système de fichiers plutôt que comme des fichiers ordinaires. Pour obtenir l’instantané dans un format que vous pouvez copier sur un autre système de fichiers, une bande, et ainsi de suite, vous utilisez la commande zfs send pour créer une version de flux de l’instantané.

Par exemple, pour écrire l’instantané dans un fichier :

root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1

Ou une bande :

root-shell> zfs send scratchpool@snap1 >/dev/rmt/0

Vous pouvez également écrire les changements incrémentiels entre deux instantanés en utilisant zfs send :

root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes

Pour récupérer un instantané, vous utilisez zfs recv, qui applique les informations de l’instantané soit à un nouveau système de fichiers, soit à un système existant.