MySQL e MariaDB incluem o utilitário mysqldump para simplificar o processo de criação de um backup de um banco de dados ou sistema de bancos de dados. Usando
mysqldump
cria um backup lógico . Você só pode usar esta ferramenta se o processo do banco de dados estiver acessível e em execução. Se seu banco de dados não estiver acessível por qualquer motivo, você poderá criar umbackup físico , que é uma cópia da estrutura do sistema de arquivos que contém seus dados.
As instruções neste guia se aplicam ao MySQL e ao MariaDB. Para simplificar, o nome MySQL será usado para aplicar a ambos.
Antes de começar
-
Você precisará de uma instalação funcional do MySQL ou MariaDB e de um usuário de banco de dados para executar o backup. Para obter ajuda com a instalação, consulte a documentação do LinuxLinode MySQL.
-
Você precisará de acesso root ao sistema ou uma conta de usuário comsudo
privilégios.
Fazer backup de um banco de dados
O
mysqldump
a sintaxe geral do comando é:mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
solicita uma senha antes de iniciar o processo de backup.- Dependendo do tamanho do banco de dados, pode demorar um pouco para ser concluído.
- O backup do banco de dados será criado no diretório em que o comando for executado.
-$(date +%F)
adiciona um carimbo de data/hora ao nome do arquivo.
Exemplos de casos de uso incluem:
-
Crie um backup de todo um Sistema de Gerenciamento de Banco de Dados (DBMS):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Faça backup de um banco de dados específico. Substituadb1
com o nome do banco de dados que você deseja fazer backup:
mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Faça backup de uma única tabela de qualquer banco de dados. No exemplo abaixo,table1
é exportado do banco de dadosdb1
:
mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Aqui está um detalhamento do
mysqldump
opções de comando usadas acima:--single-transaction
:emita uma instrução BEGIN SQL antes de despejar dados do servidor.--quick
:Impor o despejo de tabelas linha por linha. Isso fornece segurança adicional para sistemas com pouca RAM e/ou bancos de dados grandes, onde o armazenamento de tabelas na memória pode se tornar problemático.--lock-tables=false
:não bloqueie tabelas para a sessão de backup.
Automatizar backups com cron
As entradas podem ser adicionadas a
/etc/crontab
para agendar regularmente backups de banco de dados. -
Crie um arquivo para armazenar as credenciais de login do usuário root do MySQL que fará o backup. Observe que o usuário do sistema em cujo diretório inicial este arquivo está armazenado pode não estar relacionado a nenhum usuário do MySQL.
- Arquivo:/ home/example_user/.mylogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Restrinja as permissões do arquivo de credenciais:
chmod 600 /home/example_user/.mylogin.cnf
-
Crie o arquivo de trabalho cron. Abaixo está um exemplo de cron job para fazer backup de todo o sistema de gerenciamento de banco de dados todos os dias à 1h:
- Arquivo:/ etc/cron.daily/mysqldump
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
Para obter mais informações sobre o cron, consulte as páginas de manual do cron(8) andcron(5).
Restaurar um backup
A sintaxe geral do comando de restauração é:
mysql -u [username] -p [databaseName] < [filename].sql
-
Restaure um backup de DBMS inteiro. Você será solicitado a fornecer a senha do usuário root do MySQL:
Isso substituirá todos os dados atuais no sistema de banco de dados MySQL
mysql -u root -p < full-backup.sql
-
Restaure um único dump de banco de dados. Um banco de dados de destino vazio ou antigo já deve existir para importar os dados, e o usuário MySQL no qual você está executando o comando deve ter acesso de gravação a esse banco de dados:
mysql -u [username] -p db1 < db1-backup.sql
-
Restaure uma única tabela, você deve ter um banco de dados de destino pronto para receber os dados:
mysql -u dbadmin -p db1 < db1-table1.sql
Mais informações
Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.
- Página Métodos de backup do banco de dados MySQL
- mysqldump - Um programa de backup de banco de dados, manual de referência do MySQL