При обновлении с версий ниже 2.9.2 на 2.10.0 и выше медиа и файлы не сохранятся! Миграция медиа и файлов проводится по запросу. Для проведения миграции файлов обратитесь в коммерческий отдел компании Eltex: eltex@eltex-co.ru.

Резервное копирование баз данных Chat Server

Для упрощения создания и восстановления резервных копий воспользуйтесь скриптом: elph-chat-backup.sh.

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

Резервное копирование базы выполняется с запущенного Chat Server.

elph-chat-backup.sh создает резервную копию только mongo и minio!

Копию postgreSQL с данными Keycloak нужно создавать вручную!

1. Скачайте установочный скрипт и выдайте права на исполнение:

sudo chmod +x elph-chat-backup.sh

2. Запустите скрипт:

./elph-chat-backup.sh dump

При запуске скрипт установит MinIO Client:

wget https://dl.min.io/client/mc/release/linux-amd64/mc


Ответьте на вопросы:

Введите MinIO Access Key и MinIO Ssecret Key. Подойдут MINIO_ROOT_USER и MINIO_ROOT_PASSWORD.

Enter MinIO access key:
Enter MinIO secret key:

Введите адрес или доменное имя Elph Chat Server (например, elph-chat-server.loc):

Enter MinIO ip or domain(Example: elph-chat-server.loc):
	Пример: elph-chat-server.loc или 192.168.0.12.

Введите директорию, в которую будет сохранена резервная копия, либо оставьте пустым для выбора домашней директории пользователя. Убедитесь, что у пользователя есть доступ к этой директории.
Enter backup directory or press enter to use default (Default: /home/[user]/elph-chat-backups/[date.time]/): 

Данный скрипт создаст 2 директории с файлами: minio и mongo.

Убедитесь, что резервная копия создана успешно и нет ошибок в процессе выполнения скрипта!

Создайте резервную копию postgreSQL:

docker exec elph-postgres pg_dump -U postgres postgres > pg_dump_$(date +%d%m%Y_%H:%M).sql

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

1. Сделайте резервную копию базы mongoDB с запущенного контейнера mongo:

docker exec elph-chat-server-stable-mongo-1 mongodump --archive > dump_$(date +%d%m%Y_%H:%M).gz

2. Сделайте резервную копию базы minIO:

2.1. Установка MinIO Client:

2.1.1 Скачайте MinIO Client:

wget https://dl.min.io/client/mc/release/linux-amd64/mc

2.1.2 Сделайте файл исполняемым:

chmod +x mc

2.1.3 Переместите файл в системный путь и переименуйте mc в minio-client, чтобы избежать конфликтов:

sudo mv mc /usr/local/bin/minio-client

2.2. Настройте alias в MinIO:

minio-client alias set myminio http://<chat-server-address>:9000 minio_root_login minio_root_password

2.3. Скопируйте файлы из MinIO в директорию:

minio-client cp --recursive myminio/elph-chat <path_to_backup>
minio-client cp --recursive myminio/temp-files <path_to_backup>

3. Создайте резервную копию postgreSQL:

docker exec elph-postgres pg_dump -U postgres postgres > pg_dump_$(date +%d%m%Y_%H:%M).sql

Восстановление баз данных Chat Server

Восстановление резервной копии скриптом

1. Остановите все контейнеры сервера, кроме mongoDB, MinIO и postgres. Убедитесь, что контейнеры elph-mongo, elph-minio и elph-postgres запущены и доступны.

2. Запустите скрипт:

./elph-chat-backup.sh restore

И ответьте на вопросы:

Пример вопросов и ответов при восстановлении резервной копии

Enter MinIO access key:
Enter MinIO secret key:

Введите адрес или доменное имя Elph Chat Server. (Например elph-chat-server.loc):

Enter MinIO ip or domain(Example: elph-chat-server.loc):
	Например: elph-chat-server.loc или 192.168.0.12.
Введите директорию в которой сохранена резервная копия.
Enter backup directory:
    Enter backup directory: /home/[user]/elph-chat-backups/[date.time]

3. Восстановите postgreSQL:

3.1. Очистите базу postgres:

docker exec -i elph-postgres psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS postgres;"

3.2. Создайте базу postgres:

docker exec -i elph-postgres psql -U postgres -d template1 -c "CREATE DATABASE postgres;"

3.3. Запустите восстановление базы данных:

docker exec -i elph-postgres psql -U postgres -d postgres < backup_postgres.sql

4. Запустите все контейнеры:

./ecss-elph-chat-server.sh up

Перейдите по адресу https://<chat-address>:9000, авторизуйтесь и проверьте структуру базы данных MinIO:

Восстановление резервной копии вручную

1. Остановите все контейнеры сервера, кроме mongoDB и MinIO. Убедитесь, что контейнеры elph-chat-server-stable-mongo-1 и minio запущены и доступны:

docker ps
docker container stop elph-chat-server-stable-nginx-1 elph-chat-server-stable-server-1

2. Чтобы восстановить базу данных из созданной резервной копии, выполните следующую команду. Замените dump.gz на имя вашего файла резервной копии, если оно отличается:

docker exec -i elph-chat-server-stable-mongo-1 sh -c 'mongorestore --archive --db elph --drop' < dump.gz

3. Установите MinIO Client и настройте Access Keys;

4. Скопируйте файлы из директории в MinIO:

minio-client cp --recursive /minio-backup/ myminio/elph-chat
minio-client cp --recursive /minio-backup/ myminio/temp-files

5. Восстановите postgreSQL:

5.1. Очистите базу postgres:

docker exec -i elph-postgres psql -U postgres -d template1 -c "DROP DATABASE IF EXISTS postgres;"

5.2. Создайте базу postgres:

docker exec -i elph-postgres psql -U postgres -d template1 -c "CREATE DATABASE postgres;"

5.3. Запустите восстановление базы данных:

docker exec -i elph-postgres psql -U postgres -d postgres < backup_postgres.sql

Перейдите по адресу https://<chat-address>:9000, авторизуйтесь и проверьте структуру базы данных:

6. Запустите все контейнеры:

./ecss-elph-chat-server.sh up