Show/Hide Toolbars

Руководство по тех. обслуживанию

Резервное копирование СУБД PostgreSQL

Ссылки Назад Вверх Вперед

Резервное копирование баз данных PostgreSQL — важная задача для обеспечения целостности данных и их восстановления в случае сбоя. В этом руководстве рассмотрим различные методы резервного копирования а также рекомендации по хранению резервных копий и инструкции по восстановлению данных.

Полный бэкап всех баз данных

Полный бэкап включает копирование всех баз данных, хранящихся на сервере PostgreSQL. Для этого можно использовать утилиту pg_dumpall .

Шаги:

1. Откройте терминал.

2. Выполните следующую команду:

pg_dumpall -U dbo -f all_databases_backup.dump

Здесь dbo — это имя пользователя PostgreSQL с необходимыми правами.

Примечания:

Файл all_databases_backup.dump будет содержать полный дамп всех баз данных.

Убедитесь, что у пользователя PostgreSQL есть необходимые привилегии для доступа ко всем базам данных.

Полный бэкап одной базы данных

Для резервного копирования одной базы данных используется утилита pg_dump .

Шаги:

1. Откройте терминал.

2. Выполните следующую команду:

pg_dump -U dbo -Fc -f d10task.dump d10task

Здесь dbo — это имя пользователя PostgreSQL, а d10task — название базы данных, которую нужно сохранить.

Примечания:

Файл d10task.dump будет содержать дамп указанной базы данных в формате custom.

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

Шаги:

1. Откройте терминал

2. Выполните следующую команду:

pg_restore -U dbo -d postgres -Fc -c -v all_databases_backup.dump

Где:

dbo — имя пользователя PostgreSQL с необходимыми правами.

postgres — имя базы данных, в которую будет восстанавливаться дамп (замените на нужное имя вашей базы данных).

all_databases_backup.dump — файл дампа всех баз данных PostgreSQL в формате custom.

Опции:

-Fc — формат дампа custom , используемый для бинарных файлов.

-c — очищает базу данных перед восстановлением.

-v — выводит подробный вывод на экран.

Восстановление одной базы данных

Шаги:

1. Создайте новую базу данных или используйте существующую:

createdb -U dbo d10task

2. Выполните следующую команду для восстановления из дампа:

pg_restore -U dbo -d d10task -Fc -c -v d10task.dump

Где:

dbo — Имя пользователя PostgreSQL.

d10task — Имя базы данных, в которую будет восстанавливаться дамп.

d10task.dump — Файл дампа конкретной базы данных PostgreSQL в формате custom .

Опции:

-Fc — Формат дампа custom , используемый для бинарных файлов.

-c — Очищает базу данных перед восстановлением.

-v — Выводит подробный вывод на экран.

3. Введите пароль, если это необходимо.

Настройка схем в восстановленной базе

По окончании восстановления в новой базе необходимо настроить схемы:

1. Зайдите в базу:

psql -d d10task

2. Выполните скрипт:

alter role D10TaskUser set search_path = "dbo", "public";

alter role dbo set search_path = "dbo", "public";

alter user MigrationsDaemon set search_path = "dbo", "public";

alter user rebus set search_path = "rebus", "public";

grant dbo, rebus to MigrationsDaemon;

grant all on all tables in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all sequences in schema dbo, sys to dbo, MigrationsDaemon;

grant all on all functions in schema dbo, sys to dbo, MigrationsDaemon;

grant all on schema dbo, sys to dbo, MigrationsDaemon;

 

alter default privileges in schema dbo, sys, SignalR grant all on tables to dbo,

MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on sequences to

dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on functions to

dbo, MigrationsDaemon;

alter default privileges in schema dbo, sys, SignalR grant all on types to dbo,

MigrationsDaemon;

3. Выйдите из консоли psql

\q

Рекомендации по хранению резервных копий

1. Частота резервного копирования

Рекомендуем выполнять ежедневный полный бэкап для критически важных данных.

2. Глубина хранения

Храните резервные копии минимум за последние 7-14 дней. Архивируйте месячные и годовые копии для долгосрочного хранения.

3. Безопасность

Храните резервные копии в защищённом месте. Используйте шифрование для резервных копий, особенно при хранении в облачных хранилищах.

4. Автоматизация

Используйте скрипты и планировщики задач (например, cron в Linux) для автоматизации процесса резервного копирования и очистки старых копий.

Пример скрипта для автоматизации полного бэкапа

Этот скрипт создаёт полный бэкап всех баз данных и удаляет резервные копии старше 14 дней. Добавьте созданный скрипт в планировщик задач для регулярного выполнения. Вот как это можно сделать в OS Linux:

1. Откройте cron таблицу для редактирования с помощью команды:

crontab -e

2. Если система спрашивает, какой текстовый редактор использовать, выберите тот, который вам удобен.

3. В открывшемся файле добавьте следующую строку в конец файла, чтобы задать выполнение скрипта (например, в 23:00 каждую ночь):

0 23 * * * /path_to_script.sh

Первое число (0) указывает на минуты (в данном случае, 0 минут).

Второе число (23) указывает на часы (в данном случае, 23 часа или 11 вечера).

Звёздочки (*) означают "каждый день", "каждый месяц" и "каждый день недели" соответственно.

4. Сохраните файл и закройте текстовый редактор.

Теперь скрипт /path_to_script.sh будет выполняться каждую ночь в 23:00 по местному времени. Убедитесь, что путь к скрипту /path_to_script.sh указан правильно и что у него есть права выполнения для пользователя, под которым будет запущен cron.

Следование этим рекомендациям и использование приведённых инструкций поможет обеспечить надёжное резервное копирование ваших баз данных PostgreSQL и их быстрое восстановление в случае необходимости.