Резервное копирование и восстановление

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

Резервное копирование скриптом

Скрипт выполняет автоматическое формирование архивного файла, который включает резервные копии баз данных PostgreSQL и MongoDB, конфигурационные файлы сервисов, а также дополнительные данные: шаблоны и конфигурации nginx. Полученный архив может быть использован для восстановления системы при необходимости.

Для запуска необходимо выполнить команду:

curl -o "./backup.sh" "https://public-repo.svcp.io/utility/backup.sh" && \
    sudo chmod +x "./backup.sh" && \
    ./backup.sh

Архив резервной копии сохраняется в директории: /opt/backups/

Ручное резервное копирование

Подготовка

Создать директорию для резервных копий:

sudo mkdir -p /opt/backups

Создать временную директорию:

sudo mkdir -p /opt/backups/node0

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

Проверить наличие файла конфигурации:

sudo ls -la /opt/sp-spider-broker/.env

Открыть файл и посмотреть значения переменных подключения к базе (DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME). Эти параметры понадобятся для бэкапа:

sudo grep -E '^DB_' /opt/sp-spider-broker/.env

Создать директорию для бэкапа PostgreSQL:

sudo mkdir -p /opt/backups/node0/postgres

Выполнить резервное копирование PostgreSQL с использованием считанных параметров:

sudo PGPASSWORD="DB_PASSWORD" pg_dump \
    -h "DB_HOST" \
    -p "DB_PORT" \
    -U "DB_USER" \
    "DB_DATABASE" \
    > /opt/backups/node0/postgres/DB_DATABASE.sql

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

Проверить наличие утилиты mongodump:

sudo which mongodump

Если утилита не найдена — установить:

sudo apt-get update
sudo apt-get install -y mongodb-clients

Получить параметры подключения к MongoDB из PostgreSQL:

sudo PGPASSWORD="DB_PASSWORD" psql \
  -h "DB_HOST" \
  -p "DB_PORT" \
  -U "DB_USER" \
  -d "DB_DATABASE" \
  -t -A \
  -c 'SELECT "mongoConnection"::text FROM public.node LIMIT 1;'

Создать директорию для резервной копии MongoDB:

sudo mkdir -p /opt/backups/node0/mongo

Выполнить резервное копирование MongoDB (подставьте свои значения из mongoConnection):

sudo mongodump \
    --host "DB_HOST" \
    --port "DB_PORT" \
    --username "DB_USER" \
    --password "DB_PASSWORD" \
    --db "DB_DATABASE" \
    --out /opt/backups/node0/mongo

Резервное копирование конфигурационных файлов

Анализатор трафика (FlowCollector)

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/spfc

Скопировать конфигурационный файл:

sudo cp /opt/spfc/etc/analyzer.yaml /opt/backups/node0/spfc/

Скопировать каталог etc:

sudo cp -r /opt/spfc/etc /opt/backups/node0/spfc/

Веб-интерфейс (SP-Spider)

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

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/sp-spider

Скопировать конфигурационный файл:

sudo cp /opt/sp-spider/.env /opt/backups/node0/sp-spider/

Брокер сообщений (SP-Spider-Broker)

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/sp-spider-broker

Скопировать конфигурационный файл:

sudo cp /opt/sp-spider-broker/.env /opt/backups/node0/sp-spider-broker/

Сервис событий (SP-Events)

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/sp-events

Скопировать конфигурационный файл:

sudo cp /opt/sp-events/.env /opt/backups/node0/sp-events/

Скопировать каталог template:

sudo cp -r /opt/sp-events/template /opt/backups/node0/sp-events/

Агент сбора метрик (Carbon-ClickHouse)

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/carbon-clickhouse

Скопировать конфигурационный файл:

sudo cp /etc/carbon-clickhouse/carbon-clickhouse.conf /opt/backups/node0/carbon-clickhouse/

Хранилище метрик (Graphite-ClickHouse)

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/graphite-clickhouse

Скопировать конфигурационный файл:

sudo cp /etc/graphite-clickhouse/graphite-clickhouse.conf /opt/backups/node0/graphite-clickhouse/

Nginx

Создать директорию для резервной копии:

sudo mkdir -p /opt/backups/node0/nginx

Скопировать конфигурационный файл:

sudo cp /etc/nginx/nginx.conf /opt/backups/node0/nginx/

Скопировать каталоги sites-enabled и sites-available:

sudo cp -r /etc/nginx/sites-* /opt/backups/node0/nginx/

Создание архива

Создать архив:

sudo tar -czf /opt/backups/node0.tar.gz -C /opt/backups node0

Удалить временную директорию:

sudo rm -rf /opt/backups/node0

Проверить результат:

ls -la /opt/backups/node0.tar.gz

