
При обновлении с версий ниже 2.9.2 на 2.10.0 и выше медиа и файлы не сохранятся! Миграция медиа и файлов проводится по запросу. Для проведения миграции файлов обратитесь в коммерческий отдел компании Eltex: eltex@eltex-co.ru. |
Резервное копирование с использованием Elph-chat-backup
Скрипт elph-chat-backup.sh создает резервные копии баз данных и объектов MinIO. Отдельный скрипт setup-cron.sh помогает удобно настроить расписание в crontab для каждого типа бэкапа независимо. Файл config.env хранит параметры для авторизации, директорию для бэкапов и их количество. Скрипт работает с контейнеризированными базами данных и объектным хранилищем.
Возможности скрипта
- Полный дамп MongoDB с использованием
mongodump --archive --gzip; - Дамп каждой пользовательской базы PostgreSQL отдельным сжатым файлом
.sql.gz; - Полное зеркалирование всех бакетов MinIO → архив
.tar.gz; - Автоматическая ротация старых бэкапов (удаление по заданному количеству копий);
- Подробный вывод в консоль (какие базы/файлы созданы, их размеры);
- Отдельный лог ошибок для каждого запуска;
- Безопасное восстановление с предупреждением и подтверждением;
- Поддержка переопределения директории и количества хранимых копий через флаги.
Требования
- Запущенные контейнеры с именами, содержащими
elph-postgres, elph-mongo, elph-minio; MinIO доступен по http://127.0.0.1:9000;- Установленный клиент MinIO -
mс (MinIO Client); - Наличие актуальных авторизационных данных в файле
config.env; - Права на выполнение docker команд;
- Права на создание директории по пути BACKUP_DIR.
Использование
Убедитесь, что MinIO Client(mc) расположен в /usr/local/bin/mc. MinIO Client поставляется совместно с чат сервер по пути elph-chat-server/unstable/elph-chat-backup/mc. |
Резервное копирование баз данных Chat Server
Резервное копирование выполняется на запущенном Chat Server. |
1. Измените параметры для логина к сервисам в файле config.env:
# General
# Директория в которую будет сохранена резервная копия
BACKUP_DIR="/opt/backup/elph-chat/"
# Количество резервных копий в директории
ROTATION=2
# MinIO credentials
# Авторизационные данные MinIO
MINIO_USER=minioadmin
MINIO_PASS=minioadmin
# PostgreSQL credentials
# Авторизационные данные PostgreSQL
POSTGRES_CONTAINER_PATTERN="elph-postgres"
PG_USER=postgres
PG_PASS=postgres
# MongoDB credentials (leave empty if no authentication)
# Авторизационные данные MongoDB
MONGO_CONTAINER_PATTERN="elph-mongo"
MONGO_USER=
MONGO_PASS=
|
|
2. Для запуска процесса создания бэкапа выполните команду с указанием одного, нескольких или всех сервисов:
Все сервисы:
bash elph-chat-backup.sh backup --all |
Только PostgreSQL:
bash elph-chat-backup.sh backup --postgres |
MongoDB + MinIO с переопределением директории и количества копий:
bash elph-chat-backup.sh backup --mongo --minio --dir /opt/backup/elph-chat/ --rotation 14 |
Автоматический запуск через cron
1. Запустите скрипт настройки:
Скрипт задаст несколько вопросов для настройки cron.
=== Настройка cron для бэкапов elph-chat ===
Путь к скрипту: /opt/elph-chat-backup/elph-chat-backup.sh
Текущие задания в crontab, содержащие 'elph-chat-backup.sh':
───────────────────────────────────────────────
(нет существующих заданий)
Вы можете задать расписание на создание бэкапа для выбранного сервиса или всех сразу
Каждое расписание — 5 полей cron:
минута час день_месяца месяц день_недели
0-59 0-23 1-31 1-12 0-7 (0=вс)
Примеры:
0 3 * * * → каждый день в 03:00
30 2 * * 1 → каждый понедельник в 02:30
0 */4 * * * → каждые 4 часа
* * * * * → каждую минуту
Чтобы пропустить сервис — просто нажмите Enter (пустая строка)
───────────────────────────────────────────────
Расписание для: backup --all
Введите 5 полей (или Enter для пропуска): 0 2 * * *
Принято: 0 2 * * *
Введите количество хранимых бэкапов (или Enter для пропуска): 5
───────────────────────────────────────────────
Расписание для: backup --postgres
Введите 5 полей (или Enter для пропуска):
Пропущено
───────────────────────────────────────────────
Расписание для: backup --mongo
Введите 5 полей (или Enter для пропуска):
Пропущено
───────────────────────────────────────────────
Расписание для: backup --minio
Введите 5 полей (или Enter для пропуска):
Пропущено
Будут установлены следующие задания:
───────────────────────────────────────────────
0 2 * * * bash /opt/elph-chat-backup/elph-chat-backup.sh backup --all --rotation 5
Всё верно? Установить? (y/N): y
Успешно установлено!
Текущие задания:
0 2 * * * bash /opt/elph-chat-backup/elph-chat-backup.sh backup --all --rotation 5
Конфигурация находится в:
/var/spool/cron/crontabs/root
Как удалить:
crontab -e → удалить строки вручную
crontab -r → полностью очистить crontab
Или запустить скрипт заново и согласиться на очистку старых
Готово. |
|
2. Проверить конфигурацию cron можно следующей командой:
Восстановление баз данных Chat Server
1. Перед восстановлением баз данных остановите все контейнеры Chat Server кроме elph-minio, elph-mongo и elph-postgres.
docker container stop elph-chat-client elph-chat-server-1 elph-chat-server-2 elph-container-monitor elph-events-webhook elph-file-service elph-keycloak elph-push-gateway elph-redis mini-apps |
2. Очистите базу данных PostgreSQL:
docker exec -i elph-postgres psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS mini_apps;"
docker exec -i elph-postgres psql -U postgres -d template1 -c "CREATE DATABASE mini_apps;"
docker exec -i elph-postgres psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS push_gateway;"
docker exec -i elph-postgres psql -U postgres -d template1 -c "CREATE DATABASE push_gateway;"
docker exec -i elph-postgres psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS postgres;"
docker exec -i elph-postgres psql -U postgres -d template1 -c "CREATE DATABASE postgres;" |
3. Для запуска процесса восстановления всех сервисов из последнего бэкапа выполните команду:
bash elph-chat-backup.sh restore --all |
Для запуска процесса восстановления с указанием сервиса:
bash elph-chat-backup.sh restore --postgres |
Для запуска процесса восстановления бэкапа из определенной директории выполните:
bash elph-chat-backup.sh restore --postgres --dir /opt/backup/elph-chat/postgres/20260119-0924/ |
4. Запустите все контейнеры:
./ecss-elph-chat-server.sh up |