Backup MySQL
Este guia ajudará você a fazer um backup completo do seu banco de dados MySQL sem desligar o sistema. Foi escrito e testado pela equipe de devops da Navixy, portanto você pode confiar nele como uma solução conhecida e funcional.
O que você precisa para fazer um backup completo do seu banco de dados MySQL sem desligar o sistema:
Conectar um volume adicional em um disco separado para o qual o backup será realizado.
Instalar software adicional - https://www.percona.com/software/mysql-database/percona-xtrabackup
Obter as credenciais de um usuário MySQL existente ou criar um usuário especificamente para backup
Todas as operações devem ser realizadas como um usuário com direitos de root, ou usando sudo.
Abaixo analisaremos com mais detalhes as etapas que você precisa executar.
Criação de um usuário
Como exemplo, criaremos o usuário chamado bkpuser com os direitos mínimos suficientes para criar um backup completo e a senha s3cret.
Primeiro você precisa entrar no console do MySQL com direitos administrativos, exemplo:
mysql -uroot -pEm seguida, no console do MySQL, insira os comandos específicos para diferentes versões do MySQL:
MySQL 5.xx
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
CREATE USER 'bkpuser'@'%' IDENTIFIED BY 's3cret';
GRANT SELECT, RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
GRANT SELECT, RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'%';
FLUSH PRIVILEGES;MySQL 8.xx
CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';
CREATE USER 'bkpuser'@'%' IDENTIFIED BY 's3cret';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'%';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'%';
GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'localhost';
GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'%';
FLUSH PRIVILEGES;Volume de backup
Agora precisamos calcular o tamanho do volume adicional para o qual o backup será realizado.
Para determinar o tamanho do volume necessário para o backup do banco de dados, você precisa encontrar o tamanho do seu banco de dados atual e multiplicá-lo por 1,5.
Se o seu banco de dados estiver em um local padrão definido durante a instalação do servidor MySQL, você precisa executar o seguinte comando com privilégios de root:
du -sh /var/lib/mysqlSe você tiver um local de banco de dados personalizado, deve especificar o caminho do banco de dados como argumento para o comando du, ou seja:
du -sh /your_path_to_databaseExemplo de cálculo

Na captura de tela podemos ver que o tamanho atual do banco de dados MySQL é 181 GB. Portanto, o tamanho do volume para fazer backup deste banco de dados deve ser pelo menos 181 * 1.5 = 271,5 GB, arredondado para 272 GB
O cálculo se aplica a uma única cópia do banco de dados. Se você planeja manter mais de uma cópia de backup do banco de dados, lembre-se de multiplicar o resultado pelo número de backups armazenados.
Software de backup
Após conectar o novo volume e criar um sistema de arquivos nele, é necessário instalar o software exigido para o backup do banco de dados. Esse software se chama https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html. Considere instalá-lo usando pacotes de instalação prontos disponíveis nos repositórios do Percona XtraBackup.
A instalação é feita via o pacote que contém o percona-release utilitário de configuração.
Primeiro de tudo, baixe este pacote dos repositórios do Percona XtraBackup com o seguinte comando:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.debO próximo passo é executar a instalação do pacote baixado usando o utilitário dpkg. Você deve estar root ou usar sudo para executar este comando:
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.debAgora configure os repositórios necessários para esse fim:
percona-release enable-only tools
apt-get updateExceção para Debian 10
No Debian 10 a etapa acima retorna um erro:

Para corrigir esse erro, você precisa editar o arquivo /etc/apt/sources.list
Abra este arquivo em qualquer editor de texto, ou seja:
root@debian10:~# nano /etc/apt/sources.listAdicione a seguinte linha à lista no topo:
deb http://ftp.de.debian.org/debian buster-backports mainO conteúdo do arquivo ficará algo parecido com isto:
#
# deb cdrom:[Debian GNU/Linux 10.4.0 _Buster_ - Official amd64 NETINST 20200509-10:25]/ buster main
# deb cdrom:[Debian GNU/Linux 10.4.0 _Buster_ - Official amd64 NETINST 20200509-10:25]/ buster main
deb http://ftp.de.debian.org/debian buster-backports main
deb http://mirror.corbina.net/debian/ buster main
deb-src http://mirror.corbina.net/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
# buster-updates, anteriormente conhecido como 'volatile'
deb http://mirror.corbina.net/debian/ buster-updates main
deb-src http://mirror.corbina.net/debian/ buster-updates main
# Este sistema foi instalado usando mídia removível pequena
# (por exemplo netinst, live ou CD único). As entradas correspondentes "deb cdrom"
# foram desativadas ao final do processo de instalação.
# Para informações sobre como configurar as fontes de pacotes do apt,
# veja o manual sources.list(5).Salve as alterações no arquivo e então execute os seguintes comandos:
apt update
apt install curl/buster-backports
apt --fix-broken install
percona-release enable-only tools
apt-get updateAgora você está pronto para instalar a utilidade de backup. Para isso, use o seguinte comando como root ou sudo:
para MySQL versão 5.xx:
sudo apt install percona-xtrabackup-24para versões do MySQL 8.xx menores ou iguais a 8.0.29:
sudo apt install percona-xtrabackup-80Isto conclui o procedimento de instalação da utilidade Percona XtraBackup.
Criação do backup
Agora você irá criar um backup completo do banco de dados usando o Percona XtraBackup.
o comando de backup é executado no mesmo servidor onde o banco de dados copiado está armazenado
no exemplo abaixo o volume adicional de backup montado em
/mnt/backupspastaum usuário pré-criado
bkpusercom uma senhas3creté usado para conectar ao banco de dados
xtrabackup --user=bkpuser --password=s3cret --backup --target-dir=/mnt/backups/Após concluir o backup, você precisa preparar o banco de dados copiado para uso. Sem esta operação, o banco de dados ficará inoperante.
xtrabackup --prepare --target-dir=/mnt/backups/Agora você tem uma cópia do banco de dados que está atualizada no momento de sua criação, criada sem parar o servidor e sem remover a carga de trabalho dele.
Esta cópia de backup pode ser usada para restaurar seu banco de dados em caso de emergência.
Atualizado
Isto foi útil?