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

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

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

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

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

10
задан Crashalot 6 June 2013 в 20:56
поделиться

4 ответа

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

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

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

3
ответ дан 3 December 2019 в 23:48
поделиться

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

или

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

1
ответ дан 3 December 2019 в 23:48
поделиться

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

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

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

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

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

  1. Смонтируйте новую EBS на сервере.
  2. Остановите подключение вашего приложения к Mongo.
  3. Завершите работу mongod и дождитесь, пока все запишется (проверьте журналы).
  4. Скопируйте все файлы данных (и, возможно, журналы) на новый том EBS.
  5. Пока происходит копирование, обновите сценарий запуска mongod (или файл конфигурации), чтобы он указывал на новый том.
  6. Запустите mongod и проверьте соединение.
  7. Перезапустите приложение.

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

Если да, сделайте следующее ( подчинение и переключение):

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

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

Можете ли вы не допустить простоя?

Если да, сделайте следующее ( master-master ):

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

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

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

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

9
ответ дан 3 December 2019 в 23:48
поделиться

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

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

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

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

0
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: