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.