PostgreSQL/MySQL бекап у хмарне сховище через rclone | 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 на нашому сайті.

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

  • адресу сервера (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
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • 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