![Как перенести MongoDB 2.6 на 3.0 с помощью WiredTiger](https://rvso.com/image/1127639/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B5%D1%81%D1%82%D0%B8%20MongoDB%202.6%20%D0%BD%D0%B0%203.0%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20WiredTiger.png)
MongoDB 3.0 представляет новый механизм хранения данных, wiredTiger
который позволяет значительно сократить использование памяти и дискового пространства.
Поскольку в моей базе данных в настоящее время содержится около 20 миллионов объектов и используется около 70 ГБ оперативной памяти, это обновление появилось как раз вовремя, чтобы отложить обновление оборудования.
Как перенести существующую установку MongoDB 2.6 на версию 3.0 и при этом воспользоваться преимуществами wiredTiger?
Документация ссылается на параметры, которые приводят к ошибкам запуска, которые не позволяют MongoDB запуститься. Кроме того, расположения файлов не соответствуют тем, что в Ubuntu (Server 14.04 LTS).
решение1
В установках по умолчанию файл конфигурации находится в /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#change-replica-set-storage-engine-to-wiredtiger
решение2
Используястарый формат файла конфигурации, у меня был успех с:
storageEngine=проводнойТигр