2015-06-19 4 views
0

У меня есть конфигурация конфигурации реплики mongodb одной первичной машины, одной вторичной машины и одной арбитральной машины. Первичная и вторичная машины имеют 2 коллекции (каждая в своей собственной базе данных)Вопросы по набору реплик Mongodb

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

  1. Удалить вторичное из набора реплик.
  2. Второе, для коллекции, которую я хочу удалить, сделайте mongodump данных, которые я хочу сохранить.
  3. Сделайте восстановление монго из этой свалки.
  4. Повторно добавьте вторичную копию к набору реплик. Я думаю, мне нужно будет установить приоритеты, чтобы первичный не стал вторичным?
  5. Второе будет синхронизировано/догонять с основным, я надеюсь, но что происходит с данными, которые я удалил во вторичном? Является ли первичное удаление его из себя? (это то, что я хочу)

  6. Нужно ли мне что-либо делать с Первичным?

ответ

2

Роллинг Обслуживание:

  • Чтобы увидеть, как много времени oplog у вас есть, чтобы принести вниз Secondary и кетчуп: db.printReplicationInfo()
  • При работе с первичными, Вторичный и Арбитр ... тогда извлечение вторичного может иметь риск. Первичный не будет отказоустойчиво в случае, если что-то произойдет в течение вашего периода обслуживания. Первично-вторично-вторичный был бы более безопасным.
  • После выключения вашего Вторичного, перезапустите его без опции --replSet И на другом порту иначе остальная часть replicaSet будет смущена.
  • Перезапустите свой Secondary с помощью --replSet, а старый порт снова добавит его в ReplicaSet. Не беспокойтесь, ваш Primary останется Primary. Голос/выборы «только» происходит, когда Первичный исчез ... и это не тот случай, когда добавление Вторичного.
  • Вторичный будет догонять от oplog.
  • Чтобы работать на Первичном. Сделайте rs.stepDown() в Первичном, позвольте второму взять верх и повторите процесс.

Очистка во время прокатки Обслуживание

Здесь я не очень уверен, что и может сделать только некоторые предположения на данный момент, потому что я не проверял это пока. Что вы можете сделать во время обслуживания Rolling:

  • обновление двоичных файлов (обновление apt-get/yum update/...)
  • построения индексов
  • компактный и ремонт

Теперь об удалении данных? Это вам нужно протестировать на локальной небольшой реплике.

  • Боюсь, что сброс/восстановление - плохая идея. Но я не уверен.
  • Выполнение инструкции удаления ... я думаю, что есть способ сделать это, и пусть этот оператор будет выполняться в Первичном, но пока еще не знаю.
  • Самое простое: почему бы не выполнить инструкцию remove на первичной версии и не распространить ее на вторичную? Потому что вы хотите уменьшить размер базы данных? Ну, после удаления вы можете выполнить техническое обслуживание Rolling для ремонта. Компакт не создаст лишнее пространство, а только данные заказа внутри предварительно выделенных файлов. И Ремонт, будьте осторожны, требуется двойное пространство для сборки. Для ремонта требуется 100 ГБ БД, по крайней мере, 100 ГБ.

https://dba.stackexchange.com/questions/28269/disk-space-recovery-on-mongodb-replicaset-secondaries

И посмотреть на https://university.mongodb.com => M202: MongoDB Расширенный развертывание и операции ... Эта проблема решается в этих бесплатных уроков.

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