Перейти к основному содержимому
Версия: 7.0

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

В этой статье описываются примеры создания резервных копий в MongoDB. Резервное копирование обеспечивает безопасность данных и возможность их восстановления в случае сбоя системы или потери.

Мы рекомендуем выполнять ежедневное резервное копирование баз данных MongoDB и хранить копии за последнюю неделю.

Для создания и восстановления используются утилиты администрирования, которые устанавливаются вместе с MongoDB:

  • Создание резервных копий — mongodump
  • Восстановление резервных копий — mongorestore

Расположение утилит администрирования

Linux

Утилиты администрирования располагаются в каталоге, который добавляется в системный путь PATH, что делает их доступными для использования из командной строки CLI.

Обычно утилиты расположены в следующих директориях:

  • /usr/bin/
  • /usr/local/bin/
Расположение утилит MongoDB в Linux
Windows Server

По умолчанию утилиты администрирования MongoDB не расположены в переменном окружении $PATH, поэтому нужно выполнить поиск утилит с помощью PowerShell.

Открыть PowerShell от имени администратора:

С помощью контекстного меню Пуск
  1. Нажмите правой кнопкой мыши на значке Пуск в левом нижнем углу экрана.
  2. Выберите «Windows PowerShell (администратор)» из контекстного меню.
С помощью меню Пуск
  1. Нажмите левой кнопкой мыши на значок Пуск в левом нижнем углу экрана.
  2. Пропишите powershell
  3. Откройте PowerShell от имени «Администратора» комбинацией — Ctrl + Shift + Enter

Выполнить поиск утилит администрирования:

$utilityPath = Get-ChildItem -Path "C:\" -Filter "mongodump.exe" -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1; $utilityDirectory = $utilityPath.DirectoryName; cd $utilityDirectory
осторожно

Если MongoDB и утилиты администрирования были установлены на нестандартный диск, нужно изменить путь для поиска в параметре -Path

После выполнения произойдет смена текущей рабочей директории на новую, в которой расположены утилиты.

Стандартная установка Пассворка (Docker, PowerShell)

Для Docker-сборки используются скрипты создания и восстановления баз данных в MongoDB, которые расположены в корневой директории установки Пассворка:

  • /<passwork>/db-backup.sh
  • /<passwork>/db-restore.sh

Для PowerShell-модуля используются функции создания и восстановления баз данных в MongoDB, запуск выполняется в PowerShell от имени администратора:

  • Backup-MongoDB
  • Restore-MongoDB

Примеры создания резервных копий в MongoDB

Перед выполнением команд нужно создать директорию, в которой будут расположены резервные копии MongoDB:

  • Linuxmkdir /backup/
  • Windows Servermkdir C:\backup\

Одиночная установка без авторизации

mongodump --host localhost:27017 --archive=/backup/mongo-$(date "+%Y-%m-%d_%H:%M").dump

Одиночная установка с авторизацией

к сведению

Для примера используется пользователь MongoDB с данными:

  • Логин — adminuser
  • Пароль — password
mongodump --host localhost:27017 -u adminuser -p password --archive=/backup/mongo-$(date "+%Y-%m-%d_%H:%M").dump

Репликационный набор (replica set) без авторизации

mongodump --host rs0/mongo.example.01:27017,mongo.example.02:27017,mongo.example.03:27017 --archive=/backup/mongo-$(date "+%Y-%m-%d_%H:%M").dump

Репликационный набор (replica set) с авторизацией

к сведению

Для примера используется пользователь MongoDB с данными:

  • Логин — adminuser
  • Пароль — password
mongodump --host rs0/mongo.example.01:27017,mongo.example.02:27017,mongo.example.03:27017 -u adminuser -p password --archive=/backup/mongo-$(date "+%Y-%m-%d_%H:%M").dump

Примеры восстановления резервных копий в MongoDB

Одиночная установка без авторизации

mongorestore --host localhost:27017 --drop --archive=/backup/mongo-xxxx-xx-xx_xx:xx.dump

Одиночная установка с авторизацией

к сведению

Для примера используется пользователь MongoDB с данными:

  • Логин — adminuser
  • Пароль — password
mongorestore --host localhost:27017 -u adminuser -p password --drop --archive=/backup/mongo-xxxx-xx-xx_xx:xx.dump

Репликационный набор (replica set) без авторизации

mongorestore --host rs0/mongo.example.01:27017,mongo.example.02:27017,mongo.example.03:27017 --drop --archive=/backup/mongo-xxxx-xx-xx_xx:xx.dump

Репликационный набор (replica set) с авторизацией

к сведению

Для примера используется пользователь MongoDB с данными:

  • Логин — adminuser
  • Пароль — password
mongorestore --host rs0/mongo.example.01:27017,mongo.example.02:27017,mongo.example.03:27017 -u adminuser -p password --drop --archive=/backup/mongo-xxxx-xx-xx_xx:xx.dump

Отдельное восстановление базы данных Пассворка

Описание

Вариант описывается на примере базовой установки компонентов MongoDB. Возможно использование любого ранее описанного варианта, указав атрибут к команде восстановления.

Пример восстановления

mongorestore --host localhost:27017 --nsInclude=pwbox.* --drop --archive=/backup/mongo-xxxx-xx-xx_xx:xx.dump
к сведению

После выполнения будет восстановлена только база данных Пассворка из указанного файла резервной копии MongoDB

Настройка резервного копирования по расписанию

Linux

Для настройки частоты создания резервных копий баз данных, рекомендуется использовать планировщик событий Сrontab. Подробнее о работе Crontab и примерах его использования — Основные сведения о Cron

осторожно

Настройка Сrontab для создания резервных копий должна выполняться на сервере, где доступна утилита администрирования mongodump

Windows Server

Создать файл автоматизации с расширением .ps1 и указать следующее:

# Получение текущего времени
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm"

# Создание резервной копии MongoDB
mongodump --host localhost:27017 --archive="C:\backup\mongo-$timestamp.dump"
осторожно

Обратите внимание:

  • Если MongoDB и утилиты администрирования были установлены на нестандартный диск, нужно изменить путь для поиска в параметре -Path;
  • Перед запуском задачи в Планировщике событий, нужно создать директорию, в которой будут расположены резервные копии MongoDB.

Открыть PowerShell от имени администратора:

  • Нажать правой кнопкой мыши на значок Пуск в левом нижнем углу экрана;
  • Выбрать Windows PowerShell (администратор) в контекстном меню.

Создать в Планировщике задачу для создания резервных копий MongoDB:

# Действие на запуск скрипта backup.example.ps1 с помощью PowerShell
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\backup.example.ps1"

# Выполнять каждый день в 02:00 ночи
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00AM"

# Параметры создаваемой задачи
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -StartWhenAvailable -Hidden -Priority 5

# Создание задачи
Register-ScheduledTask -Action $action -TaskName "mongodb-example-backups" -Settings $settings -Trigger $trigger -RunLevel Highest -User "username" -Password "password" -Force
осторожно

Обратите внимание:

  • Нужно изменить названия и расположение запускаемого автоматизированного файла .ps1;
  • Для выполнения фоновой задачи рекомендуется использовать учётную запись администратора. Если используется другой пользователь, нужно убедиться, что у него достаточно прав для выполнения всех действий.