Xtrabackup para ambientes de banco de dados MySQL – prt-01

Sabemos que um dos momentos mais críticos da vida de um DBA é a restauração dos backups. A pressão de ter o ambiente funcionando o quanto antes, a tensão dos backups estarem íntegros no momento da restauração, conferir todos os acessos disponíveis e a validação.

Então eis que venho apresentar e/ou simplificar o Xtrabackup.

Xtrabackup é uma ferramenta da companhia percona gratuita para realização de backups e restores de ambientes de banco de dados. Xtrabackup realiza backups de todas as bases da instância de banco de dados sem precisar parar o serviço do MySQL (backups a quente).
O software da Percona é capaz de fazer backups completos e/ou incrementais das bases de dados de MySQL.

Vantagens:

  • Backups sem necessidade de parar o serviço de banco de dados. (Hot Backups);
  • Performance de backup. Xtrabackup é extremamente veloz para realização de backups;
  • Performance para disponibilidade de ambiente. Com o Xtrabackup consegue-se restaurar toda estrutura de banco de dados MySQL em minutos;
  • Facilidade de manuseio. Com poucos comandos consegue-se ter backups completos e/ou incrementais rapidamente e restaurar toda estrura de banco de dados MySQL em minutos;
  • Escabilidade. Xtrabackup realiza backups onde os mesmos podem ser restaurados em qualquer servidor que tenha o serviço de MySQL rodando sem precisar de softwares de terceiros;
  • Acessos. Como Xtrabackup realiza o backup de todo ambiente incluindo a base mysql que contem os metadados, ao restaurar o ambiente, os acessos são mantidos como a fonte de origem;
  • Backups compactos. É possível com poucos comandos realizar backups extremamente compactos e assim fáceis de serem transferidos pela rede.
  • Arquivos de dados para espelhar nos nós de replicação.

Desvantagens:

  • Não é possível realizar backup de apenas uma base de dados. Somente de todo o ambiente;
  • Não é possível restaurar apenas uma base de dados especifica devido a discrepância de metadados na base de dados mysql, sendo necessário restaurar todo o ambiente;
  • Requer uma área de manobra (servidor) para que seja possível realizar o “reparo” de uma base(s) expecifica(s). Para contornar este problema podemos subir a cópia do ambiente realizado pelo Xtrabackup em um servidor de manobra, realizamos o dump da base específica e seu arquivo podemos restaurar em qualquer ambiente de banco de dados MySQL;
  • Para restaurar é necessário parar o serviço de banco de dados, copiar os arquivos do Xtrabackup para o diretório de data configurado no my.cnf e iniciar o serviço;

Apesar das desvantagens apresentadas, Xtrabackup ainda demonstra ser uma ferramenta extremamente eficiente e robusta para realização de restauração de ambiente de banco de dados.

Nos testes realizados em um servidor de 32GB RAM, 4CPUs tivemos a seguinte comparação:

Base de dados 80GB:

  • Mysqldump:
    • Tempo de backup/restore: 6 horas para uma base.
  • Xtrabackup:
    • Tempo de backup/restore: 10 minutos para todo ambiente.

DESCOMPLICANDO XTRABACKUP:

COMANDOS PARA REALIZAÇÃO DE BACKUP:

Abordaremos os procedimentos do Xtrabackup para realização dos backups completos e incrementa:

Requisitos:

  • Criação de usário, senha e acessos ao ambiente de produção de banco de dados.

Para nossos testes criei:

Usuário: xtrabackup

Senha: Xtra2020Backup

  • Criação dos diretórios para armazenamento dos backups.

Diretório para backup completo: /backup/FULL

Diretório para backup incremental: /backup/INCREMENTAL/01_monday

Diretório para preparação dos arquivos: /backup/PREPARED

No próximo post falaremos da estrutura de ambiente de backup e algumas sugestões.

BACKUP COMPLETO:

xtrabackup --host=<Ip host> --port=<Porta host> --user=xtrabackup--password=Xtra2020Backup --backup --target-dir=/backup/FULL

BACKUP INCREMENTAL:

xtrabackup --host=<Ip host> --port=<Ip host> --user=xtrabackup --password=Xtra2020Backup --backup --target-dir=/backup/FULL --incremental-basedir=/backup/INCREMENTAL/01_monday

COMANDOS PARA PREPARAR OS ARQUIVOS DE BACKUP:

No Xtrabackup antes de restaurar os arquivos no servidor de destino, é necessário preparar os arquivos de backup tanto o completo para aceitar incremental quanto o incremental para ser restaurado.

