MySQL :: MySQL 5.6 Manual de Referência :: 16.1 Usando a Replicação ZFS
16.1 Usando a Replicação ZFS
Para suportar ambientes de alta disponibilidade, fornecer uma cópia instantânea da informação tanto na máquina atualmente ativa quanto no backup a quente é uma parte crítica da solução HA. Existem muitas soluções para este problema, tais como o Capítulo 17, Replicação.
O sistema de arquivos ZFS fornece funcionalidade para criar um instantâneo do conteúdo do sistema de arquivos, transferir o instantâneo para outra máquina e extrair o instantâneo para recriar o sistema de arquivos. Você pode criar uma snapshot a qualquer momento, e você pode criar quantas snapshots quiser. Criando, transferindo e restaurando snapshots continuamente, você pode fornecer sincronização entre uma ou mais máquinas de uma forma similar ao DRBD.
O exemplo a seguir mostra um sistema Solaris simples rodando com uma única piscina ZFS, montada em /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
Os dados do MySQL são armazenados em um diretório em /scratchpool
. Para ajudar a demonstrar algumas das funcionalidades básicas de replicação, há também outros itens armazenados em /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 criar um instantâneo do sistema de arquivos, você usa zfs snapshot
, especificando o pool e o nome do instantâneo:
root-shell> zfs snapshot scratchpool@snap1
Para listar os instantâneos já tirados:
root-shell> zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTscratchpool@snap1 0 - 24.5K -scratchpool@snap2 0 - 24.5K -
Os próprios instantâneos são armazenados dentro dos metadados do sistema de arquivos, e o espaço necessário para mantê-los varia conforme o tempo passa, devido à forma como os instantâneos são criados. A criação inicial de um instantâneo é muito rápida, pois em vez de tirar uma cópia inteira dos dados e metadados necessários para guardar o instantâneo inteiro, o ZFS grava apenas o ponto no tempo e os metadados de quando o instantâneo foi criado.
À medida que mais mudanças no sistema de arquivo original são feitas, o tamanho da snapshot aumenta porque é necessário mais espaço para manter o registro dos blocos antigos. Se você criar muitas snapshots, digamos uma por dia, e depois apagar as snapshots do início da semana, o tamanho das novas snapshots também pode aumentar, pois as alterações que compõem o estado mais recente têm de ser incluídas nas snapshots mais recentes, em vez de serem espalhadas pelas sete snapshots que compõem a semana.
Você não pode fazer backup direto das snapshots porque elas existem dentro dos metadados do sistema de arquivos em vez de como arquivos regulares. Para obter a snapshot num formato que pode copiar para outro sistema de ficheiros, fita, etc., utilize o comando zfs send
para criar uma versão stream da snapshot.
Por exemplo, para escrever a snapshot para um ficheiro:
root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1
Ou fita adesiva:
root-shell> zfs send scratchpool@snap1 >/dev/rmt/0
Você também pode escrever as mudanças incrementais entre duas instantâneos usando zfs send
:
root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes
Para recuperar um instantâneo, você usa zfs recv
, que aplica a informação do instantâneo ou a um novo sistema de arquivo, ou a um já existente.