Настройка резервного копирования баз данных MongoDB

Настройка резервного копирования баз данных MongoDB#

Для резервного копирования баз данных MongoDB используйте план защиты со скриптом, в котором описаны команды для встроенного инструмента MongoDB — утилиты mongodump.

Предварительные требования

  • Агент защиты и утилита mongodump должны находиться на одном хосте.

  • В случае если база данных находится на отдельном хосте, настройте доступ утилиты mongodump к базе данных MongoDB.

Настройка удаленного подключения к базе данных MongoDB

Для настройки удаленного подключения необходимо задать значение параметра bindIp:

  1. Отредактируйте конфигурационный файл /etc/mongod.conf, например, добавьте строки:

    ...
    net:
      port: 27017
      bindIp: 0.0.0.0
    ...
    
  2. Перезапустите сервер 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)

Создание плана резервного копирования

Для создания плана защиты выполните следующие действия:

  1. Перейдите в Устройства и выберите машину с базой данных MongoDB, которую вы хотите защитить.

  2. Перейдите на вкладку справа Защитить.

  3. В разделе Выбор данных укажите данные для резервного копирования. Возможные варианты:

    • Вся машина. Обратите внимание, что внешние диски не включаются в резервную копию всей машины (подробнее см. в разделе Выбор всей машины).

    • Диски/тома.

    • Файлы/папки.

    В поле Элементы для резервного копирования нажмите Указать и выберите данные для резервного копирования. Папки, указанные в поле Элементы для резервного копирования, должны существовать до запуска резервного копирования (дочерние элементы могут быть созданы в ходе выполнения скрипта).

    Место хранения резервной копии из скрипта (например, /home/mongo_dump/latest) должно попадать в список данных для резервного копирования (либо явно, либо как дочерний элемент).

  4. В поле Место сохранения нажмите Указать и выберите место хранения резервных копий.

  5. В поле Параметры резервного копирования нажмите Изменить.

    image1

  6. Выберите параметр Команды до или после (Также можно использовать параметр Команды до или после захвата данных). Включите переключатель Выполнение команды до резервного копирования и укажите путь до файла со скриптом с командами для утилиты mongodump:

    image2

    Примечание

    Если работа утилиты mongodump завершается ошибкой (например, если mongodump не смогла установить соединение с базой данных), то при установленном флажке Прерывать резервное копирование при сбое команды Кибер Бэкап не начинает резервное копирование и отображает в интерфейсе сообщение об ошибке.

    Однако, если утилита mongodump завершает работу без ошибки (return code = 0), то в Кибер Бэкап такая операция помечается как успешно выполненная при любых результатах работы mongodump.

    Рекомендуем проверять результаты работы утилиты mongodump (например, в файле README.txt), чтобы убедиться, что резервная копия создана успешно.

    Нажмите Готово.

  7. При необходимости укажите другие параметры плана защиты. Подробнее см. в разделе Резервное копирование.

  8. Нажмите Применить.

Новый план защиты появится в списке планов.