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 SENHA

O 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.deb

Em 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-24

O 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-client

Defina uma senha segura para o usuário root com este comando:

mysql_secure_installation

Se 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 MySQL

Crie 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;  
exit

Em 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_backup

Nota:

–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.

Criar um backup com Percona XtraBackup

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_backup

Certifique-se de que o processo seja concluído sem erro antes de prosseguir.

Preparar o Backup Completo

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_backup

Os 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 mysql

Faç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_backup

Quando 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

restaurar o backup

A instância MySQL foi restaurada com sucesso com percona-xtrabackup.

Referência

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.