# Резервное копирование и восстановление базы данных PostgreSQL

Для обслуживания базы данных PostgreSQL наиболее удобным инструментом является программа [pgAdmin](https://www.pgadmin.org). Скачать программу можно бесплатно с [сайта производителя](https://www.pgadmin.org/download/).

Инструкция по созданию резервной копии и восстановлению базы данных доступна [тут](https://www.pgadmin.org/docs/pgadmin4/latest/backup_and_restore.html).

1. **Резервное копирование (backup) и восстановление БД**

При установке **PostgreSQL** создается задание автоматического backup (PostgreSQL backup task) в Планировщике заданий Windows.

В папке bin/ запустить файл *pg\_backup.bat*. При запуске он должен вызвать стандартные инструменты backup PostgreSQ (pg\_dumpall и pg\_dump) и создать 2 файла по пути: `C:\Users\<имя пользователя>\AppData\Roaming\AAM Systems\PassOffice\backup`, например,

```
passofficedb_18.12.2023.all.backup
```

```
passofficedb_18.12.2023.backup
```

{% hint style="info" %}
Рекомендуется при резервном копировании указывать кодировку:

```
pg_dump --encoding utf8
```

{% endhint %}

Восстановление выполняется файлом *pg\_restore.bat*, которому нужно передать имена файлов с backup в качестве аргументов.

В pgAdmin, находящегося по пути `C:\Program Files\PostgreSQL\12\pgAdmin 4\bin`, проверяем восстановленные таблицы.

2. **Создание резервной копии (бэкапа) при помощи pgAdmin4**

pgAdmin4 использует для резервирования и восстановления БД те же самые утилиты pg\_dump и pg\_restore, что и при работе из командной строки.

Перед использованием pgAdmin4 для этих целей необходимо указать пути до этих утилит в настройках:

1. Выберите пункт меню File, далее Preference.
2. В открывшемся окне найдите пункт Paths - Binary Paths, далее кликните на иконку папки в строчке с установленной версией PostgreSQL и укажите путь до папки bin PostgreSQL.
3. Нажмите на кнопку Validate и сохраните настройки.
4. Нажмите правой кнопкой мыши по БД, для которой требуется выполнить резервное копирование и в контекстном меню выберите пункт Backup.
5. В открывшемся окне в поле Filename введите полный путь до директории, в которой необходимо создать бэкап БД и имя файла (обязательно укажите расширение .backup). В поле Format следует оставить значение Custom. Далее нажмите кнопку Backup.
6. При успешном резервировании по указанному пути появится файл с копией базы данных.

**Восстановление из бэкапа при помощи pg\_Admin4**

1. Удалите старую базу (если она была создана)
2. Нажмите правой кнопкой мыши на Databases и выберите пункт Create - Database
3. В модальном окне задайте имя базы данных
4. Далее выберите созданную новую базу данных и кликните правой кнопкой мыши по ней, далее - пункт Restore
5. После нажмите на значок папки и выберите файл с бэкапом и далее - Restore
6. Если все прошло успешно, то резервная копия восстановится в выбранную базу.
7. **Резервное копирование базы данных в Passoffice.**

1\. В Мониторинге задач в «Доступных» выберите «Резервное копирование БД»

2\. Выберите будет ли задача *Разовая* или *По расписанию*

3\. В параметрах укажите *Путь для сохранения БД* и *Путь до папки bin PostgreSQL*

4\. Далее укажите *формат*, например, Custom и *кодировку*.

После запуска файл с бэкапом базы будет находиться по указанному пути.

**Восстановление из бэкапа при помощи pg\_Admin4**

1. Удалите старую базу (если она была создана)
2. Нажмите правой кнопкой мыши на Databases и выберите пункт Create - Database
3. В модальном окне задайте имя базы данных
4. Далее выберите созданную новую базу данных и кликните правой кнопкой мыши по ней, далее - пункт Restore
5. В поле «Формат» укажите тот же формат, который был указан в Passoffice при запуске задачи «Резервное копирование базы данных»
6. После нажмите на значок папки и выберите файл с бэкапом и далее - Restore
7. Если все прошло успешно, то резервная копия восстановится в выбранную базу.

**Обновление версии PostgreSQL**

*Ручной способ*

1. Необходимо сделать резервную копию базы данных с помощью утилиты pg\_dump
2. Загрузить новую версию PostgreSQL с официального сайта или с сайта российского дистрибьютера - <https://postgrespro.ru/>
3. Установить новую версию PostgreSQL
4. Восстановить базу данных из резервной копии с помощью утилиты pg\_restore

*Автоматический способ*

Автоматический способ подразумевает использование утилиты pg\_upgrade. <https://postgrespro.ru/docs/postgresql/15/pgupgrade>
