Настройка резервного копирования баз данных MongoDB#
Для резервного копирования баз данных MongoDB используйте план защиты со скриптом, в котором описаны команды для встроенного инструмента MongoDB — утилиты mongodump.
Предварительные требования
Агент защиты и утилита mongodump должны находиться на одном хосте.
В случае если база данных находится на отдельном хосте, настройте доступ утилиты mongodump к базе данных MongoDB.
Настройка удаленного подключения к базе данных MongoDB
Для настройки удаленного подключения необходимо задать значение параметра bindIp:
Отредактируйте конфигурационный файл
/etc/mongod.conf, например, добавьте строки:... net: port: 27017 bindIp: 0.0.0.0 ...
Перезапустите сервер MongoDB:
systemctl restart mongod.service
Подробнее см. в официальной документации MongoDB.
Создание скрипта с командами для утилиты mongodump
В скрипте необходимо указать параметры для утилиты mongodump. Подробнее см. в официальной документации MongoDB.
Пример скрипта:
#!/bin/bash
# Exit on error:
set -e
epoch_time=$(date +%s)
script_dir=$(pwd)
main_dir=/home/mongo_dump
backup_dir=${main_dir}/latest
info_file=${backup_dir}/README.txt
error_file=${backup_dir}/ERROR.txt
host_db="localhost:27017"
mongo_db_name="my-db"
mongo_db_collection="my-collection"
if [ ! -d ${backup_dir} ]; then
mkdir -p ${backup_dir}
echo -e "${epoch_time}\n$(date -d @${epoch_time})" > ${info_file}
echo -e "$(date -d @${epoch_time}): ${backup_dir} doesnt exist and has been created now. Restart backup task" >> ${error_file}
echo "$(date -d @${epoch_time}): ${backup_dir} doesnt exist and has been created now. Restart backup task" >&2
exit 1
else
# For move existing old data to a new dir
mv ${backup_dir} ${main_dir}/$(head -n 1 ${info_file})
# Or comment mv above and delete existing files:
# rm -rf ${backup_dir}
# Re-create backup dir:
mkdir -p ${backup_dir}
fi
cd ${script_dir}
echo -e "${epoch_time}\n$(date -d @${epoch_time})" > ${info_file}
echo -e "\n\nRun: /usr/bin/mongodump --host=${host_db} --db ${mongo_db_name} --collection=${mongo_db_collection} --out ${backup_dir}" >> ${info_file}
/usr/bin/mongodump --host=${host_db} --db=${mongo_db_name} --collection=${mongo_db_collection} --out ${backup_dir} >> ${info_file} 2>&1
где:
localhost:27017— имя хоста развертывания MongoDB;my-db— имя базы данных MongoDB;my-collection— имя коллекции базы данных MongoDB;/home/mongo_dump/latest— место хранения резервной копии;README.txt— файл с результатами работы скрипта;ERROR.txt— файл с ошибками при сбое в работе скрипта.
Пример содержимого файла README.txt:
1694175355
Fri Sep 8 15:15:55 MSK 2023
Run: /usr/bin/mongodump --host=localhost:27017 --db my-db --collection=my-collection --out /home/mongo_dump/latest
Unknown or unsupported stacktrace method requested: generic_fp. Ignoring it
2023-09-08T15:15:56.014+0300 writing my-db.my-collection to /home/mongo_dump/latest/my-db/my-collection.bson
2023-09-08T15:15:56.015+0300 done dumping my-db.my-collection (11 documents)
Создание плана резервного копирования
Для создания плана защиты выполните следующие действия:
Перейдите в Устройства и выберите машину с базой данных MongoDB, которую вы хотите защитить.
Перейдите на вкладку справа Защитить.
В разделе Выбор данных укажите данные для резервного копирования. Возможные варианты:
Вся машина. Обратите внимание, что внешние диски не включаются в резервную копию всей машины (подробнее см. в разделе Выбор всей машины).
Диски/тома.
Файлы/папки.
В поле Элементы для резервного копирования нажмите Указать и выберите данные для резервного копирования. Папки, указанные в поле Элементы для резервного копирования, должны существовать до запуска резервного копирования (дочерние элементы могут быть созданы в ходе выполнения скрипта).
Место хранения резервной копии из скрипта (например,
/home/mongo_dump/latest) должно попадать в список данных для резервного копирования (либо явно, либо как дочерний элемент).В поле Место сохранения нажмите Указать и выберите место хранения резервных копий.
В поле Параметры резервного копирования нажмите Изменить.

Выберите параметр Команды до или после (Также можно использовать параметр Команды до или после захвата данных). Включите переключатель Выполнение команды до резервного копирования и укажите путь до файла со скриптом с командами для утилиты mongodump:
Примечание
Если работа утилиты mongodump завершается ошибкой (например, если mongodump не смогла установить соединение с базой данных), то при установленном флажке Прерывать резервное копирование при сбое команды Кибер Бэкап не начинает резервное копирование и отображает в интерфейсе сообщение об ошибке.
Однако, если утилита mongodump завершает работу без ошибки (return code = 0), то в Кибер Бэкап такая операция помечается как успешно выполненная при любых результатах работы mongodump.
Рекомендуем проверять результаты работы утилиты mongodump (например, в файле README.txt), чтобы убедиться, что резервная копия создана успешно.
Нажмите Готово.
При необходимости укажите другие параметры плана защиты. Подробнее см. в разделе Резервное копирование.
Нажмите Применить.
Новый план защиты появится в списке планов.
