Як створити резервну копію бази даних 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-резервні копії).
Ми сподіваємось, ви розумієте, як зробити резервну копію бази даних MySQL у PHP та автоматизувати процес за допомогою Cron. Ми хотіли б почути ваші думки чи пропозиції в розділі коментарів нижче.