MySQL :: Manual de Referencia de MySQL 5.6 :: 16.1 Uso de la Replicación ZFS
16.1 Uso de la Replicación ZFS
Para soportar entornos de alta disponibilidad, proporcionar una copia instantánea de la información tanto en la máquina actualmente activa como en la copia de seguridad en caliente es una parte crítica de la solución de HA. Hay muchas soluciones para este problema, como el capítulo 17, Replicación.
El sistema de archivos ZFS proporciona una funcionalidad para crear una instantánea del contenido del sistema de archivos, transferir la instantánea a otra máquina y extraer la instantánea para recrear el sistema de archivos. Puedes crear una instantánea en cualquier momento, y puedes crear tantas instantáneas como quieras. Al crear, transferir y restaurar continuamente instantáneas, puede proporcionar sincronización entre una o más máquinas de forma similar a DRBD.
El siguiente ejemplo muestra un sencillo sistema Solaris que se ejecuta con un único pool ZFS, montado en /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
Los datos de MySQL se almacenan en un directorio en /scratchpool
. Para ayudar a demostrar algunas de las funcionalidades básicas de replicación, también hay otros elementos almacenados en /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/
Para crear una instantánea del sistema de archivos, se utiliza zfs snapshot
, especificando el pool y el nombre de la instantánea:
root-shell> zfs snapshot scratchpool@snap1
Para listar las instantáneas ya tomadas:
root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -
Las propias instantáneas se almacenan dentro de los metadatos del sistema de archivos, y el espacio necesario para mantenerlas varía a medida que pasa el tiempo debido a la forma en que se crean las instantáneas. La creación inicial de una instantánea es muy rápida, porque en lugar de tomar una copia completa de los datos y metadatos necesarios para mantener toda la instantánea, ZFS registra sólo el punto en el tiempo y los metadatos de cuando se creó la instantánea.
A medida que se realizan más cambios en el sistema de archivos original, el tamaño de la instantánea aumenta porque se necesita más espacio para mantener el registro de los bloques antiguos. Si se crean muchas instantáneas, digamos una por día, y luego se borran las instantáneas de antes de la semana, el tamaño de las instantáneas más nuevas también podría aumentar, ya que los cambios que componen el estado más reciente tienen que incluirse en las instantáneas más recientes, en lugar de repartirse entre las siete instantáneas que componen la semana.
No se puede hacer una copia de seguridad directa de las instantáneas porque existen dentro de los metadatos del sistema de archivos y no como archivos normales. Para obtener la instantánea en un formato que pueda copiar en otro sistema de archivos, cinta, etc., se utiliza el comando zfs send
para crear una versión de flujo de la instantánea.
Por ejemplo, para escribir la instantánea en un archivo:
root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1
O en una cinta:
root-shell> zfs send scratchpool@snap1 >/dev/rmt/0
También puede escribir los cambios incrementales entre dos instantáneas utilizando zfs send
:
root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes
Para recuperar una instantánea, se utiliza zfs recv
, que aplica la información de la instantánea a un nuevo sistema de archivos, o a uno existente.