PostgreSQL/MySQL бекап у хмарне сховище | INTROSERV
EUR
european

EUR

usa

USD

Ukraine Ua
Ex. VAT Ex. VAT 0%

PostgreSQL/MySQL бекап у хмарне сховище

Вступ

Резервне копіювання (бекап) баз даних — це одна з найважливіших процедур для забезпечення безпеки та надійності роботи сайтів і застосунків. Втрата даних може статися з різних причин: збій сервера, помилка адміністратора, оновлення, вірус або просто людський фактор. Регулярні резервні копії дозволяють швидко відновити роботу проєкту без втрат.

У цьому мануалі детально розглянемо, як виконувати резервне копіювання баз даних PostgreSQL і MySQL, як зберігати бекапи на віддаленому сервері Linux за допомогою rsync або scp, а також як надсилати їх у хмарні сховища через rclone.

Резервне копіювання PostgreSQL

Для PostgreSQL використовується стандартна утиліта pg_dump, яка дозволяє створити повну копію бази даних у вигляді SQL-файлу.

Приклад створення бекапу:

pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql

Пояснення параметрів:

  • -U myuser — ім'я користувача бази даних
  • -h localhost — адреса сервера (якщо база локальна, можна опустити)
  • mydatabase — ім'я бази даних
  • /backup/... — шлях, куди зберігається копія
  • $(date +%F) — додає поточну дату до імені файлу

Щоб заощадити місце, файл можна одразу стиснути:

pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz

Для резервного копіювання всіх баз даних на сервері:

pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz

Резервне копіювання MySQL

Для MySQL і MariaDB використовується утиліта mysqldump.

Приклад створення бекапу однієї бази даних:

mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql

Під час виконання команди система запитає пароль користувача.

Щоб створити архів усіх баз даних:

mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz

Якщо потрібно включити збережені процедури та тригери, додайте параметри --routines --triggers.

Резервне копіювання на CloudBox

CloudBox від INTROSERV — хмарне сховище з підтримкою численних протоколів підключення (включаючи rsync, scp, rsync через SSH, WebDAV). Простота використання CloudBox значно полегшує завдання з завантаження, управління та отримання даних.

Ви можете використовувати його як віддалене місце для зберігання резервних копій ваших баз даних. Нижче — деталі щодо налаштування та приклади скриптів.

Крок 1. Отримання доступу до CloudBox

Замовте один з доступних тарифних планів CloudBox на нашому сайті — introserv.com

