Рубрики
Uncategorized

Помните об этих Mongodb gotchas

Несколько человек, за которыми нужно следить за миграцией или начинать с Mongodb Atlas. Tagged с Mongodb, DevOps, Tuperial.

О чем это?

У всех нас были те времена, когда мы выполняем задачу, и на первый взгляд кажется, что это должно быть прямолинейным. Внезапно у вас останется миллион вопросов, и многие поиски в Интернете, которые вы развлекали, привели вас в червоточину без каких -либо решений. В моем случае это произошло из -за миграции MongoDB, в которой я должен был вести.

До этого мы организовали MongoDB в нескольких случаях с коллекциями для всех наших поддерживаемых сред. Один из самых важных проектов за год означал, что мы будем ожидать большого притока пользователей, к которому мы не были готовы. Потребность в более высокой доступности, масштабировании и скорости была критической.

Введите MongoDB Атлас. Прежде чем продолжить дальше, позвольте мне начать с того, что у MongoDB есть довольно хорошая документация; Поэтому я пропущу большую часть «начала работы», которую можно найти в документах MongoDB. Хотя я не буду обсуждать каждое препятствие. Надеюсь, я смогу сэкономить другим драгоценным времени, когда мне было мало, чтобы сэкономить.

Версия TLDR:

Несколько человек, за которыми нужно следить за миграцией или начинающим с mongodb Атлас

Используете VPN? — Всегда проверяйте белый список!

Я подумал, что давайте начнем с моего момента Гомера Симпсона. VPN используется для доступа к любому из наших экземпляров, и я всегда использую один. Сначала мне потребовалось некоторое время, когда я работал через основные шаги соединений. Однако вскоре я понял, что это был мой классический момент «d’oh», и мне нужно было белоснуть свой IP и сделать умственное заметку, что, когда я вижу ошибку соединения. Обновите!

К счастью, Mongodb позволяет легко это сделать. Всего несколько кликов, и вы можете добавить свой текущий IP -адрес.

Проверьте и сопоставьте все свои версии. Это обязательно!

(Если вы уже используете контейнеры, такие как Docker, вы можете пропустить эту часть о матрице. Мы не!)

Помните эти игры для памяти карт сопоставления? В игре вам нужно было сопоставить каждую пару и завершить весь набор, чтобы выиграть. Я нашел то же самое, чтобы быть правдой в моем случае, связанный с MongoDB. Благодаря тонну испытаний, документации и да, даже связавшись с поддержкой (что, в основном, они только что подтвердили то, что я уже узнал и пытался с помощью документации). Это дошло до того, как я отслеживал версии. Ruby, Mongodb, Mongoid, Linux Distro, Mongo Shell …. Просто в основном проверьте все. Как я также был в процессе обновления нашей версии монго; Это означало, что изменения формата должны были применяться к конфигурации монгоидного YAML. Пример шаблона этого можно найти по этой ссылке. Mongoid.yml

Проблемы с соединением? — Попробуйте пройти через ручную связь.

В то время как у MongoDB есть довольно хорошая документация, есть еще место для улучшения. Предложения о том, как подключить ваше приложение, просто не работали для меня. Даже поддержка в значительной степени просто повторила то, что я уже пытался до сих пор, но они также никогда не спрашивали о том, какую версию я использую, чтобы помочь подключить точки.

Поиск разницы между тем, когда использовать «Mongodb+srv://» или используя «mongodb://» это довольно значительная информация. Только при сравнении моего рабочего ручного соединения с предложениями сайтов для настройки конфигурации я заметил это ключевое отличие. Наборы реплик, необходимая информация и параметры имеют дело с по -разному в зависимости от того, какой вы используете. Я чувствую, что у этого есть некоторые ключевые различия, которые, возможно, могли бы быть выделены сильнее. По мере того, как потребовалось усилия по использованию тонкой зубчатой расчески, чтобы помочь выяснить расхождения.

Просто возьмите, например, строку подключения к Barebones.

Старая версия:

mongodb://mongodb0.example.com: 27017, [mongodb1.example.com:27017] (http://mongodb1.example.com:27017/), [mongodb2.example.com:27017/admin?replicaset=myreplpl ] (http://mongodb2.example.com:27017/admin?replicaset=myrepl)

Более новая версия:

mongodb+srv://mongodb0.example.com/[admin] (http://mongodb2.example.com:27017/admin?replicaset=myrepl)

С новой версией вам действительно нужен только адрес, но старший вы явно определите каждый узел реплики.

Лучшее, что нужно сделать, это просто разбить мою команду ручного соединения полностью и поместить ее в конфигурацию. Если бы я никогда не смотрел на их предложение, я бы, вероятно, спас себя немного головной боли.

MongoDB имеет инструкции по соединению, что позволяет вам выбрать желаемый метод.

Помните свои старые услуги

Не забывайте во время миграции, когда вы иногда запускаете новый, пока все еще работаете со старым. Когда вы сталкиваетесь с каким -то прикольным поведением. Проверьте, если у вас все еще есть старая версия. Например, если вы используете Redis с MongoDB. Как вы решили реализовать, может означать обмен обслуживанием между старыми и новыми случаями. Это будет иметь ваше приложение и/или данные, выполняющие хаотичные время от времени.

Используйте Drop для обновления

Если вы делаете несколько импортов/восстановления в течение миграции. Возможно, вы не захотите удалять свою коллекцию каждый раз. Я предпочитаю полное удаление и восстановление при завершении моих миграций. Однако, если я просто хочу проверить/проверить самые последние данные; Обновление — это все, что желательно. Проблема в том, что MongoDB не имеет обновления в традиционном смысле. Во время восстановления MongoDB не допускает перезапись записей. Попробуйте запустить восстановление, и вы столкнетесь с множеством дублирующих ошибок ключей.

Пример ошибка:

— E11000 Дубликат Ключевой Сбор ошибок: MyDB.Mycollection Index: я бы Dup Key: {: «mykey»}

Чтобы избежать раздражающих ошибок, вам просто нужно добавить –Drop флаг. Это удаляет коллекцию из вашей цели прямо перед тем, как восстановить ваш исходный дамп.

Бывший.

Mongorestore -host / <: port>, <: port>, "–drop

Бонус

Это совсем не готча вообще. Просто кажется странным показать команду восстановления без дампа, тем более что вам нужно сбросить, прежде чем вы сможете восстановить. По умолчанию MongoDB предоставляет каталог дампы содержимым для вас, если путь не предоставлен.

mongodump -db

Удачи!

Хорошо, чтобы обернуть это! Надеемся, что это поможет кому -то там, даже если это просто для того, чтобы подтвердить, что вы не сумасшедшие. Пожалуйста, дайте мне знать, есть ли у вас какие -либо вопросы или что -то неясно в посте.

Оригинал: «https://dev.to/avantsekai/be-aware-of-these-mongodb-gotchas-e1e»