Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 2 Следующий »

При обновлении с версий ниже 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-postgreselph-mongo, elph-minio;
  • MinIO доступен по http://127.0.0.1:9000;
  • Установленный клиент MinIO - (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. Запустите скрипт настройки:

bash setup-cron.sh

Скрипт задаст несколько вопросов для настройки 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 можно следующей командой:

crontab -e

Восстановление баз данных 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


  • Нет меток