Автоматическая резервная копия Mongodb в Windows

Технологии

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

Оцените автора
Лента Пути
Добавить комментарий