Criando um backup do MySQL com a ferramenta XtraBackup

Percona XtraBackup é uma ferramenta para backup quente de bancos de dados MySQL.

Durante a criação do backup, não há bloqueio das tabelas, seu sistema continua funcionando sem quaisquer limitações.

XtraBackup 2.4 pode criar backups de tabelas InnoDB, XtraDB e MyISAM em servidores MySQL 5.11, 5.5, 5.6 e 5.7, assim como no servidor incorporou para MySQL com XtraDB.

Para trabalhar com MySQL 8.x deve-se usar a versão XtraBackup 8.x. Neste artigo, falaremos apenas sobre XtraBackup 2.4.

A principal vantagem XtraBackup é que essa ferramenta é adequada tanto para criar backups de sistemas com alta carga servidores, quanto para sistemas com baixa quantidade de transações.

Se o tamanho total de seus bancos de dados MySQL for significativo (dezenas de gigabytes), a ferramenta padrão mysqldump não permitirá que você crie rapidamente um backup, e a restauração do dump levará muito tempo.

Instalação

Instalação XtraBackup do repositório apt Percona.

Execute as seguintes comandos sequencialmente:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. Após a instalação, execute o comando xtrabackup -v. É importante garantir que a ferramenta está funcionando corretamente no servidor. Como resultado, você verá algo semelhante na tela:

xtrabackup: recognized server arguments: --datadir=/var/lib/mysql --tmpdir=/tmp --server-id=1 --logbin=/var/log/mysql/mysql-bin.log --innodbbufferpoolsize=16384M --innodbfilepertable=1 --innodbflushmethod=Odirect --innodbflushlogattrxcommit=0xtrabackup version 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Criando um backup do MySQL com a ferramenta XtraBackup

As permissões, acesso e privilégios 

XtraBackup deve ser capaz de:

  • Conectar-se ao seu servidor MySQL.

  • Ter acesso ao diretório datadir. 

  • Durante a criação do backup, ter permissão de gravação no diretório especificado pelo parâmetro target-dir diretório.

O que é o datadir?

datadir é o diretório em que o servidor de banco de dados MySQL armazenará os dados. Todos os bancos de dados, todas as tabelas estão lá. Na maioria das distribuições Linux, esse diretório padrão é /var/lib/mysql.

O que é o diretório target-dir?

target-dir é o diretório onde o backup será salvo.

O usuário do banco de dados precisa das seguintes permissões sobre as tabelas e bancos de dados a serem copiados:

  • RELOAD e LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • PROCESS

  • SUPER

  • CREATE

  • INSERT

  • SELECT

Configuração 

Configuração XtraBackup é executado usando opções que se comportam exatamente como os parâmetros padrão do MySQL.

O que isso significa?

Os parâmetros de configuração podem ser especificados na linha de comando ou em um arquivo de configuração do SGBD, por exemplo, em /etc/my.cnf.

A ferramenta XtraBackup, após ser iniciada, lê as seções [mysqld] e [xtrabackup] dos arquivos de configuração do MySQL. Isso é feito para que a ferramenta possa utilizar as configurações do seu SGBD sem a necessidade de especificar os parâmetros manualmente a cada backup.

Por exemplo, o valor datadir e alguns parâmetros InnoDB do XtraBackup são obtidos da configuração do seu SGBD.

Se você deseja sobrepor os parâmetros para o funcionamento do XtraBackup que estão na seção [mysqld], basta especificá-los no arquivo de configuração na seção [xtrabackup]. Como serão lidos posteriormente, sua prioridade será maior.

Você pode não adicionar nenhum parâmetro em my.cnf. Todos os parâmetros necessários podem ser especificados na linha de comando. Normalmente, a única coisa que pode ser conveniente colocar na seção [xtrabackup] do seu my.cnf — é o parâmetro target_dir, que por padrão define o diretório onde os backups serão armazenados. Mas isso não é obrigatório.

Exemplo de especificação do caminho para o diretório de backup em my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Script de criação de backup

Para criar um backup, você pode usar o seguinte script:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

O que acontece durante a execução do script?

Primeiro, limpamos (removemos) o diretório onde salvaremos o backup:

rm -rf /mysql/backup.

Em seguida, com a ferramenta XtraBackup criamos o backup e o salvamos em /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Préviamente, no MySQL, criamos um usuário xtrabackup com as permissões necessárias. Com o parâmetro target-dir especificamos o diretório onde o backup deve ser salvo.

Um ponto importante!

Preste atenção na linha do script:

xtrabackup --prepare --target-dir=/mysql/backup

Os dados no diretório /mysql/backup não são consistentes até que sejam preparados. 

A questão é que durante a cópia dos arquivos, alterações podem ter ocorrido. A operação xtrabackup --prepare --target-dir=/mysql/backup torna os dados do backup perfeitamente consistentes em termos de tempo.

A operação de preparação dos dados pode ser realizada em qualquer máquina. Não é necessário fazê-lo no servidor onde está o SGBD original. Você pode copiar o backup para o servidor de destino e prepará-lo lá.

A última coisa que fazemos é criar um arquivo onde colocamos nosso backup:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backup

Restauração do backup 

Antes de começar a restauração do backup no servidor de destino, os dados precisam passar pela fase de preparação. Veja como fazer isso acima.

O processo de recuperação de dados é muito simples. Você precisa extrair o backup do arquivo e substituir os dados em datadir.

Como substituir os dados no datadir?

Vamos considerar duas opções.

Opção 1

Usar a ferramenta XtraBackup. É necessário especificar a opção —copy-back. 

O comando abaixo transferirá o backup para datadir do servidor de destino:

xtrabackup --copy-back --target-dir=/mysql/backup

Opção 2

Você pode proceder de outra forma, sem a ferramenta XtraBackup.

Tudo o que você precisa fazer é copiar o backup para datadir. Você pode fazer isso usando cp ou rsync.

É importante entender que o procedimento de restauração do backup se resume apenas a substituir o conteúdo do diretório datadir.

Antes de iniciar a restauração do backup no servidor de destino, é necessário:

  • Parar o servidor MySQL.

  • Limpar a pasta datadir ou mover seu conteúdo para outro lugar. O diretório datadir deve estar vazio.

Após concluir a transferência dos dados para datadir o servidor MySQL pode ser iniciado.

Materiais utilizados

Documentação oficial incorporou XtraBackup.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster