Перейти к основному содержимому
Версия: 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:

  • Linux — mkdir /backup/
  • Windows Server — mkdir 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;.
  • Для выполнения фоновой задачи рекомендуется использовать учётную запись администратора. Если используется другой пользователь, нужно убедиться, что у него достаточно прав для выполнения всех действий.