Резервное копирование и восстановление
В разделе описаны способы создания и восстановления резервных копий системы.
Резервное копирование скриптом
Скрипт выполняет автоматическое формирование архивного файла, который включает резервные копии баз данных 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