| Оглавление | ||
|---|---|---|
|
Инструменты для создания резервной копии базы данных резервирования 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-выражение для периодичности резервного копирования | Да | – |
| Примечание |
|---|
Во избежание потери файлов резервных копий при перезагрузке сервера рекомендуется изменить значения по умолчанию для переменных |
Создать резервную копию БД можно двумя способами:
1. запустить скрипт backup.sh вручную;
...
Результатом работы будет сжатый файл .dump , размещенный в директории и/или файлы конфигурации, размещенные в директории $BACKUPS_DIR. При указании переменной $MAX_BACKUPS_COUNT после вызова ./backup.sh в директории $BACKUPS_DIR останется только ($MAX_BACKUPS_COUNT) последних резервных копий, а более старые — автоматически удалятся.
...
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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 |
Для того чтобы настроить запуск скрипта создания резервной копии по заданному расписанию, можно использовать следующую команду:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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`backups' | ||
RESTORE_LOG | Путь к лог-файлу восстановления | Нет | '/tmp/restore/log/eccm_restore.log' |
...
Произвести восстановление базы данных из резервной копии можно:
...
Для восстановления из конкретного файла резервной копии используется флаг -f с последующим указанием расположения $BACKUPS_DIR/имя_резервной_копии.dump:
| Информация |
|---|
Для корректной работы скрипта должен быть запущен ECCM или контейнер postgresПеред выполнением восстановления скрипт останавливает работу ECCM. |
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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 с последующим указанием директории с резервными копиями:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
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 | ||||
| Блок кода | ||||
| ||||
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 |
После восстановления необходимо перезапустить запустить контейнеры:
| Блок кода | ||||
|---|---|---|---|---|
| ||||
./compose-tools.sh --stop
./compose-tools.sh --start <ip_address> |