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-242. 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)

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/backupO 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/backupPré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/backupRestauraçã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/backupOpçã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
.
Fonte: habr.com
