Назад | Перейти на главную страницу

Команда Mongo Restore уменьшает размер базы данных

У меня есть два кластера базы данных mongo, в каждом по три машины. Скажем, Cluster1 и Cluster2. Чтобы снизить стоимость, мне нужно отключить Cluster2. Итак, я взял mongodump одной базы данных с основного компьютера Cluster2, который составляет 8,5 ГБ. Я скопировал эту папку дампа на основной компьютер Cluster1 и запустил там команду mongorestore, но когда я запустил show dbs команда на Cluster1 показывает размер как 4,7 ГБ. Итак, мой вопрос: совершил ли я какую-то ошибку, или mongorestore не восстанавливает индексы, или по какой-либо другой причине?

Возможно, размер вашего хранилища (который show dbs указывает) изменяется при восстановлении, особенно если в исходном развертывании было много места, доступного для повторного использования (например, из-за удаления документа). А mongodump выполняет резервное копирование данных и определений индексов, а mongorestore процесс восстановит файлы данных и индексы для восстановленных коллекций.

Для лучшего сравнения исходного и восстановленного развертываний вам следует просмотреть db.stats() вывод.

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

Например, для вывода статистики по всем базам данных через mongo оболочка:

db.adminCommand('listDatabases').databases.forEach(function(d) {
    printjson(db.getSiblingDB(d.name).stats());
})