Бэкап приложения и баз данных#
Примечание
Для работы скриптов резервного копирования требуется утилита rsync.
При бэкапе на текущий сервер достаточно установить rsync только на этом сервере.
При переносе на новый сервер rsync должен быть установлен на обоих серверах — исходном и целевом.
Установите rsync:
На DEB-системах:
На RPM-системах:
Установка MySQL Shell для резервного копирования внешних БД#
Примечание
Если используются БД, поставляемые с приложением — для резервного копирования установка MySQL Shell не требуется, и данный шаг можно пропустить.
Для резервного копирования внешних баз данных необходимо установить MySQL Shell.
Ниже приведены инструкции для систем на базе Debian/Ubuntu и RPM (например, Fedora, CentOS, RHEL). Выберите подходящий вариант.
Установка MySQL Shell на Debian/Ubuntu
Откройте страницу MySQL APT Repository.
На странице найдите имя файла, например:
mysql-apt-config_0.8.36-1_all.deb. Версия может отличаться — используйте актуальную из списка.Скачайте пакет конфигурации репозитория, подставив актуальную версию в команду:
Установите скачанный пакет:
5. Во время установки откроется окно настройки репозитория MySQL.
В разделе MySQL Server & Cluster выберите ту же версию MySQL, что установлена в системе.
Остальные параметры оставьте по умолчанию, затем выберите «Ok» и нажмите «Enter».
Обновите список пакетов и установите MySQL Shell:
Установка MySQL Shell на RPM
Добавьте официальный репозиторий MySQL, установив RPM-пакет:
Установите MySQL Shell:
Как сделать бэкап приложения на текущем сервере?#
Сохранение данных на текущий сервер#
Для создания полной резервной копии приложения на текущем сервере создайте директорию для бэкапа:
Выполните скрипт 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).
Восстановление данных из резервной копии#
Запустите скрипт для восстановления резервной копии:
При запуске скрипта вам будет предложено:
Выбрать нужный бэкап из списка доступных копий.
Подтвердить удаление текущих данных и завершение работы приложения.
После подтверждения начнется процесс восстановления данных из выбранного бэкапа и обновления приложения.
Как настроить расширенные параметры бэкапа?#
Для более гибкой настройки создания бэкапов вы можете использовать следующие параметры скриптов backup_db.py и backup_all_data.py.
--backups-folder— директория вroot_mount_path, куда будут сохраняться бэкапы баз данных.--free-threshold-percent— пороговое значение свободного места в процентах для ограничения создания бэкапа.--auto-cleaning-limit— лимит для автоматической очистки бэкапов, если их количество превышает указанный лимит.
Пример скрипта, который создаёт бэкап только в случае, если свободное место на сервере не ниже 20%:
Пример скрипта, который автоматически удаляет старые бэкапы, если их количество превышает 10:
Примечание
Параметр --auto-cleaning-limit применяется только к бэкапам, созданным с тем же шаблоном имени, который задан через параметр --backup-name-format.
Это сделано для того, чтобы при автоматической очистке не были случайно удалены другие файлы или каталоги, находящиеся в директории бэкапов.
Например, если вы создавали бэкапы с именами по шаблону:
--backup-name-format "backup-%Y-%m-%d"
то при изменении шаблона, например, на
--backup-name-format "Резервная копия %Y-%m-%d"
старые бэкапы, созданные по предыдущему формату, не будут автоматически удалены.
Настройка уведомления, если заканчивается свободное место для создания бэкапа
В скрипт добавлена возможность отправки предупреждающего уведомления, если при указанном параметре free-threshold-percent будет ограничено создание бэкапа.
Для этого используйте следующие параметры скрипта backup_db.py или backup_all_data.py :
--userbot-notice-chat-id— id группового чата, куда будут отправляться уведомления.--userbot-notice-token— токен вашего бота в приложении Compass.--userbot-notice-domain— домен вашего приложения, на который будет отправлено сообщение.--userbot-notice-text— текст для уведомления от бота (по умолчанию передаётся текст «Не смогли создать бэкап на сервере»).
Пример скрипта, который отправит уведомление о том, что заканчивается место для создания бэкапа, если на сервере останется меньше 10% свободного места:
Как настроить регулярное создание бэкапов?#
Чтобы настроить регулярное создание резервных копий баз данных или приложения, добавьте выполнение скрипта в 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, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.