Criando um backup MySQL usando o utilitário XtraBackup

Percona XtraBackup é um utilitário para backups de banco de dados dinâmicos MySQL.

Ao criar um backup de dados, nenhuma tabela é bloqueada e seu sistema continua operando sem quaisquer restrições.

Xtra Backup 2.4 pode criar cópias de backup de tabelas InnoDBXtraDBName и MyISAMGenericName em servidores MySQL 5.11, 5.5, 5.6 e 5.7, e também no servidor percona para MySQL с XtraDBName.

Trabalhar com MySQL 8.x versão deve ser usada XtraBackup 8.x. Este artigo falará apenas sobre XtraBackup 2.4.

A principal vantagem XtraBackupName é que este utilitário é adequado tanto para criar backups de servidores altamente carregados quanto para sistemas com baixo número de transações.

Se o tamanho total dos seus bancos de dados MySQL for significativo (dezenas de gigabytes), então o utilitário padrão mysqldump não permitirá que você crie rapidamente uma cópia de backup e a restauração do dump levará muito tempo.

Instalação

Instalação XtraBackupName do repositório apto Percona.

Execute os 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. Desde então, é importante garantir que o utilitário funcione corretamente no servidor. Como resultado, algo assim será exibido na tela:

xtrabackup: argumentos de servidor reconhecidos: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup versão 2.4.20 baseado no servidor MySQL 5.7.26 Linux (x8664) (id de revisão: c8b4056)

Criando um backup MySQL usando o utilitário XtraBackup

Direitos de acesso, permissões e privilégios 

O XtraBackup deve ser capaz de:

  • Conecte-se ao seu servidor MySQL.

  • Ter direitos de acesso ao diretório diretório de dados

  • Ao criar uma cópia de backup, tenha direitos de gravação no parâmetro especificado diretório de destino Catálogo.

O que é datadir?

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

O que é o diretório target-dir?

diretório de destino - Este é o diretório onde o backup será salvo.

O usuário do banco de dados precisa dos seguintes direitos de acesso às tabelas e bancos de dados dos quais será feito backup:

  • RECARREGAR e BLOQUEAR TABELAS

  • CLIENTE DE REPLICAÇÃO

  • CRIAR TABELA

  • PROCEDIMENTO:

  • SUPER

  • CRIAR

  • INSIRA

  • SELECIONE

Configuração 

Configuração XtraBackupName feito usando opções que se comportam da mesma forma que as opções padrão do MySQL.

O que isso significa?

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

O utilitário XtraBackup lê partições após o lançamento [Mysqld] и [xtrabackup] dos arquivos de configuração do MySQL. Isso é feito para que o utilitário possa utilizar as configurações do seu SGBD sem precisar especificar manualmente os parâmetros durante cada backup.

Por exemplo, o valor diretório de dados e alguns parâmetros InnoDB Obtemos o XtraBackup da configuração do seu DBMS.

Se para que o XtraBackup funcione você deseja substituir os parâmetros 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ê não precisa adicionar nenhum parâmetro para meu.cnf. Todos os parâmetros necessários podem ser especificados na linha de comando. Normalmente, a única coisa que pode ser convenientemente colocada na seção [xtrabackup] sua meu.cnf é um parâmetro target_dir, que por padrão especifica o diretório onde os backups serão colocados. Mas isso é opcional.

Um exemplo de especificação do caminho para o diretório com uma cópia de backup em meu.cnf:

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

Script de backup

Você pode usar o seguinte script para criar um backup:

#!/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?

Em primeiro lugar, limpamos (excluímos) o diretório no qual salvaremos o backup:

rm -rf /mysql/backup.

Então, usando o utilitário XtraBackupName crie uma cópia de backup e salve-a em /mysql/backup/:

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

Anteriormente, criamos um usuário no MySQL xtrabackup com os privilégios necessários. Usando o parâmetro target-dir especificamos o diretório onde o backup deve ser salvo.

Um ponto importante!

Observe a linha do script:

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

Dados de catálogo /mysql/backup não são consistentes até que estejam cozidos. 

O fato é que podem ocorrer alterações durante a cópia dos arquivos. Operação xtrabackup --prepare --target-dir=/mysql/backup torna os dados de backup perfeitamente consistentes ao longo do tempo.

Você pode realizar a operação de preparação de dados em qualquer máquina. Não há necessidade de fazer isso no servidor onde o SGBD de origem está localizado. Você pode copiar o backup para o servidor de destino e prepará-lo lá.

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

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

Restaurando um backup 

Antes de poder restaurar um backup no servidor de destino, os dados devem passar por uma fase de preparação. Veja acima como fazer isso.

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

Como substituir dados no datadir?

Vamos considerar duas opções.

opção 1

Use o utilitário XtraBackupName. Você precisa especificar uma opção --copiar de volta

O comando abaixo irá transferir o backup para diretório de dados servidor de destino:

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

opção 2

Você pode fazer diferente, dispensar o utilitário XtraBackupName.

Tudo que você precisa fazer é copiar o backup para diretório de dados. Você pode fazer isso com cp ou rsync.

É importante entender que o procedimento para restaurar um backup se resume a apenas substituir o conteúdo do diretório diretório de dados.

Antes de começar a restaurar um backup no servidor de destino, você deve:

  • Pare o servidor MySQL.

  • Pasta vazia diretório de dados ou mova seu conteúdo para outro local. Catálogo diretório de dados Deve estar vazio.

Depois de concluir a transferência de dados para diretório de dados O servidor MySQL pode ser iniciado.

materiais utilizados

Documentação oficial percona XtraBackupName.

Fonte: habr.com

Adicionar um comentário