Как перенести MongoDB 2.6 на 3.0 с помощью WiredTiger
MongoDB 3.0 представляет новый механизм хранения под названием wiredTiger
что приводит к значительному сокращению использования памяти и дискового пространства.
Поскольку моя БД в настоящее время содержит ~20 миллионов объектов и использует ~70 ГБ ОЗУ, это обновление будет сделано как раз в нужное время, чтобы отложить обновление оборудования.
Как вы переносите существующую установку MongoDB 2.6 на 3.0 и в то же время получаете преимущества wiredTiger?
Документация относится к опциям, которые приводят к ошибкам запуска, которые мешают запуску MongoDB. Кроме того, расположение файлов не совпадает с расположением в Ubuntu (Server 14.04 LTS).
2 ответа
В установках по умолчанию файл конфигурации находится в /etc/mongod.conf
, В документации MongoDB не упоминается, что при переходе на WiredTiger нам также необходимо обновить файл конфигурации до нового формата YAML, представленного в 2.6.
Насколько я могу сказать engine
опция доступна только в новом формате конфигурации.
Миграция со старого механизма хранения состоит в создании дампа базы данных, завершении работы mongodb, изменении настроек и последующем импорте дампа в новый механизм хранения.
Создайте резервную копию. Шутки в сторону. Нам нужен дамп базы данных, который мы затем импортируем в новый движок базы данных:
mongodump -d db_name /backup/path/
Остановить службу mongodb
sudo service mongod stop
Переместить данные из текущего местоположения в другое место (MongoDB не запустится, если каталог данных содержит файлы, созданные старым механизмом хранения).
sudo mv /var/lib/mongodb /var/lib/mongodb_26/
Обновите MongoDB до версии 3.0 (с http://docs.mongodb.org/v3.0/tutorial/install-mongodb-on-ubuntu/):
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list sudo apt-get update sudo apt-get install mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-tools
Преобразуйте файл конфигурации из старого (до 2.6) в текущий формат YAML. Минимум это:
storage: dbPath: "/var/lib/mongodb" engine: wiredTiger systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true net: bindIp: 127.0.0.1 port: 27017 # Enable the HTTP interface (Defaults to port 28017). http: enabled: false
Убедитесь, что в старом формате не осталось строк, иначе MongoDB не запустится.
Полная документация для файла конфигурации находится по адресу: http://docs.mongodb.org/v3.0/reference/configuration-options/
При желании сделайте резервную копию журнала:
sudo mv /var/log/mongodb/mongod.log /var/log/mongodb/mongod_26.log
Перезапустите mongodb
sudo service mongod start
Загрузите резервную копию для преобразования данных в новый механизм хранения
mongorestore /backup/location
После проверки, что все ваши данные в порядке, вы можете удалить каталог со старым форматом данных
sudo rm -r /var/lib/mongodb_26/
Обратите внимание, что для наборов реплик и сегментированных кластеров есть несколько дополнительных шагов: http://docs.mongodb.org/v3.0/release-notes/3.0-upgrade/?_ga=1.86531032.1131483509.1428671022 - движка-wiredtiger
Используя старый формат файла конфигурации, я добился успеха с:
storageEngine = wiredTiger