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 InnoDB, XtraDBName и 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)
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
Fonte: habr.com