Minha sugestão é copiar os arquivos que serão preparados para outro diretório, assim não corremos o risco de danificar os arquivos originais ou caso precisemos deles, não será necessário refazer o backup do ambiente de banco de dados.

cp -r /backup/FULL /backup/PREPARED
  • Preparando o backup completo (não aceita incrementais):
xtrabackup --prepare --target-dir=/backup/PREPARED/FULL
  • Preparando o backup completo (aceitar incrementais):
xtrabackup  --prepare --apply-log-only --target-dir=/backup/PREPARED/FULL

Sutil diferença entre os dois comandos está em: –apply-log-only

Após arquivos preparados, hora de restaurar o ambiente.

COMANDOS RESTAURAR AMBIENTE DE BANCO DE DADOS:

Seja no servidor de origem que você pretende restaurar os arquivos, um servidor para desenvolvimento/teste/homologação ou até mesmo para criar/adicionar Nós de replicação será necessário parar o serviço do MySQL da maquina de destino para que seja copiado os arquivos para o diretório de dados configurados no my.cnf do MySQL.

  • Pare o MySQL de destino:
systemctl stop mysqld
  • Limpe o diretório de dados que estão apontados no datadir do my.cnf. (Sugiro fortemente que ao em vez de apagar, apenas remova os arquivos desse diretório para outro local por precaução).
  • Copie os arquivos preparados para o diretório do datadir apontado no my.cnf do MySQL. (Não o diretório FULL e sim os arquivos e diretórios dentro dele).

SE FOR RESTAURAR O INCREMENTAL E NÃO O COMPLETO, SERÁ NECESSÁRIO SOMENTE COPIAR OS DADOS DO DIRETÓRIO QUE FOI PREPARADO O INCREMENTAL, NO NOSSO CASO /backup/INCREMENTAL/PREPARED/01_monday

Explicação: Ao preparar os arquivos incremental em palavras robustas, ele aplica o Full no incremental diferentemente do SQL Server por exemplo que necessariamente precisa adicionar os dois arquivos (full e incremental) na rotina de restauração.
Mas lembre-se, para preparar o incremental você SEMPRE precisará ter um FULL antes, pois ele também trabalha com sincronismo de numeração de logs (modificações).
Caso não tenha o Full ou por algum motivo o perdeu antes de preparar os arquivos incrementais, os incrementais serão totalmente descartáveis.

Após a cópia dos arquivos eis que só é necessário dar start no serviço do MySQL, certo?

NÃO!!!!!!

Altere o dono do diretório para o usuário MYSQL, muitas das vezes ao copiar o arquivo utiliza-se sudo e os mesmos irão com permissão de arquivos e diretórios como root.

  • Dito isso, altere o diretório inteiro para o usuário MYSQL
chown -R mysql:mysql /<seu diretório datadir>

  • E agora sim!! Start no serviço de banco de dados MySQL
systemctl start mysqld

E assim nós concluímos uma restauração de todo ambiente de banco de dados rápido, prático e sem maiores dores de cabeça.

Conclusão:

Xtrabackup é uma excelente e eficiente ferramenta de realização de backups (hot backups) e restauração de ambientes de banco de dados MySQL. Existem algumas desvantagens, mas, seus benefícios são bem maiores. Pensamos em um ambiente que queremos como replicação 10 nós. Com esse tutorial conseguiriamos colocar os nós para funcionar em tempo extremamente relevante ao que fosse com um mysqldump. Dependendo do tempo de cópia (tamanho dos arquivos origem), digamos que em 10 minutos ou menos temos uma replicação de 10 nós funcionando a todo vapor.

***UMA COISA QUE NÃO PODERIA DEIXAR DE INFORMAR:***

A ULTIMA VERSÃO DO XTRABACKUP (Versão 8.0) NÃO FUNCIONA COM MYSQL 5.7 OU POSTERIOR. SÓ FUNCIONA COM MYSQL 8.0.

NESTE CASO, UTILIZAR O XTRABACKUP (Versão 2.4).

No próximo post da série vamos estruturar um ambiente de banco de dados e o mais legal, iremos automatizar tudo para nós. (Trarei uma surpresa para nossos seguidores, aguardem!!)

Documentação oficial Percona Xtrabackup.

Instalação Xtrabackup 2.4

Marcado com: , ,
Publicado em MySQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Arquivos
Follow SQL DATA BLOG on WordPress.com
Mais acessados
  • Nenhum
%d blogueiros gostam disto: