Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Инструменты для создания резервной копии базы данных ECCM представляют из себя набор bash-скриптов для автоматического/ручного создания резервных копий PostgreSQL-базы ECCM внутри Docker-контейнера и файлов конфигурации ECCM, с логированием и возможностью запуска по расписанию с помощью "cron":

  • postgres/scripts/backup.sh — скрипт для создания резервной копии БД и/или файлов конфигурации;
  • postgres/scripts/setup-cron-backup.sh — скрипт, позволяющий автоматизировать вызов backup.sh с задаваемой периодичностью с помощью cron;
  • postgres/scripts/restore.sh — скрипт для восстановления БД и/или файлов конфигурации из резервной копии;
  • postgres/scripts/liblog.sh — библиотека для выполнения операций резервного копирования и восстановления PostgreSQL;
  • postgres/scripts/libbackup.sh — библиотека для логирования с цветным выводом и записью в файл.

Создание резервной копии

...

ECCM

Скрипты создания резервной копии (backup.sh, setup-cron-backup.sh) поддерживают следующие флаги:

ФлагНазначение

--all (используется по умолчанию)

Резервная копия БД и файлов конфигурации
--databaseРезервная копия БД
--configsРезервная копия файлов конфигурации

Для корректной работы скрипта создания резервной копии (backup.sh) необходимо определить следующие переменные окружения:

ПеременнаяНазначениеОбязательнаЗначение по умолчанию

ECCM_DATABASE

Название базы данных ECCM

Да
При использовании флагов --all, --database-

POSTGRES_HOST

Хост PostgreSQL-сервера

Да
При использовании флагов --all, --database-

POSTGRES_PORT

Порт PostgreSQL

Нет'5432'

ROOT_POSTGRES_USER

PostgreSQL-пользователь с правами на dump

Да
При использовании флагов --all, --database-

ROOT_POSTGRES_PASSWORD

Пароль к PostgreSQL

Да

При использовании флагов --all, --database -

CONFIG_DIR

Путь к директории с файлами конфигурации ECCM

При использовании флагов --all, --configs-

BACKUPS_DIR

Путь к директории для резервных копий

Нет 
При использовании флагов --all, --database'/tmp/backups'

BACKUP_LOG

Путь к лог-файлу

Нет '/tmp/backups/log/eccm_backup.log'

BACKUP_CRON

Cron-выражение для периодичности резервного копирования

Да-

MAX_BACKUPS_COUNT

Количество резервных копий после ротации

Нет 'не ограничено'

Для корректной работы скрипта создания резервной копии с задаваемой периодичностью (setup-cron-backup.sh) необходимо дополнительно определить следующие переменные окружения:

ПеременнаяНазначениеОбязательнаЗначение по умолчанию

BACKUP_CRON

Cron-выражение для периодичности резервного копирования

Да-
Примечание

Во избежание потери файлов резервных копий при перезагрузке сервера рекомендуется изменить значения по умолчанию для переменных BACKUPS_DIR и BACKUP_LOG.

Создать резервную копию БД можно двумя способами:

1. запустить скрипт backup.sh вручную;

...

Результатом работы будет сжатый файл .dump , размещенный в директории и/или файлы конфигурации, размещенные в директории $BACKUPS_DIR. При указании переменной $MAX_BACKUPS_COUNT после вызова ./backup.sh в директории $BACKUPS_DIR останется только ($MAX_BACKUPS_COUNT) последних резервных копий, а более старые — автоматически удалятся.

...

Блок кода
languagebash
titleПример ручного запуска скрипта
ECCM_DATABASE="eccm" POSTGRES_HOST="localhosthost" POSTGRES_PORT="5432" ROOT_POSTGRES_USER="tester" ROOT_POSTGRES_PASSWORD="tester" BACKUPS_DIR="/tmp/backups" CONFIG_DIR="/eccm" /bin/bash ./backup.sh

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

Блок кода
languagebash
titleПример настройки запуска скрипта по расписанию (каждый день в 02:00)
ECCM_DATABASE="eccm" POSTGRES_HOST="localhosthost" POSTGRES_PORT="5432" ROOT_POSTGRES_USER="tester" ROOT_POSTGRES_PASSWORD="tester" BACKUP_CRON="0 2 * * *" BACKUPS_DIR="/tmp/backups" CONFIG_DIR="/eccm" /bin/bash ./setup-cron-backup.sh


Восстановление

...

ECCM из резервной копии

Скрипт восстановления БД из резервной копии (restore.sh) предназначен для восстановления базы данных ECCM и/или файлов конфигурации из ранее созданной резервной копии. Работает в среде Docker с PostgreSQL и поддержкой TimescaleDB. Для корректной работы скрипта восстановления из резервной копии необходимо определить следующие переменные окружения:

ПеременнаяНазначениеОбязательнаЗначение по умолчанию

ECCM_DATABASE

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

Да
При использовании флагов --all, --database-

POSTGRES_HOST

Хост PostgreSQL-сервера

Да
При использовании флагов --all, --database-

POSTGRES_PORT

Порт PostgreSQL

Нет Нет'5432'

ROOT_POSTGRES_USER

PostgreSQL-пользователь с правами на восстановление

Да
При использовании флагов --all, --database-

ROOT_POSTGRES_PASSWORD

Пароль пользователя PostgreSQL

ДаПри использовании флагов --all, --database-

CONFIG_DIR

Директория для восстановления файлов конфигурации

При использовании флагов --all, --configs-

BACKUPS_DIR

Директория для поиска резервной копии (если не указан файл)

Нет`/tmp/backups`

RESTORE_LOG

Путь к лог-файлу восстановления

Нет '/tmp/restore/log/eccm_restore.log'

...

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

...

Для восстановления из конкретного файла резервной копии используется флаг -f с последующим указанием расположения $BACKUPS_DIR/имя_резервной_копии.dump:

Информация

Для корректной работы скрипта должен быть запущен ECCM или контейнер postgresПеред выполнением восстановления скрипт останавливает работу ECCM.

Блок кода
languagebash
titleПример восстановления БД из конкретного файла резервной копии
ECCM_DATABASE="eccm" POSTGRES_HOST="localhosthost" POSTGRES_PORT="5432" ROOT_POSTGRES_USER="tester" ROOT_POSTGRES_PASSWORD="tester" CONFIG_DIR="/eccm" /bin/bash ./restore.sh -f /tmp/backups/eccm_2025-06-02_12-00-00_123.dump

Для восстановления из последнего файла резервной копии необходимо указать переменную $BACKUPS_DIR или использовать флаг -d с последующим указанием директории с резервными копиями:

Блок кода
languagebash
titleПример восстановления БД из последнего файла резервной копии с использованием переменной окружения
ECCM_DATABASE="eccm" POSTGRES_HOST="localhosthost" POSTGRES_PORT="5432" ROOT_POSTGRES_USER="tester" ROOT_POSTGRES_PASSWORD="tester" BACKUPS_DIR="/tmp/backups" /bin/bash ./restore.sh
Блок кода
languagebash
titleПример восстановления БД из последнего файла резервной копии с использованием флага -d
ECCM_DATABASE="eccm" POSTGRES_HOST="localhost" POSTGRES_PORT="5432" ROOT_POSTGRES_USER="tester" ROOT_POSTGRES_PASSWORD="tester" CONFIG_DIR="/eccm" /bin/bash ./restore.sh -d /tmp/backups

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

Блок кода
languagebash
titleПерезапуск Запуск контейнеров
./compose-tools.sh --stop
./compose-tools.sh --start <ip_address>