Часто задаваемые вопросы#

Список основных вопросов, возникающих в процессе установки и эксплуатации приложения.

Как настроить восстановление работоспособности приложения при сбое?#

В основе приложения лежит оркестратор Docker Swarm, который автоматически восстановит работоспособность приложения, если оно было аварийно завершено. Docker Swarm также восстановит работу приложения при перезагрузке сервера.

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

sudo systemctl enable docker

Как сбросить данные неудачной установки или удалить приложение?#

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

sudo python3 script/unistall.py

Внимание

Удаление приложения приведет к потере всех пользовательских данных.

Как сделать резервные копии баз данных?#

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

sudo docker ps --format "{{.ID}}: {{.Names}}" --filter "name=mysql"

В окне терминала отобразится форматированный список контейнеров (значения полей будут отличаться):

988e1b0c682a: production-compass-d1-company_mysql-35150.1.ru5cfw3awroceqdfx3xcm2xti
09d95ff2637d: production-compass-monolith_mysql-monolith.1.x3gc282m3sk3usrc4yqsminub

Вывод имеет формат <id контейнера>: <имя контейнера>. Идентификатор контейнера потребуется при выполнении команды снятия резервной копии. Имя необходимо для определения, какая именно база данных содержится в этом контейнере.

Контейнер, имеющий имя вида production-compass-monolith_mysql-monolith.*, — это контейнер с общими данными приложения (база пользователей, очереди задач и т.д.).

Контейнеры, имеющие имя вида production-compass-d1-company_mysql-*, — это контейнеры с данными пространств для общения (сообщения, данные файлов, участники и т.д.). Каждое развернутое пространство для общения имеет свою собственную базу данных.

Для снятия резервной копии с базы данных, развернутой в контейнере, необходимо получить связку логин-пароль от базы данных. Эти данные можно получить в файле values.compass.yaml, который создается в директории установщика во время установки приложения. Для удобства потребуется установить пакет для работы с yaml файлами:

sudo add-apt-repository ppa:rmescandon/yq \
   && sudo apt update \
   && sudo apt install yq -y;

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

echo "user: $(yq eval ".projects.monolith.service.mysql.user" "src/values.compass.yaml")" \
   && echo "pass: $(yq eval ".projects.monolith.service.mysql.password" "src/values.compass.yaml")";

Получите связку логин-пароль от базы данных с данными пространства (все пространства используют одну и ту же связку):

echo "user: $(yq eval ".projects.domino.d1.company_mysql_user" "src/values.compass.yaml")" \
   && echo "pass: $(yq eval ".projects.domino.d1.company_mysql_password" "src/values.compass.yaml")";

В результате выполнения команд вы получите следующую информацию в терминале:

user: <user>     # логин для получения доступа к БД
pass: <password> # пароль для получения доступа к БД

Внимание

Команды, описанные ниже, не являются прямым руководством к действию. Они носят описательный характер. В зависимости от конкретной ситуации могут потребоваться дополнительные действия или изменения команд.

Пожалуйста, обратитесь к специалистам Compass в пространстве поддержки On-premise, Telegram, WhatsApp или на почту support@getcompass.ru, чтобы получить индивидуальную поддержку.

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

sudo docker exec <id контейнера> sh -c 'exec mysqldump -u<user> -p<password> --single-transaction --add-drop-database --compact --databases announcement_company announcement_main announcement_security announcement_service announcement_user_10m announcement_user_20m company_system domino_service file_node partner_data partner_invite_link pivot_attribution pivot_auth_2021 pivot_auth_2022 pivot_auth_2023 pivot_auth_2024 pivot_auth_2025 pivot_auth_2026 pivot_auth_2027 pivot_auth_2028 pivot_business pivot_company_10m pivot_company_service pivot_data pivot_file_2021 pivot_file_2022 pivot_file_2023 pivot_file_2024 pivot_file_2025 pivot_file_2026 pivot_file_2027 pivot_file_2028 pivot_history_logs_2021 pivot_history_logs_2022 pivot_history_logs_2023 pivot_history_logs_2024 pivot_history_logs_2025 pivot_history_logs_2026 pivot_history_logs_2027 pivot_history_logs_2028 pivot_phone pivot_rating_10m pivot_rating_20m pivot_sms_service pivot_system pivot_user_10m pivot_user_20m pivot_userbot system_compass_company system_file_node userbot_main userbot_service' >  <путь к файлу для сохранения резервной копии>

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

sudo docker exec <id контейнера> sh -c 'exec mysqldump -u<user> -p<password> --single-transaction --add-drop-database --compact --databases company_call company_conversation company_data company_member company_system company_temp company_thread space_search' >  <путь к файлу для сохранения резервной копии>

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

sudo docker exec -i <id контейнера> sh -c 'exec mysql -u<user> -p<password>' < <путь к файлу c резервной копией>

Примечание

Обратите внимание, что аргументы и их значения во вложенную команду exec mysql передаются без пробелов.

Как обновить сертификат?#

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

Обновить сертификаты на хостовом веб-сервере:

sudo nginx -t && sudo nginx -s reload

Обновить сертификаты в контейнерах:

for container in $(sudo docker ps -q --filter "name=nginx"); do sudo docker exec $container sh -c "nginx -t && nginx -s reload"; done;

Напишите нам в пространстве поддержки On-premise, Telegram, WhatsApp или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.