EUR
european

EUR

usa

USD

Russian Ru
Ex. VAT Ex. VAT 0%

Резервное копирование баз данных PostgreSQL и MySQL

Резервное копирование (бэкап) — одна из ключевых процедур, обеспечивающих безопасность данных. Даже при использовании надежного хостинга могут произойти ошибки приложения, некорректные обновления или случайное удаление данных.

В этом материале мы рассмотрим, как создать и восстановить резервные копии баз данных PostgreSQL и MySQL с помощью стандартных утилит командной строки — pg_dump и mysqldump.

1. Резервное копирование PostgreSQL

1.1. Что такое pg_dump

pg_dump — стандартная утилита PostgreSQL для создания логического бэкапа базы данных. Она позволяет сохранить структуру (DDL) и данные (DML) в текстовый SQL-файл, который позже можно использовать для восстановления.

1.2. Синтаксис команды

pg_dump -U <user> -h <host> -p <port> -d <database> -F p -f <path_to_file.sql>

1.3. Пример резервного копирования

pg_dump -U myuser -h localhost -d mydatabase -F p -f /backups/mydatabase_$(date +%F).sql

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

  • -U myuser — имя пользователя PostgreSQL;
  • -h localhost — хост сервера (можно указать IP);
  • -d mydatabase — имя базы данных;
  • -F p — формат вывода (plain — обычный SQL);
  • -f — путь к файлу, куда будет записан бэкап;
  • $(date +%F) — добавляет в имя файла текущую дату (например, 2025-11-03).

1.4. Сжатие резервной копии

Чтобы уменьшить размер файла, можно использовать сжатие через gzip:

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

2. Восстановление базы данных PostgreSQL

2.1. Использование psql

Для восстановления базы данных из текстового бэкапа используйте команду:

psql -U myuser -d mydatabase -f /backups/mydatabase_2025-11-03.sql

Если резервная копия сжата:

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | psql -U myuser -d mydatabase

2.2. Если база еще не создана

Можно сначала создать новую базу:

createdb -U myuser newdatabase

psql -U myuser -d newdatabase -f /backups/mydatabase_2025-11-03.sql

3. Резервное копирование MySQL

3.1. Что такое mysqldump

mysqldump — стандартная утилита для создания дампа MySQL. Она сохраняет команды SQL для создания таблиц и вставки данных.

3.2. Синтаксис команды

mysqldump -u <user> -p -h <host> <database> > <path_to_file.sql>

3.3. Пример резервного копирования

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

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

  • -u myuser — имя пользователя;
  • -p — запросит пароль при выполнении;
  • mydatabase — имя базы данных;
  • > — перенаправление вывода в файл.

3.4. Сжатие дампа

mysqldump -u myuser -p mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

4. Восстановление базы данных MySQL

4.1. Восстановление из SQL-файла

mysql -u myuser -p mydatabase < /backups/mydatabase_2025-11-03.sql

4.2. Если база данных отсутствует

Создайте новую базу перед восстановлением:

mysql -u myuser -p -e "CREATE DATABASE newdatabase;"

mysql -u myuser -p newdatabase < /backups/mydatabase_2025-11-03.sql

4.3. Восстановление из сжатого дампа

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | mysql -u myuser -p mydatabase

5. Рекомендации по автоматизации и безопасности

5.1. Автоматизация бэкапов с помощью Cron

Для регулярного резервного копирования без ручного вмешательства настройте автоматизацию через cron.

Базовая настройка cron:

# Open cron editor crontab -e

Добавьте строку, например:

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

Эта команда будет запускать скрипт ежедневно в 2:00 ночи.

Расширенный подход с использованием скрипта. Создайте /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL backup pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL backup mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete

Сделайте скрипт исполняемым:

chmod +x /usr/local/bin/db_backup.sh

и добавьте в cron:

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

5.2. Лучшие практики безопасности и хранения

  • Хранение вне сервера: храните бэкапы в облачных хранилищах (AWS S3, Google Cloud) или на внешних дисках.
  • Контроль доступа: ограничьте доступ к папке /backups, так как файлы могут содержать конфиденциальные данные.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Проверка целостности: выполняйте тестовое восстановление ежемесячно для подтверждения работоспособности бэкапов.
  • Конфиденциальность: файлы бэкапов хранят содержимое базы данных — обращайтесь с ними как с конфиденциальной информацией.

Заключение

Использование pg_dump и mysqldump — это простой, надежный и универсальный способ резервного копирования баз данных PostgreSQL и MySQL. Эти инструменты подходят как для ручного копирования, так и для автоматизации процесса с минимальными усилиями.

Регулярные резервные копии — залог стабильности и безопасности вашего проекта.

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