Backup MySQL · 4 min read · Dec 13, 2025
Realizar Backups Quentes de Bancos de Dados MySQL com Percona XtraBackup no Ubuntu 16.04
Percona XtraBackup é uma ferramenta de backup de código aberto para MySQL. Ele suporta todos os sabores do MySQL, como Percona Server, MariaDB e (Oracle) MySQL. O Percona Xtrabackup realiza um Backup Quente para MySQL. Backup Quente significa criar um backup de um servidor MySQL enquanto ele está em execução, sem tempo de inatividade.
Neste tutorial, vou mostrar como criar um backup quente de banco de dados MySQL com a ferramenta OpenSource Percona XtraBackup no Ubuntu 16.04 (Xenial Xerus). Usarei o MariaDB como servidor de banco de dados para realizar o backup, mas a mesma configuração funcionará para servidores MySQL também.
Pré-requisitos
- Servidor Ubuntu 16.04 - (Xenial Xerus)
- Servidor MySQL ou MariaDB
- Privilégios de Root
Passo 1 - Instalar Percona XtraBackup
O primeiro passo é instalar o software mais recente do Percona XtraBackup em nosso servidor Ubuntu. Faça login no seu servidor via SSH (ou no console):
ssh [email protected]
DIGITE SUA SENHAO Percona XtraBackup está disponível no repositório do Ubuntu, mas queremos usar a versão mais recente do repositório Percona.
Adicione o repositório Percona baixando o pacote deb da web e instale-o com o comando dpkg:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.debEm seguida, atualize o repositório e instale o Percona XtraBackup 2.4 (a versão mais recente no momento):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24O Percona XtraBackup está instalado.
Passo 2 - Configurar Usuário e Diretório de Backup
Para realizar o backup quente, precisamos criar um novo usuário mysql com privilégios e permissões especiais. Neste tutorial, usarei o MariaDB 10.0 como servidor de banco de dados. Se você ainda não instalou um banco de dados compatível com MySQL, pode instalar com o comando abaixo:
sudo apt-get install mariadb-server mariadb-clientDefina uma senha segura para o usuário root com este comando:
mysql_secure_installationSe o MariaDB estiver instalado, acesse o shell do MariaDB/MySQL como usuário root com o comando do cliente mysql:
mysql -u root -p
DIGITE A SENHA DO MySQLCrie um novo usuário chamado ‘ bekupuser ‘ com a senha ‘ mypassword ‘ (escolha uma senha segura para seu servidor!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';Conceda ao usuário os seguintes privilégios: ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exitEm seguida, crie um novo diretório para armazenar os arquivos de backup do MySQL:
mkdir -p /data/backups/mysql/O novo usuário de backup e um diretório de backup foram criados.
Passo 3 - Realizar Backup com Innobackupex
Innobackupex é um wrapper de script Perl para o programa xtrabackup. É uma versão corrigida do script innobackup fornecido pela oracle, distribuído com a ferramenta InnoDB Backup. O Innobackupex fornece backup para uma instância inteira do banco de dados MySQL, usando xtrabackup em combinação com xbstream e xbcrypt.
Neste passo, criaremos e prepararemos um backup completo para a instância MySQL.
A. Criar um backup com Innobackupex
No passo 2, criamos um novo diretório para o backup e adicionamos um novo usuário de backup mysql. Usaremos eles agora para criar um backup com o comando innobackupex.
Crie um backup MySQL com o innobackupex para o novo diretório ‘/data/backups/my_backup’:
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backupNota:
–user = usuário com os privilégios de backup necessários (passo-2).
–password = senha do usuário de backup.
–no-timestamp = desabilitar a criação de um novo subdiretório com timestamp no diretório raiz do backup.
/data/backups/my_backup = diretório para o backup, ele será criado automaticamente durante o processo de backup. Se o diretório existir, você receberá uma mensagem de erro.

Outra opção:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/Nota:
Se não houver diretório ‘ my_backup2 ‘, você obterá seu diretório baseado no formato ‘ timestamp ‘.
Resultados:
B. Preparar um Backup Completo com Innobackupex
Após criar um novo backup, os dados não estão prontos para uma restauração. Há mais um passo para que os dados possam ser restaurados. Precisamos da ‘fase de preparação’ para que os dados possam ser restaurados.
Prepare o backup usando innobackupex com a opção –apply-log para o diretório de backup ‘/data/backups/my_backup ‘:
innobackupex --apply-log /data/backups/my_backupCertifique-se de que o processo seja concluído sem erro antes de prosseguir.

Se você tiver memória suficiente e um banco de dados grande, poderá usar a opção –use-memory=memorynumber para informar ao innobackupex quanto de memória ele pode usar:
innobackupex --apply-log --use-memory=4G /data/backups/my_backupOs dados estão prontos para serem restaurados agora. Podemos restaurá-los no mesmo servidor ou em outro servidor que esteja executando o MariaDB.
Passo 4 - Restaurar Backup Completo com Innobackupex
Neste passo, restauraremos a instância MySQL com innobackupex.
Antes de restaurar a instância MySQL, precisamos parar o processo MySQL com o comando systemctl (o processo do MariaDB é nomeado mysql):
systemctl stop mysqlFaça um backup do antigo diretório de dados do MySQL:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/Em seguida, restaure a instância mysql a partir do backup completo com innobackupex:
innobackupex --copy-back /data/backups/my_backupQuando você ver o resultado ‘ innobackupex: completed OK ‘, então você restaurou com sucesso sua instância MySQL.
Agora mude o proprietário do diretório de dados do MySQL para o usuário mysql e inicie o serviço novamente:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
A instância MySQL foi restaurada com sucesso com percona-xtrabackup.
Referência
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.