Como fazer backup de seu banco de dados MySQL usando PHP
Você está procurando fazer backup de banco de dados em seus projetos PHP? É sempre recomendável fazer backup de seu banco de dados periodicamente. Assim, os dados do seu site estarão sempre seguros caso ocorra algum problema com o seu banco de dados. Neste artigo, mostramos como fazer backup do banco de dados MySQL periodicamente e armazená-lo em seu servidor.
Este artigo foi escrito para os projetos que têm o núcleo do PHP integrado e não com nenhum CMS ou Framework. O CMS, como o WordPress, tem vários plug-ins disponíveis, como o UpdraftPlus, para fazer backup do banco de dados. Nos sites Laravel, o usuário pode usar pacotes como o laravel-backup para os mesmos fins.
A equipe de Spatie desenvolveu o pacote que é útil para fazer backup de banco de dados em projetos principais de PHP. Este pacote oferece suporte para MySQL, PostgreSQL, SQLite e MongoDB. Discutiremos o banco de dados MySQL neste artigo. Dito isso, vamos dar uma olhada em como este pacote funciona no backup de seu banco de dados.
Backup de banco de dados MySQL usando PHP
Antes de prosseguir, certifique-se de ter suas credenciais de banco de dados e o Composer está instalado em seu sistema.
Em seguida, abra o terminal no diretório raiz do seu projeto e execute o comando abaixo para instalar o pacote.
composer require spatie/db-dumper
Após a instalação do pacote, crie um diretório db-backups
(você pode dar qualquer nome) onde pode armazenar seus arquivos de backup SQL. Crie também um arquivo backup-database.php
e adicione o código abaixo nele.
<?php
require_once "vendor/autoload.php";
SpatieDbDumperDatabasesMySql::create()
->setDbName('DB_NAME')
->setUserName('DB_USER_NAME')
->setPassword('DB_PASSWORD')
->dumpToFile('db-backups/'.time().'_dump.sql');
Certifique-se de substituir os marcadores pelos valores reais. No código acima, acrescentamos a hora atual ao arquivo SQL para manter nomes de arquivo distintos. Ele irá despejar seu banco de dados e armazená-lo no arquivo SQL fornecido.
O pacote oferece mais opções enquanto despeja o banco de dados. Por exemplo, você pode excluir tabelas específicas do backup, fornecendo a matriz de tabelas de exclusão conforme abaixo.
<?php
SpatieDbDumperDatabasesMySql::create()
->setDbName('DB_NAME')
->setUserName('DB_USER_NAME')
->setPassword('DB_PASSWORD')
->excludeTables(['table1', 'table2', 'table3'])
->dumpToFile('db-backups/'.time().'_dump.sql');
Backup automático do banco de dados MySQL
Até agora, você tem um arquivo PHP que faz o backup do seu banco de dados. A próxima coisa que precisa fazer é automatizar o processo de backup para que você obtenha seus backups sem executar o script manualmente.
Quando você hospeda um site no servidor, seu provedor de hospedagem lhe dá o cPanel, onde você pode ver as opções básicas e avançadas para gerenciar o site. Um recurso fornecido por eles é ‘Cron Jobs’. As tarefas Cron permitem que você execute um script específico (arquivo PHP) em um determinado intervalo em segundo plano. Tudo que você precisa fazer é definir um intervalo e passar um caminho de diretório do arquivo PHP. Depois disso, o servidor executa o script em segundo plano nos intervalos especificados.
Para definir um Cron, acesse seu cPanel e clique em ‘Cron Jobs’ que você pode encontrar na seção ‘avançado’.
Na próxima página, na seção ‘Adicionar um Novo Cron Job’, escolha ‘Uma vez por dia’ para a lista suspensa ‘Configurações comuns’. Isso significa que seu script será executado uma vez por dia. O usuário pode definir qualquer intervalo, dependendo da necessidade.
Na seção de comando, passe o caminho do arquivo PHP da seguinte maneira:
php /home/username/public_html/backup-database.php
Ajuste o caminho do script de acordo com suas configurações de hospedagem e envie-o. Depois disso, seu servidor começa a executar um script diariamente à meia-noite. E este script irá armazenar automaticamente seu banco de dados MySQL no diretório especificado (por exemplo, db-backups).
Esperamos que você entenda como fazer backup do banco de dados MySQL em PHP e automatizar o processo usando Cron. Gostaríamos de ouvir suas opiniões ou sugestões na seção de comentários abaixo.