Бэкап приложения и баз данных#
Примечание
Для работы скриптов резервного копирования требуется утилита rsync.
При бэкапе на текущий сервер достаточно установить rsync только на этом сервере.
При переносе на новый сервер rsync должен быть установлен на обоих серверах — исходном и целевом.
Установите rsync:
На DEB-системах:
На RPM-системах:
Как сделать бэкап приложения на текущем сервере?#
Сохранение данных на текущий сервер#
Для создания полной резервной копии приложения на текущем сервере создайте директорию для бэкапа:
Выполните скрипт backup_all_data.py
из директории установщика:
После выполнения скрипта:
резервная копия данных будет сохранена в указанной директории
/opt/backup_compass/compass
;установщик приложения также будет скопирован в директорию
/opt/backup_compass/compass/installer
;отдельная копия также сохраняется в
<root_mount_path>/backups
, гдеroot_mount_path
— путь изglobal.yaml
.
Вместо /opt/backup_compass
можно указать любую другую директорию, где будет удобно хранить резервную копию приложения.
Далее в инструкции директория /opt/backup_compass
будет использоваться в качестве примера.
Восстановление приложения на текущем сервере#
Копирование установщика#
Перед восстановлением необходимо скопировать установщик из бэкапа. Это можно сделать двумя способами:
Способ 1. Восстановить в ту же директорию, где раньше был установщик (например, /opt/onpremise-installer
).
Сначала переименуйте текущую директорию установщика, чтобы она сохранилась в качестве резервной копии:
Затем скопируйте установщик из бэкапа в прежнюю директорию:
Способ 2. Восстановление в новую директорию (рекомендуется, если нужно сохранить старую установку нетронутой).
Создайте новую директорию:
Скопируйте установщик в эту директорию:
Примечание
Далее директория /opt/on-premise/onpremise-installer
будет использоваться как основной установщик:
для обновлений, изменения настроек и обслуживания приложения.
Восстановление данных#
Примечание
Если вы делаете обычный резервный бэкап на случай сбоя (без переноса или изменений конфигурации), рекомендуется использовать первый вариант — восстановление в ту же директорию, где уже установлено приложение. Это самый простой и быстрый способ, так как не требует копирования данных или изменения настроек.
Вариант 1. Восстановление в ту же директорию (root_mount_path
не меняется)#
Перейдите в директорию скопированного установщика (вместо <путь-до-установщика> подставьте свой путь):
Запустите восстановление:
При запуске скрипта:
будет предложено выбрать резервную копию из списка;
нужно подтвердить удаление текущих данных и остановку приложения;
при первом запуске скрипта может появиться предложение обновить приложение.
Если такое уведомление появится, подтвердите обновление — это необходимо для корректного запуска окружения. Если приложение не было установлено ранее, никакие данные удалены не будут. После подтверждения начнется восстановление данных и перезапуск компонентов приложения.
Вариант 2. Восстановление в новую директорию (изменение root_mount_path
)#
Если вы хотите перенести данные приложения в другую директорию (например, /opt/compass_data
), отличную от текущего root_mount_path
,
скопируйте данные приложения в новую директорию:
Создайте новую директорию:
Скопируйте данные в новую директорию:
Откройте конфигурационный файл в скопированном установщике configs/global.yaml
и задайте в параметре root_mount_path
путь к новой директории:
root_mount_path: /opt/compass_data
Назначьте корректные права доступа, задав переменную ROOT_PATH
со значением параметра root_mount_path
из файла configs/global.yaml
(в примере — /opt/compass_data
):
Перейдите в директорию установщика:
Запустите восстановление:
При запуске скрипта:
будет предложено выбрать резервную копию из списка;
нужно подтвердить удаление текущих данных и остановку приложения;
при первом запуске скрипта может появиться предложение обновить приложение.
Если такое уведомление появится, подтвердите обновление — это необходимо для корректного запуска окружения. Если приложение не было установлено ранее, никакие данные удалены не будут. После подтверждения начнется восстановление данных и перезапуск компонентов приложения.
Как перенести Compass на новый сервер?#
Подготовка нового сервера#
Характеристики нового сервера должны быть такими же или выше характеристик текущего сервера, где расположен Compass. В случае переноса для экономии ресурсов допустимо использовать сервер с меньшими характеристиками, но при этом они должны соответствовать рекомендуемым значениям, приведённым в требованиях к серверу.
Команды для проверки характеристик
Создайте пользователя www-data
:
Если при создании пользователя появится ошибка
Ошибка: группа
www-data
не существует:
useradd: group 'www-data' does not exist
Создайте группу с GID 33:
Ошибка: GID 33 уже занят:
groupadd: GID '33' already exists
Проверьте, какая группа использует этот ID:
Если, например, это группа tape
:
tape:x:33:
Переназначьте её на другой ID (например 3333):
Создайте пользователя:
После того как группа существует (и свободна):
Проверьте результат:
Далее сервер, на который будет переноситься приложение, должен быть подготовлен и настроен по данной инструкции:
Скопируйте сертификаты в /etc/nginx/ssl/
, проверьте конфигурацию и перезапустите nginx:
Если у вас был настроен автоматический перевыпуск сертификатов, то настройте его и на новом сервере.
Создать директорию, где будет располагаться бэкап:
У пользователя который будет использоваться для переноса, должны быть права на данную директорию. Чтобы выдать права, из под нужного пользователя выполните команду:
Сохранение и отправка данных на новый сервер#
Для переноса приложения на новый сервер выполните следующие шаги:
Сгенерируйте SSH-ключ без passphrase (оставьте поле пустым при создании):
Прокиньте ключ на новый сервер:
Если подключение на новый сервер происходит только по ключу:
Прежде чем вводить команду ниже, необходимо сгенерировать ключ по первому шагу.
Введите команду, чтобы отобразить содержимое ключа на сервере, с которого переносите данные:
Данный ключ необходимо добавить в /root/.ssh/authorized_keys
на новом сервере.
Создайте на новом сервере директорию /opt/backup_folder
для проверки подключения:
И проверьте подключение, выполнив команду на сервере с которого будет происходить перенос данных, , передав путь до удалённого сервера и директории /opt/backup_folder
:
ssh -o IdentitiesOnly=yes -i /root/.ssh/id_rsa remote_user@<new_server_ip> 'echo OK && whoami && mkdir -p /opt/backup_folder'
Если в выводе отобразится OK
— значит ключ успешно был прокинут.
Выполните скрипт backup_all_data.py
, передав путь до удаленного сервера и директории, куда следует сохранить данные:
После выполнения:
Резервная копия будет сохранена на новом сервере в
/opt/backup_compass/compass
.В каталоге
/opt/backup_compass/compass/installer
будет находиться копия установщика приложения.
Разворачивание приложения на новом сервере#
Скопируйте установщик из /opt/backup_compass/installer
в отдельную директорию, например /opt/onpremise-installer
:
Отредактируйте конфигурационный файл configs/global.yaml
:
host_ip
— IP нового сервера;root_mount_path
— путь, в котором будут размещены данные приложения;jitsi.service.jvb.media_advertise_ips
— заполнить, если сервер с Compass находится на NAT.
Скопируйте данные из архива в директорию, указанную в параметре root_mount_path
, файла configs/global.yaml
.
Например, если в конфигурации задан путь /opt/compass
:
Примечание
Если вы хотите использовать другую директорию, укажите ее в параметре root_mount_path
в файле configs/global.yaml
и скопируйте данные именно туда.
Назначьте корректные права доступа, задав переменную ROOT_PATH
со значением параметра root_mount_path
из файла configs/global.yaml
(в примере — /opt/compass_data
):
Перейдите в директорию установщика:
Запустите восстановление:
При запуске скрипта:
будет предложено выбрать резервную копию из списка;
нужно подтвердить удаление текущих данных и остановку приложения;
появится предложение обновить приложение. Подтвердите обновление — это необходимо для корректного запуска окружения.
После подтверждения начнется восстановление данных и перезапуск компонентов приложения.
Развертывание приложения занимает некоторое время. В зависимости от мощности сервера время может варьироваться от 3 до 15 минут. Текущее состояние развертывания можно узнать с помощью команды:
У всех сервисов правое и левое число в колонке REPLICAS должны совпадать (ниже пример, количество строк и значения в полях могут быть другими):
ID NAME MODE REPLICAS IMAGE PORTS
jrnsa5illaao pivot_nginx replicated 1/1 dockerhub.com/nginx/nginx:apline-latest *:31000->443/tcp
7wismhojfze5 pivot_php_pivot replicated 1/1 docker.getcompass.com/compass-on-premise/php_pivot:1.1.0
3meydkmdpx3j pivot_go_event replicated 1/1 docker.getcompass.com/compass-on-premise/go_event:1.1.0
Если по истечении ожидаемого времени сервис не готов к работе, то можно получить дополнительную информацию командой:
После успешного разворачивания приложения на новом сервере:
необходимо поменять А-запись у домена на новый IP сервера (если внешний IP изменялся) и проверить, что она изменилась:
Проверить основной функционал приложения работает (авторизация, отправка сообщений, звонки)
После выполненных проверок, можно удалить приложение на предыдущем сервере.
Как сделать резервные копии баз данных?#
Создание резервной копии баз данных#
Для снятия резервных копий баз данных необходимо выполнить скрипт backup_db.py
из директории установщика:
После выполнения скрипта резервная копия данных будет сохранена по пути root_mount_path/backups/data_time
, где:
data_time
— метка времени создания бэкапа.root_mount_path
— путь к данным приложения, указанный в файлеglobal.yaml
.
Создаются следующие архивы:
mysql.tgz
— архив с общими данными приложения (база пользователей, очереди задач и т.д.).mysql_company_1.tgz
— архив с данными пространства для общения (сообщения, данные файлов, участники и т.д.). Каждое пространство для общения имеет свою собственную базу данных.configs.tgz
— архив конфигурационных файлов (global.protected.yaml, global.yaml).
Восстановление данных из резервной копии#
Запустите скрипт для восстановления резервной копии:
При запуске скрипта вам будет предложено:
Выбрать нужный бэкап из списка доступных копий.
Подтвердить удаление текущих данных и завершение работы приложения.
После подтверждения начнется процесс восстановления данных из выбранного бэкапа и обновления приложения.
Как настроить регулярное создание бэкапов?#
Чтобы настроить регулярное создание резервных копий баз данных или приложения, добавьте выполнение скрипта в root-crontab.
Откройте crontab для редактирования, выполнив команду:
Затем добавьте нужное задание (все они будут выполняться от имени root):
Резервное копирование баз данных каждый день в
02:00
:
Полный бэкап приложения (данные + БД) каждый день в
03:00
:
Полный бэкап приложения с отправкой на другой сервер каждый день в
04:00
(заменитеremote_user
,remote_host
и путь на актуальные):
Для настройки расписания выполнения бэкапа, можно воспользоваться сайтом crontab guru, который поможет легко подобрать нужное время.
Полный путь к файлам backup_db.py
и backup_all_data.py
можно получить командой, выполняемой в директории установщика:
Внимание
Пожалуйста, обратитесь к специалистам Compass в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную поддержку.
Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.