Индекс MongoDB на ВТОРОМ узле в кластере репликаций - как удалить? - PullRequest
0 голосов
/ 08 февраля 2019

Сценарий:

Иметь кластер репликации MongoDB с 3 узлами.Непосредственно перед выдачей команды построения индекса состояние было следующим: УЗЕЛ 1: ВТОРИЧНЫЙ УЗЕЛ 2: ВТОРИЧНЫЙ УЗЕЛ 3: ОСНОВНОЙ

В момент 1, на НОДЕ 3 (ПЕРВИЧНАЯ) была введена команда для создания индекса:

db.scores.createIndex({member_id: 1, metric_name: 1, score_id: 1, "writes.k": 1}, {background: true});

Построение индекса работало в фоновом режиме около 2 часов 17 минут, после чего я случайно нажал CTRL + C в сеансе SSH и завершил процесс.После этого он продолжал работать еще несколько минут в фоновом режиме (я мог наблюдать в журналах Kibana), но затем его остановили.Поскольку mongod создал блокировки на узле 3, пришлось перезапустить докер-контейнер на узле 3 (первичном), в котором работает mongod.Из-за перезапуска два других узла в кластере выбрали NODE 1 в качестве нового ПЕРВИЧНОГО.Когда NODE 3 вернулся в нормальное состояние, я не смог подключиться к оболочке mongo, но журналы Kibana показывали, что он поднял индексную сборку на переднем плане и продолжал убегать с ней.Мы даем это закончить.

Текущее состояние:

  • Только NODE 3 (все еще ВТОРОЙ) имеет индекс с именем 'member_id_1_metric_name_1_score_id_1_writes.k_1'.
  • Попытка удалить индекс на NODE 3 приводит к ошибке:

    SECONDARY> db.scores.dropIndex('member_id_1_metric_name_1_score_id_1_writes.k_1') { "ok" : 0, "errmsg" : "not master", "code" : 10107, "codeName" : "NotMaster" }

  • Попытка удаления индекса на УЗЕ 1 (ОСНОВНОЕ) выдает ошибку:

    db.scores.dropIndex('member_id_1_metric_name_1_score_id_1_writes.k_1') { "nIndexesWas" : 4, "ok" : 0, "errmsg" : "index not found with name [member_id_1_metric_name_1_score_id_1_writes.k_1]", "code" : 27, "codeName" : "IndexNotFound" }

Что делать?Какие есть варианты удалить этот индекс и повторить попытку с нового PRIMARY (NODE 1)?Каковы последствия того, что этот индекс расположен так и присутствует только на одном ВТОРИЧНОМ узле в репликасе?Насколько это плохо?

Спасибо!

...