O MariaDB Enterprise Backup é uma solução de backup da MariaDB Corporation com vários recursos, como backups sem bloqueio, backup completo, backup incremental, backup parcial e recuperação pontual.
Muitas vezes recebemos perguntas sobre as diferenças entre os recursos de gerenciamento de backup do MariaDB Backup e do ClusterControl. Então é disso que trata este blog.
Criar backups versus gerenciá-los
MariaDB Backup é um fork do Percona XtraBackup, e é uma ferramenta para fazer backups físicos do servidor MariaDB. Ele permite que você faça backups completos, incrementais e parciais. Pode-se também executar a recuperação pontual com a ajuda de logs binários. De acordo com a documentação, a versão ‘Enterprise’ do backup do MariaDB fornece “rastreamento de instruções DDL, o que reduz o tempo de bloqueio durante os backups”.
ClusterControl suporta MariaDB Backup como um método de backup para MariaDB. Ele fornece uma interface gráfica do usuário para agendar backups completos, backups incrementais e backups parciais e realizar a recuperação de arquivos de backup ou também automatizar a recuperação pontual. Além disso, o ClusterControl fornece recursos como criptografia, compactação, upload para o armazenamento em nuvem (Azure, AWS, Google Cloud) e verificação automática de backups para garantir que sejam recuperáveis.
Backup e restauração completos
Para realizar o backup completo usando o MariaDB Enterprise Backup, você pode usar os utilitários de comando mariabackup. Existem 4 entradas de parâmetros após o comando mariabackup. O parâmetro são:
- Backup - isso é usado para fazer backup do banco de dados usando os utilitários mariabackup.
- Prepare - para fazer um backup consistente pontual, você precisa preparar o backup após a execução do backup bruto.
- Copy-back - usado para restaurar o backup extraído para o diretório de dados padrão do mysql. Ele copiará o backup para o diretório mysql, sem remover o backup original.
- Retorno - usado para restaurar o backup extraído para o diretório de dados mysql movendo todos os diretórios de backup.
Se você deseja fazer backup e restaurar, basta passar o parâmetro obrigatório após o comando mariabackup. Para um comando de backup completo, veja abaixo um script de exemplo usando o MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Existem algumas opções que você precisa definir, como --target-dir, que é o local de destino dos arquivos de backup, --user, usado para usuários de credenciais para backup e --password para a senha de backup da credencial.
Para tornar o backup consistente de ponto no tempo, você deve executar a preparação após a conclusão do backup completo. Os arquivos de dados não são consistentes até que você execute a preparação, porque quando você executa o backup, os arquivos de dados foram copiados em diferentes momentos durante o backup.
Para executar o backup de preparação:
mariabackup --prepare --target-dir=/backup/full
Depois de executar o prepare, ele deixará o backup pronto para ser restaurado. Você verá a mensagem na última linha abaixo, quando a preparação foi bem-sucedida.
InnoDB: Shutdown completed; log sequence number 9553231
Você pode executar o comando de restauração usando copy-back. Aqui está o script de exemplo para restaurar o backup:
mariabackup --copy-back --target-dir=/backup/full
Você pode colocar o script acima em um comando shell script e dar permissão executável, configurá-lo no agendador do sistema operacional.
Backup e restauração usando ClusterControl Backup Management é muito fácil de usar. ClusterControl suporta backup lógico e backup físico. Para backup lógico, o ClusterControl usa mysqldump e para backup físico usa mariabackup backup completo e incremental.
Existem duas opções de como você deseja fazer o backup; você pode criar o backup diretamente ou pode agendar o backup.
Você também pode ativar algumas opções como criptografia, compactação, thread de cópia paralela como mostrado abaixo :
Restaurar o backup é tão fácil quanto o backup foi criado. Você só precisa selecionar o arquivo de backup completo que deseja restaurar.
Existem duas opções de como você deseja restaurar o backup; você pode restaurar o backup para os nós onde o backup foi feito ou pode restaurar o backup para um host autônomo dedicado.
Backup e restauração incrementais
Fazer um backup completo de um banco de dados muito grande consumirá muito tempo e consumirá muitos recursos. O backup incremental é usado para realizar o backup das alterações após a realização do último backup completo.
Quando o backup incremental estiver em execução, o MariaDB Enterprise Backup comparará o backup completo anterior ou o backup incremental para encontrar as últimas alterações.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Antes de executar o backup incremental, você precisa garantir que o backup completo tenha sido preparado. Depois disso, você pode executar o backup incremental, aplicando-se ao último backup completo.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Após o backup incremental ter sido aplicado ao backup completo, o diretório de backup completo agora terá todos os dados de backup preparados.
A restauração do backup completo preparado com todas as alterações incrementais pode ser feita por meio de:
mariabackup --copy-back --target-dir=/backup/full
Para realizar backup incremental no ClusterControl, você pode escolher o mariabackup incremental. Você precisa ter o backup completo preparado antes de fazer o backup incremental.
O ClusterControl encontrará automaticamente o backup completo mais próximo quando você executar o backup incremental. E para restaurar o backup, você pode escolher o backup e a restauração completos preparados. Ele perguntará como você deseja restaurar o backup, seja no nó ou no host autônomo. Ele irá restaurar o backup incluindo alterações incrementais.
Backup e restauração parcial
Backup parcial especifica qual banco de dados ou tabela você deseja fazer backup. Você pode escolher uma lista de bancos de dados e tabelas para fazer backup ou pode excluir alguns bancos de dados e tabelas do backup. As opções incluem:--databases, --databases-exclude, --tables, --tables-exclude
Abaixo está um script de exemplo para fazer o backup parcial, para a tabela card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Você ainda precisa preparar o backup parcial completo para tornar o backup consistente em um momento específico executando o comando abaixo:
mariabackup --prepare --export --target-dir=/backup/partial
Realizar a restauração parcial é muito diferente da restauração do backup completo e do backup incremental. Você precisa preparar as tabelas e o banco de dados no MariaDB Server em execução e, em seguida, copiar manualmente os arquivos de dados no diretório de dados mysql.
Por exemplo, você deseja fazer uma restauração parcial para a tabela card_data (tabela não particionada).
- Crie a tabela vazia de card_data com a mesma estrutura no banco de dados de destino
- Execute o tablespace DISCARD na tabela card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Copie os arquivos de dados no diretório de dados do mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Alterar o proprietário dos arquivos para mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Por último, importe o tablespace:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
O Backup Parcial no ClusterControl é realmente simples, você só precisa habilitar a opção Backup Parcial. Ele lhe dará a opção de incluir ou excluir banco de dados e tabelas conforme mostrado abaixo:
A próxima parte é semelhante ao backup completo e backup incremental, você pode escolha configurações como criptografia e compactação.
Restaurar o backup parcial é exatamente o mesmo que restaurar o backup completo. Você só precisa escolher o backup parcial, e o resto será tratado pelo ClusterControl.
Recuperação pontual
A restauração do backup completo ou do backup incremental fornece um backup a partir do momento em que o backup foi feito, mas não fornece nenhum dado que veio depois que o backup foi feito. Essas alterações seriam no log binário. Ao realizar o backup preparado com o binlog habilitado, haverá um arquivo chamado xtrabackup_binlog_info. O arquivo contém um arquivo de log binário e a posição do último número de sequência.
Você pode executar a recuperação pontual extraindo as alterações no SQL, como após a restauração. Você pode executar mysqlbinlog para extrair a hora específica no nó do banco de dados de origem e aplicar o SQL no nó do banco de dados de destino/restaurado.
A recuperação pontual (PITR) no ClusterControl pode ser habilitada conforme mostrado abaixo:
Você precisa definir até que ponto recuperar, há duas opções suportadas que são baseados no tempo ou na posição. Para baseado em tempo, você só precisa preencher a hora exata em que os dados serão restaurados. Para a posição baseada, você precisa preencher o nome e a posição do log binário. O resto da restauração é semelhante.
Conclusão
É isso por enquanto. Como vimos acima, o MariaDB Backup é uma boa ferramenta com muitas opções. O ClusterControl fornece uma GUI fácil de usar para executar os procedimentos de backup. Ele também adiciona vários recursos, como criptografia, compactação, agendamento, gerenciamento de retenção e verificação automática de backup.