An open API service indexing awesome lists of open source software.

https://github.com/smsoft-ru/pgdbdump

Linux shell scripts for backup and restore full/incremental/differential dumps of postgres databases
https://github.com/smsoft-ru/pgdbdump

backup backup-solution bash-script database database-management dialog differential-backups incremental-backups linux pgsql postgres postgresql postgresql-database productivity

Last synced: 2 months ago
JSON representation

Linux shell scripts for backup and restore full/incremental/differential dumps of postgres databases

Awesome Lists containing this project

README

        

pgdbdump v1.0

Набор сценариев оболочки Linux, предназначенный для создания полных, дифференциальных или инкрементных дампов баз данных postgres.
Этот набор скриптов также включает в себя интерактивный скрипт, основанный на dialog (который, в свою очередь, основан на ncurses)
для восстановления этих дампов.

(C) 2024 Сергей Мерзликин [email protected]

Распространяется под лицензией GNU General Public License v3.0.

pgdbdump.sh используется для создания дампов. При создании полного дампа он работает так:

1. Он создает текстовый дамп базы данных в raw-формате во временном каталоге.
2. Он создает rdiff-сигнатуру для созданного дампа и сохраняет (или заменяет, если существует) ее в каталоге резервных копий.
3. Он сжимает дамп с помощью lrzip, pixz, xz или 7-zip (в зависимости от опций в конфигурационном файле и от размера дампа)
и сохраняет его в каталоге резервных копий. Временный несжатый дамп после этого удаляется. Информация о дате и типе дампа
содержится в имени файла сжатого дампа.

При создании дифференциального или инкрементного дампа он работает так:

1. Он создает текстовый дамп базы данных в raw-формате во временном каталоге.
2. Он создает дельта-файл rdiff во временном каталоге используя ранее сохраненную сигнатуру rdiff.
3. Только при создании инкрементного дампа он создает rdiff-сигнатуру для созданного дампа и заменяет ее в каталоге резервных копий.
4. Он сжимает дельта-файл rdiff вышеупомянутыми архиваторами и сохраняет его в каталоге резервных копий. Временный несжатый дамп
и дельта-файл после этого удаляются. Информация о дате и типе дампа содержится в имени сжатого дельта-файла.

Основным способом запуска pgdbdump.sh являются задания cron.

pgdbrestore.sh - это интерактивный (с возможностью неинтерактивного запуска) удобный скрипт, предназначенный для восстановления
архивов базы данных postgres, созданных скриптом pgdbdump.sh, в новую или исходную базу данных. Также имеется возможность
реконструировать текстовый дамп в raw-формате для последующего ручного восстановления (возможно, на другой машине).
Скрипт распаковывает и комбинирует дифференциальные, инкрементные и полные дампы (с помощью rdiff), и при помощи полученного
полного дампа восстанавливает базу данных postgres. Диалоговые экраны скрипта позволяют выбрать базу данных для восстановления, дату
архива, режим восстановления (в исходную базу данных, новую базу данных или сохранить полный дамп на диске) и некоторые другие опции.

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

Оба скрипта могут регистрировать свои действия и ошибки в systemd journal и syslog. Параметры командной строки и параметры
конфигурации описаны в начале соответствующих файлов.

Зависимости:

- postgres (pg_dump, psql)
- rdiff
- lrzip
- pixz
- xz
- 7-zip
- bash
- dialog
- realpath
- logger

Утилиты сжатия требуются только те, которые настроены (для сжатия), и для которых соответствующие типы архивов присутствуют в каталоге
резервных копий (для распаковки). Если выбран тип сжатия "auto" (по умолчанию), то используются pixz и lrzip, если они установлены
(рекомендуется), и xz в противном случае.

Большинство из вышеперечисленных зависимостей уже присутствуют в современных дистрибутивах Linux.

Установка:

- Проверьте зависимости и установите недостающие, если необходимо
- Скопируйте конфигурационные файлы в каталог /etc/pgdbdump
- Скопируйте остальные файлы в любой каталог в файловой системе (все файлы должны быть вместе)
- Измените права файлов, чтобы сделать исполняемыми: pgdbdump.sh, pgdbdump_diff.sh, pgdbdump_full.sh и pgdbrestore.sh
- Настройте каталог резервных копий в конфигурационных файлах
- Настройте задания cron для создания дампов на регулярной основе

Несколько скриншотов работы скрипта pgdbrestore.sh:

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

![Экран выбора базы](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_selectdb.png)

Настройка диапазона дат для поиска и отображения дампов

![Экран выбора диапазона дат](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_daterange.png)

Панель календаря появляется после активации экранной кнопки "Изменить" на предыдущем скриншоте

![Экран выбора даты](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_calendar.png)

Этот экран позволяет выбрать конкретный дамп для восстановления

![Экран выбора дампа](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_selectdump.png)

Выбор режима восстановления

![Экран выбора режима](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_mode.png)

Выбран режим сохранения реконструированного дампа: выбор каталога для сохранения файла дампа

![Экран выбора каталога](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_selectdir.png)

Выбран режим восстановления в новую базу данных: задание имени новой базы данных

![Экран ввода имени базы данных](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_newdb.png)

Подтверждение создания новой базы данных

![Экран подтверждения](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_confirm.png)

Процесс восстановления начался

![Экран отображения хода процесса](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_progress.png)

База данных успешно восстановлена

![Экран завершения](https://github.com/smsoft-ru/pgdbdump/blob/main/screenshots/ru/pgdbrestore_completed.png)