Після оплати сервіс стає доступним протягом кількох хвилин. Після активації послуги ви отримаєте дані для підключення:

  • адресу сервера (box#####.introserv.cloud)
  • ім'я користувача (box#####) та пароль

Крок 2. Підключення та синхронізація за допомогою rsync або scp

Використання rsync (рекомендовано):

rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/

Де:

  • user — ім'я користувача CloudBox
  • cloudbox-server — адреса підключення
  • /path_to_cloudbackups/ — шлях на CloudBox

Для автоматичної роботи бажано налаштувати SSH-ключі:

  1. Створіть публічний ключ:

    ssh-keygen -t rsa

  2. Скопіюйте вміст файлу публічного ключа, який був створений, наприклад, /root/.ssh/id_rsa.pub, у буфер обміну.
  3. Перейдіть у розділ «Profile» (наведіть курсор на іконку користувача праворуч вгорі), додайте вміст ключа в поле «Public keys» та збережіть налаштування.

Після чого rsync працюватиме без введення пароля, що зручно для cron-завдань.

Альтернатива — scp:

scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/

Крок 3. Підключення та синхронізація за допомогою rclone

Якщо ви хочете використовувати rclone для взаємодії з CloudBox, виконайте налаштування таким чином:

  1. Встановіть rclone:

    sudo apt install rclone

  2. Запустіть конфігурацію:

    rclone config

При налаштуванні виберіть:

  • n — для створення нового підключення
  • назву, наприклад cloudbox
  • тип сховища — виберіть sftp або ssh
  • введіть адресу сервера формату box#####.introserv.cloud, ім'я користувача формату box#####, порт (у даному випадку порт SSH — за замовчуванням 22), шлях до директорії
  • виконайте авторизацію (якщо потрібно)

Перевірте підключення:

rclone ls cloudbox:/path_to_cloudbackups/

Копіювання резервних даних:

rclone copy /backup/ cloudbox:/db-backups/ --progress

Синхронізація з видаленням відсутніх локально файлів:

rclone sync /backup/ cloudbox:/db-backups/ --progress

Якщо потрібно — зашифруйте файли перед передачею:

rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt

Крок 4. Приклад автоматизації скрипту з CloudBox

Створіть скрипт /usr/local/bin/db_backup_cloudbox.sh, наприклад:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Відправка на CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Відправка на CloudBox (варіант з rclone, розкоментуйте якщо використовується) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Видалення копій старших 7 днів find /backup/ -type f -mtime +7 -delete

Потім додайте cron-завдання (у прикладі скрипт запускається щодня, один раз на добу, о 2 годині ночі):

0 2 * * * /usr/local/bin/db_backup_cloudbox.sh

Що важливо враховувати:

  • Переконайтеся, що з'єднання з CloudBox стабільне та пропускна здатність достатня.
  • Налаштуйте моніторинг: переконайтеся, що файли дійсно копіюються.
  • Періодично перевіряйте відновлення з CloudBox-копій.
  • При використанні конфіденційних даних — розгляньте шифрування резервних копій.

Копіювання на віддалений сервер Linux по SSH

Якщо ви хочете зберігати резервні копії не лише локально, а й на іншому сервері, можна використовувати rsync або scp.

Використання rsync (переважний варіант, оскільки копіює лише зміни):

rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/

Пояснення параметрів:

  • user — ім'я користувача на віддаленому сервері
  • remote.server — IP-адреса або доменне ім'я сервера
  • /remote_backups/ — шлях для зберігання резервних копій

Для автоматичної роботи бажано налаштувати ключі SSH:

# Генерування ключів: ssh-keygen -t rsa # Копіювання ключа на віддалений сервер: ssh-copy-id [email protected]

Після цього rsync працюватиме автоматично без запиту пароля, що зручно для cron-завдань.

Альтернатива rsync — використання утиліти scp:

scp /backup/mysql_mydatabase.sql.gz [email protected]:/remote_backups/

Копіювання в стороннє хмарне сховище через rclone

Якщо потрібно зберігати резервні копії у хмарі (Google Drive, Dropbox, Amazon S3 та інші), зручно використовувати rclone — універсальну утиліту для синхронізації даних із різними хмарними сервісами.

Встановлення:

sudo apt install rclone

Налаштування:

rclone config

Далі дотримуйтесь інструкцій майстра:

  • Виберіть n для створення нового підключення
  • Введіть ім'я, наприклад remote
  • Виберіть тип сховища (наприклад s3, drive, dropbox)
  • Введіть ключі доступу або авторизуйтеся через браузер

Перевірити підключення:

rclone ls remote:path

Приклад копіювання резервних копій у хмару:

rclone copy /backup/ remote:db-backups/ --progress

Команда синхронізації (видаляє старі файли, яких немає локально):

rclone sync /backup/ remote:db-backups/ --progress

Також можна зашифрувати файли перед відправленням:

rclone copy /backup/ remote:db-backups/ --progress --crypt

Безпека та контроль

  • Зберігайте резервні копії щонайменше у двох місцях — локально та віддалено.
  • Перевіряйте, що копії дійсно створюються і успішно завантажуються.
  • Щонайменше раз на місяць виконуйте тестове відновлення.
  • Шифруйте файли з конфіденційними даними, якщо використовуєте публічні хмари:

    gpg -c /backup/mysql_mydatabase.sql.gz

  • Стежте за правами доступу до каталогу /backup і паролями від баз даних.

Відновлення бази з резервної копії

PostgreSQL:

gunzip < backup.sql.gz | psql -U myuser -d mydatabase

MySQL:

gunzip < backup.sql.gz | mysql -u myuser -p mydatabase

Висновок

Резервне копіювання баз даних PostgreSQL і MySQL — це проста, але критично важлива процедура. Навіть найнадійніша інфраструктура не захищає від людських помилок і технічних збоїв. Оптимальна стратегія — регулярні автоматичні бекапи, їх зберігання принаймні на одному зовнішньому сервері та в хмарі, а також періодична перевірка можливості відновлення.

Використовуючи комбінацію стандартних інструментів pg_dump, mysqldump, rsync, rclone і cron, можна побудувати надійну систему резервного копіювання без стороннього платного ПЗ. Це рішення легко автоматизується і підходить для будь-яких Linux-систем.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA