2012-05-15 3 views
0

В Mongo возможно иметь базу данных, находящуюся только на одном сервере (но без осколков)?Создать базу данных только в одном осколке

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

  • Таким образом, если мы начнем отправлять слишком много сообщений журнала, только машина с базой данных протоколирования будет замедлен.

  • В идеале он должен быть прозрачным для приложения, а какая-то-машина-должна-база данных должна управляться процессом MongoS.

Nb: Мы не хотим, чтобы шард всю нашу базу данных еще, так как мы хорошо с выступлениями на данный момент, мы хотели только, чтобы изолировать дб с коллекциями лесозаготовок.

+0

Вопрос о бессмыслице, поскольку вы можете, конечно, запустить MongoDB без осколков и без наборов реплик в качестве автономного сервера. В чем ваш смысл? –

+0

Я хочу отделить базу данных приложения от базы данных ведения журнала. Также я хочу, чтобы это управлялось MongoS. – Madarco

+0

Я согласен с @ich. если вы хотите отделить базу данных приложений от базы данных протоколирования, просто используйте два экземпляра одного экземпляра mongod и две базы данных. –

ответ

1

Да, вы можете использовать 2 mongoD с двумя разными серверами, один с вашей фактической базой данных и один с базой данных протоколирования.

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

Затем с помощью команды movePrimary вы можете выбрать, где эти незамкнутые коллекции будут фактически сохранены.

(см: http://www.mongodb.org/display/DOCS/movePrimary+Command)

В вашем случае, вы будете делать:

db.adminCommand({movePrimary:applicationdb, to:application_shard}) 
db.adminCommand({movePrimary:loggingdb, to:logging_shard}) 

Однако обратите внимание, что, когда вы решите шард ваш applicationdb, Монго автоматически начнет распространяться ваши данные также к loggingdb_shard

+0

Это указано в документах, но здесь, вероятно, следует отметить, что для перемещения первичного элемента требуется перезапуск или команда flushRouterConfig всех экземпляров mongos. –

1

Да, вы можете запустить mongos на своем сервере приложений и запустить процесс mongod на другом компьютере для хранения ваших журналов. Но если вы хотите использовать монго, вам нужно использовать осколки - но вы можете использовать один осколок. Вам нужно будет запустить процесс mongod как -shardsvr и добавить этот осколок к процессу mongos. Вам также потребуется запустить как минимум один сервер конфигурации. С этой установкой возникают проблемы избыточности данных - поэтому вы можете запускать больше, чем на процесс mongod, - используйте набор реплик в одном осколке и запускайте эти процессы mongod на разных машинах. И если вы собираетесь это сделать, вы также можете запустить 3 сервера конфигурации (это выбор 1 или 3 с настройкой осколков) - 2 на 1 узел набора реплик и 1 на другом. Также для ведения журнала люди часто используют ограниченные коллекции.

+0

Спасибо, проблемы с резервированием данных одинаковы для одного сервера с ведением журнала? Или Есть некоторые конкретные проблемы для этого случая? (так как это неотъемлемая часть, мы можем справиться с некоторыми потерями данных). – Madarco

+0

Ведение журнала даст вам согласованность данных в случае потери мощности на машине. Но если машина/диск полностью не работает, вы потеряете весь набор данных, если вы не используете репликацию. Это зависит от того, насколько важны ваши журналы, хотите ли вы его использовать или нет. Нет ничего конкретного в этом случае нет. – Gregor

Смежные вопросы