Як правильно налаштувати автоматичний бекап баз даних PostgreSQL або MySQL на віддалений хмарний S3-сумісний сервіс за допомогою стандартних утиліт?
Регулярне створення резервних копій баз даних критично важливо для будь-якого проєкту, щоб уникнути втрати критично важливих даних при збоях обладнання або програмних помилках. Для реалізації надійного бекапу реляційних баз даних найкраще використовувати зв'язку стандартних утиліт командного рядка на кшталт pg_dump або mysqldump спільно з утилітами для роботи з об'єктними сховищами, такими як rclone або awscli.
Першим кроком необхідно написати bash-скрипт, який генеруватиме дамп бази даних з додаванням часової мітки до імені файлу, щоб уникнути перезапису старих версій. Важливо також додати етап стиснення отриманого SQL-файлу за допомогою архіватора gzip або zstd, оскільки текстові дампи баз даних займають багато місця, а стиснення значно скорочує час і вартість передачі даних у хмару.
Після успішного створення та стиснення архіву скрипт повинен передати його в захищене хмарне сховище, що підтримує S3-протокол. Для цього чудово підходить утиліта rclone, яку попередньо налаштовують для підключення до вашого провайдера. Приклад команди відправки виглядає як виклик rclone copy із зазначенням локального файлу та цільового бакета в хмарі.
Для повної автоматизації процесу створений скрипт додають у планувальник завдань cron на сервері бази даних. Налаштування розкладу дозволяє виконувати бекапи щоночі або навіть кілька разів на день залежно від інтенсивності зміни даних. Також у скрипт обов'язково слід вбудувати логування успішності виконання та видалення локальних архівів старше певної кількості днів, щоб диск сервера не переповнювався старими копіями.
Нарешті, не менш важливо регулярно перевіряти працездатність створюваних резервних копій шляхом їх тестового відновлення на ізольованому оточенні. Бекап, який ніколи не відновлювався, технічно не є надійним бекапом, оскільки в -ньому можуть виявитися пошкодження або не повнота даних.