Как сделать резервную копию вашей базы данных MySQL с помощью PHP
Вы хотите сделать резервную копию базы данных в своих проектах PHP? Всегда рекомендуется периодически делать резервную копию вашей базы данных. При этом данные вашего сайта всегда будут в безопасности в случае возникновения каких-либо проблем с вашей базой данных. В этой статье мы покажем вам, как периодически создавать резервную копию базы данных MySQL и сохранять ее на своем сервере.
Эта статья написана для проектов со встроенным ядром PHP, а не с какой-либо CMS или Framework. CMS, такая как WordPress, имеет несколько доступных плагинов, например UpdraftPlus, для резервного копирования базы данных. На веб-сайтах Laravel пользователь может использовать такие пакеты, как laravel-backup, для тех же целей.
Команда Spatie разработала пакет, который полезен для резервного копирования базы данных в основных проектах PHP. Этот пакет обеспечивает поддержку MySQL, PostgreSQL, SQLite и MongoDB. В этой статье мы обсудим базу данных MySQL. При этом давайте посмотрим, как этот пакет работает при резервном копировании вашей базы данных.
Резервное копирование базы данных MySQL с использованием PHP
Прежде чем продолжить, убедитесь, что у вас есть учетные данные для базы данных и в вашей системе установлен Composer.
Затем откройте терминал в корневом каталоге вашего проекта и выполните команду ниже, чтобы установить пакет.
composer require spatie/db-dumper
После установки пакета создайте каталог db-backups
(вы можете дать любое имя), где вы можете хранить файлы резервных копий SQL. Также создайте файл backup-database.php
и добавьте в него приведенный ниже код.
<?php
require_once "vendor/autoload.php";
SpatieDbDumperDatabasesMySql::create()
->setDbName('DB_NAME')
->setUserName('DB_USER_NAME')
->setPassword('DB_PASSWORD')
->dumpToFile('db-backups/'.time().'_dump.sql');
Обязательно замените заполнители фактическими значениями. В приведенном выше коде мы добавили текущее время к файлу SQL, чтобы имена файлов были разными. Он сбросит вашу базу данных и сохранит ее в данном файле SQL.
Пакет дает больше возможностей при сбросе базы данных. Например, вы можете исключить определенные таблицы из резервной копии, предоставив массив исключенных таблиц, как показано ниже.
<?php
SpatieDbDumperDatabasesMySql::create()
->setDbName('DB_NAME')
->setUserName('DB_USER_NAME')
->setPassword('DB_PASSWORD')
->excludeTables(['table1', 'table2', 'table3'])
->dumpToFile('db-backups/'.time().'_dump.sql');
Автоматическое резервное копирование базы данных MySQL
Пока у вас есть файл PHP, который делает резервную копию вашей базы данных. Следующее, что нужно сделать, это автоматизировать процесс резервного копирования, чтобы вы могли получать резервные копии, не выполняя скрипт вручную.
Когда вы размещаете сайт на сервере, ваш хостинг-провайдер предоставляет вам cPanel, где вы можете увидеть основные и дополнительные параметры для управления сайтом. Одна из функций, которую они предоставили, – это «Cron Jobs». Задания Cron позволяют запускать определенный скрипт (файл PHP) с определенным интервалом в фоновом режиме. Все, что вам нужно сделать, это установить интервал и передать путь к каталогу файла PHP. После этого ваш сервер запускает ваш скрипт в фоновом режиме с заданными интервалами.
Чтобы установить Cron, войдите в свою cPanel и нажмите «Cron Jobs», которые вы можете найти в разделе «Advanced».
На следующей странице в разделе «Добавить новое задание Cron» выберите «Один раз в день» для раскрывающегося списка «Общие настройки». Это означает, что ваш скрипт будет запускаться один раз в день. Пользователь может установить любой интервал в зависимости от требований.
В разделе команд укажите путь к файлу PHP следующим образом:
php /home/username/public_html/backup-database.php
Отрегулируйте путь к сценарию в соответствии с конфигурациями вашего хостинга и отправьте его. После этого ваш сервер начинает выполнять скрипт ежедневно в полночь. И этот скрипт автоматически сохранит вашу базу данных MySQL в указанном каталоге (например, db-backups).
Надеемся, вы понимаете, как сделать резервную копию базы данных MySQL на PHP и автоматизировать этот процесс с помощью Cron. Мы хотели бы услышать ваши мысли или предложения в разделе комментариев ниже.