Проверить содержимое архива (отобразить первые 20 файлов):

sudo tar -tzf /opt/backups/node0.tar.gz | head -20

В результате выполнения шагов сформирован архив /opt/backups/node0.tar.gz, содержащий резервные копии PostgreSQL и MongoDB, конфигурационные файлы сервисов и дополнительные данные (шаблоны, лицензии, конфигурации nginx)


Восстановление системы

Перейти в каталог /opt/backups/, найти архив с резервной копией и распаковать:

sudo tar -xzvf node0.tar.gz

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

Перейти в каталог базы:

cd node0/postgres

Найти файл с расширением .sql.

При необходимости создать базу и пользователя:

sudo -u postgres psql
  • В консоли PostgreSQL выполнить:
CREATE DATABASE DB_DATABASE;
CREATE USER DB_USER WITH ENCRYPTED PASSWORD 'DB_PASSWORD';
GRANT ALL PRIVILEGES ON DATABASE DB_DATABASE TO DB_USER;
\q

Выполнить восстановление базы:

sudo PGPASSWORD="DB_PASSWORD" psql \
  -h "DB_HOST" \
  -p "DB_PORT" \
  -U "DB_USER" \
  -d "DB_DATABASE" \
  -f DB_DATABASE.sql

При необходимости обновить параметры подключения в конфигурационных файлах (.env) сервисов sp-spider, sp-spider-broker, sp-events.

Перезапустить сервисы:

sudo systemctl restart sp-spider sp-spider-broker sp-events

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

Перейти в каталог с резервной копией MongoDB:

cd node0/mongo

При необходимости создать пользователя MongoDB:

  • Отключить авторизацию в конфигурации:
sudo nano /etc/mongod.conf
  • Закомментировать строки:
security:
  authorization: enabled
  • Перезапустить MongoDB:
sudo systemctl restart mongod
  • Создать пользователя:
sudo mongosh

use DB_DATABASE;
db.createUser({
  user: "DB_USER",
  pwd: "DB_PASSWORD",
  roles: [{ role: "readWrite", db: "DB_DATABASE" }]
});
exit
  • Включить авторизацию обратно и перезапустить сервис:
sudo nano /etc/mongod.conf
  • Раскомментировать строки:
security:
  authorization: enabled
sudo systemctl restart mongod

Выполнить восстановление базы:

sudo mongorestore \
  --host "DB_HOST" \
  --port "DB_PORT" \
  --username "DB_USER" \
  --password "DB_PASSWORD" \
  --db "DB_DATABASE" \
  ./DB_DATABASE

При необходимости обновить параметры подключения в файле .env сервиса sp-events и в настройках ноды в веб-интерфейсе SP-Spider.

Перезапустить сервис:

sudo systemctl restart sp-events

Восстановление конфигурационных файлов

Анализатор трафика (FlowCollector)

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

cd node0/spfc/

Скопировать каталог etc:

sudo cp -r ./etc /opt/spfc/

Перезапустить сервис:

sudo systemctl restart analyzer

Веб-интерфейс (SP-Spider)

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

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

cd node0/sp-spider

Скопировать конфигурационный файл:

sudo cp ./.env /opt/sp-spider/.env

Перезапустить сервис:

sudo systemctl restart sp-spider

Брокер сообщений (SP-Spider-Broker)

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

cd node0/sp-spider-broker

Скопировать конфигурационный файл:

sudo cp ./.env /opt/sp-spider-broker/.env

Перезапустить сервис:

sudo systemctl restart sp-spider-broker

Сервис событий (SP-Events)

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

cd node0/sp-events

Скопировать конфигурационный файл:

sudo cp ./.env /opt/sp-events/.env

Скопировать каталог template:

sudo cp -r ./template /opt/sp-events/template

Перезапустить сервис:

sudo systemctl restart sp-events

Агент сбора метрик (Carbon-ClickHouse)

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

cd node0/carbon-clickhouse

Скопировать конфигурационный файл:

sudo cp ./carbon-clickhouse.conf /etc/carbon-clickhouse/carbon-clickhouse.conf

Перезапустить сервис:

sudo systemctl restart carbon-clickhouse

Хранилище метрик (Graphite-ClickHouse)

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

cd node0/graphite-clickhouse

Скопировать конфигурационный файл:

sudo cp ./graphite-clickhouse.conf /etc/graphite-clickhouse/graphite-clickhouse.conf

Перезапустить сервис:

sudo systemctl restart graphite-clickhouse

Nginx

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

cd node0/nginx

Скопировать конфигурационный файл:

sudo cp ./nginx.conf /etc/nginx/nginx.conf

Скопировать каталоги sites-enabled и sites-available:

sudo cp -r ./sites-* /etc/nginx/

Перезапустить сервис:

sudo systemctl restart nginx