
MongoDB — документоориентированная система управления базами данных, не требующая описания схемы таблиц. Это NoSQL-система, которая часто используется в Web приложениях.
При эксплуатации любой базы данных нужно решать вопросы сохранения информации при сбое в работе программ, оборудования или вирусной атаки. В этой статье рассмотрим создание автоматической резервной копии данных MongoDB в среде Windows.
В составе ПО MongoDB есть утилиты — MongoDB Command Line Database Tools и в частности приложения для командной строки mongodump.exe для создания резервной копии и mongorestore.exe для восстановления данных из резервной копии. Скачать все утилиты можно по официальной ссылке — https://www.mongodb.com/try/download/database-tools. После скачивания нужно распаковать архив и скопировать файлы mongodump.exe и mongorestore.exe в папку C:\mongodb\bin, где собственно и находятся исполняемые файлы MongoDB.
Если запустить файл mongodump.exe из командной строки без указания параметров, то по умолчанию будет создана папка с резервной копией — C:\mongodb\bin\dump, что не всегда удобно, поэтому будем использовать следующие параметры программ mongodump.exe и mongorestore.exe:
—out Путь к папке сохранения. Например C:\backups\myData
—db Имя базы данных для резервной копии отдельной базы данных, например myBase
—gzip Сжатая резервная копия
—archive Копировать резервную копию в отдельный архив
—dir Путь к папке с резервной копией
—collection, -c Резервное копирование отдельной коллекции
—drop Используется для удаления коллекции перед импортом(если она существует),во избежания ошибки duplicate key errors Этот параметр следует применять с осторожностью.
Рассмотрим примеры использования mongodump.exe и mongorestore.exe с параметрами. При этом для упрощения будем использовать локальную БД по умолчанию, то есть localhost:27017
Создание резервной копии отдельной БД test коллекции records:
mongodump --db=test --collection=records --out C:/backups/myData
Создать и сохранить резервной копии отдельной БД в отдельный файл:
mongodump --archive=C:/backups/myData/test.20230126.archive --db=test
Создать и сохранить резервную копию в отдельный файл c сжатием:
mongodump.exe --gzip --archive=C:/backups/myData/data_20230126.gz
Последний вариант является решением моей задачи — мне нужно было регулярно, автоматически несколько раз в день создавать резервную копию всей БД в виде отдельного файла. Осталось автоматизировать задачу.
Для начала создаем пакетный файл для запуска backupMongoDB.bat. Можно воспользоваться любым текстовым редактором. Пишем в файле следующий код:
@echo off
set dd=%DATE:~0,2%
set mm=%DATE:~3,2%
set yyyy=%DATE:~6,4%
set hh=%TIME:~0,2%
set mi=%TIME:~3,2%
set ss=%TIME:~6,2%
set curdate=%dd%-%mm%-%yyyy%
set curtime=%hh%-%mi%-%ss%
"C:\mongodb\bin\mongodump.exe" --gzip --archive=C:/backups/myData/%curdate%_%curtime%_backupMongoDB.gz
При запуске файла создаются переменные со значением даты и времени — curdate и curtime, которые добавляются в имя файла архива резервной копии, которое становится уникальным.
Далее запускается приложение mongodump.exe с параметрами, которые дают установку на создание резервной копии в виде отдельного сжатого файла.
Чтобы файл backupMongoDB.bat запускался по расписанию, создадим для него задачу в планировщике задач в Windows. Если вы используете Windows 8 10 11, просто наберите в поиске «планировщик заданий» и запустите программу:

В меню справа выбираем «создать простую» задачу и далее вводим дату, сколько раз запускать, добавляем путь к запускаемому файлу, например D:/backupMongoDB.bat
Все готово, чтобы восстановить данные из резервной копии запускаем приложение из командной строки с параметрами:
mongorestore --gzip --drop --archive=C:/backups/myData/26-01-2023_13-00-01_backupMongoDB.gz






