Как масштабировать MongoDB?

Я знаю, что MongoDB может масштабироваться вертикально. Как насчет того, если у меня закончится диск?

В настоящее время я использую EC2 с EBS. Как вы знаете, мне нужно назначить EBS для фиксированного размера.

Что, если рост MongoDB будет больше, чем размер EBS? Нужно ли создавать большие EBS и копировать и вставлять файлы?

Или мы начнем больше экземпляра MongoDB и каждый подключимся к другому диску EBS? В таком случае я могу подключиться к другому экземпляру для разных баз данных.

Ответ 1

Если у вас заканчивается диск, вам, очевидно, нужно получить больший диск.

Существует несколько способов переноса данных, это зависит от типа требуемого времени. Первые шаги, конечно, связаны с комплектом машины и созданием нового тома.

Эти советы идут от самых простых до самых сложных.

Вы можете взять базу данных полностью автономно в течение нескольких минут?

Если да, сделайте это (перенос путем копирования):

  • Установите новую EBS на сервер.
  • Остановите свое приложение от подключения к Mongo.
  • Закройте mongod и дождитесь, пока все будет записано (проверьте журналы)
  • Скопируйте все файлы данных (и, вероятно, журналы) на новый том EBS.
  • Пока копия происходит, обновите свой mongod, запустив script (или файл конфигурации), чтобы указать на новый том.
  • Запустите mongod и проверьте соединение.
  • Перезагрузите приложение.

Вы можете взять базу данных в автономном режиме всего за несколько минут?

Если да, сделайте это (slaving и переключитесь):

  • Запустите новый экземпляр и установите новую EBS на этом сервере.
  • Установить/запустить mongod как -slave, указывая на текущую базу данных. (вам может потребоваться перезапустить ток как -master)
  • Ведомое устройство выполнит новую синхронизацию. Как только ведомое устройство будет обновлено, вы выполните "переключатель" (следующие шаги).
  • Отключите запись из системы.
  • Завершите процесс первоначального mongod.
  • Повторно запустите "новый" монгод как мастер вместо подчиненного.
  • Повторно активируйте записи системы, указывающие на новый мастер.

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

Не можете ли вы позволить себе время простоя?

Если да, сделайте это (мастер-мастер):

  • Запустите новый экземпляр и установите новую EBS на этом сервере.
  • Установить/запустить mongod в качестве ведущего устройства и подчиненного устройства в отношении текущей базы данных. (может потребоваться перезапустить ток как мастер, минимальное время простоя?)
  • Новый компьютер должен выполнить новую синхронизацию.
  • Как только новый компьютер обновлен, переключите систему на новый сервер.

Я знаю, что похоже, что эта последняя версия на самом деле лучшая, но она может быть немного рискованной (с момента написания). Причина в том, что у меня было очень много проблем с репликацией Master-Master, особенно если вы не начинаете с обоих активных.

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

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

Ответ 2

Разве E EBS не означает, что эластичность означает что-то вроде изменения размера на лету?

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

http://api.mongodb.org/wiki/current/Sharding%20Introduction.html http://api.mongodb.org/wiki/current/Sharding%20Limits.html

Ответ 3

Вы можете подчинить больший диск с меньшего размера, пока он не поймает

или

fsync + заблокировать и сделать снимок файловой системы и скопировать его на большой диск.

Ответ 4

Хорошо, теперь я использую Mongo DB. Я очень поражен производительностью, которую он создал, особенно при простой сортировке.

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

Единственный недостаток, который у меня есть, это то, что у меня не было никаких хороших инструментов для раскрытия данных, хранящихся внутри. Например, я хочу поместить мой журнал с MYSQL в Mongo. Однако мне довольно сложно просмотреть журнал. Раньше я мог использовать запрос MYSQL, чтобы получить то, что я хочу легко.

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