По умолчанию резервные копии БД Eltex-SC (актуально для версии >1.21) располагаются в директории:
/storage/iot/mongodb/mongobackups/ /storage/iot/olapdb/clickhouse-backup/archives/
Резервные копии создаются по расписанию каждые сутки с момента первой инсталляции и запуска ядра платформы Eltex-SC.
Рекомендуется настроить резервное копирование в хранилище отличное от исходного сервера.
- Для восстановления из резервной копии БД необходимо предварительно подготовить сервер и проинсталлировать необходимо ПО, в том числе платформу Eltex-SC с помощью Ansible.
Пример с установкой дополнительного ПО:
apt update apt install software-properties-common curl build-essential ansible ansible-galaxy collection install community.general ansible-galaxy collection install community.crypto ansible-galaxy collection install community.docker apt install mongo-tools mongodb-clients
2. Скачать архивы актуальных резервных копий БД на сервер (в данном примере в домашнюю директорию пользователя с правами root).
3. Распаковать архивы mongo, например:
tar -xvf iot-core_2022-04-18* tar -xvf events_2022-04-18* tar -xvf iot-broker_2022-04-18*
4. Подготовить и настроить проект платформы в ansible-iot. Для ansible-iot должны быть настроены параметры в vars/service_parameters.yml:
db_mapped_port: 27017 olapservice_mapped_port: 8023 olapservice_db_mapped_port: 8123 core_api_mapped_port: 8071 core_api_ssl_mapped_port: 8073 iot_core_log_level: debug export_mongo_port: true export_olapservice_port: true export_olapservice_db_port: true
После завершения восстановления из резервных копий БД, необходимо вернуть настройки по умолчанию в vars/service_parameters.yml
5. Остановить микросервисы с доступом до БД:
ansible-playbook services_stop.yml --extra-vars '{"services":["core", "broker", "olapservice"]}'
6. Удалить старые коллекции iot если имеются, например:
mongo 127.0.0.1:27017/$target_bd_name --eval "db.dropDatabase()"
где, $target_bd_name:
iot-core iot-events iot-broker
7. Восстановить записи из резервных копий mongo, например:
mongorestore --host=127.0.0.1 --port=27017 --db=iot-core --noIndexRestore --drop var/backups/mongobackups/iot-core/2022-04-18_04-26/iot-core mongorestore --host=127.0.0.1 --port=27017 --db=iot-events --noIndexRestore --drop var/backups/mongobackups/iot-events/2022-04-18_04-26/iot-events mongorestore --host=127.0.0.1 --port=27017 --db=iot-broker --noIndexRestore --drop var/backups/mongobackups/iot-broker/2022-04-18_04-26/iot-broker
8. Восстановить записи из резервных копий olap, например:
cd /storage/iot/olapdb/clickhouse-backup/archives rm -rf * cp ` ls ~/iotcore_eventlog_*|tail -1|awk '{print $1}' ` . tar -xvf iotcore_eventlog_* docker cp var iot-olapservice-db-backup:/ ansible-playbook services_restart.yml --extra-vars '{"services":["olapservice-db", "olapservice-db-backup"]}' cd /storage/iot/olapdb/clickhouse-backup/archives echo "clickhouse-backup restore --rm "` ls var/lib/clickhouse/backup|tail -1|awk '{print $1}' ` > run.sh docker cp run.sh iot-olapservice-db-backup:/ docker exec iot-olapservice-db-backup sh /run.sh ansible-playbook services_stop.yml; ansible-playbook install.yml
Для выполнения команды ansible-playbook необходимо находиться или указать путь до сценариев ansible для развертывания ядра платформы Eltex-SC.