EUR
european

EUR

usa

USD

Russian Ru
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