2016-06-28 2 views
4

У меня есть набор реплик mongodb из 3 членов (версия 2.4), в котором пользователь-администратор для db admin не имеет роли userAdminAnyDatabase.Заблокированный внешний набор реплики mongodb

Эта роль требуется для управления пользователями во всех базах данных.

Роли я в настоящее время являются: [ «readWriteAnyDatabase», «dbAdminAnyDatabase», «clusterAdmin»]

Я попытался обновить роли для себя или создания нового пользователя, однако у меня нет разрешения на доступ к db.system .users в admin db.

Я пробовал установку noauth = true, но это не помогло. При удалении keyFile, db не смог синхронизировать с другими членами (очевидно) и застрял в состоянии RECOVERY.

Я нашел similar question, который относится к автономному db (без набора реплик), поэтому в этом случае это действительно не помогает.

Что было бы лучшим способом добавить эту роль, имея минимальный простои системы?

ответ

1

Я бы использовал mongodump и mongorestore для резервного копирования данных, а затем перестроил узел с правами доступа и восстановил данные.

Однако этот подход должен work:

Если вы заперли себя вне, то вам нужно сделать следующее:

  1. Остановите свой экземпляр MongoDB
  2. Удалить --auth и/или --keyfile из конфигурации MongoDB для отключения аутентификации
  3. Запустить экземпляр без аутентификации
  4. Редактирование пользователей по мере необходимости
  5. Перезапустите экземпляр с аутентификацией
+0

Спасибо, как я писал в вопросе, отключение аутентификации от моего главного узла в наборе реплик не позволяет ему подключаться к кластеру. Кроме того, mongodump & restore приведет к очень длительному простоям. – odedfos

1

Как вы используете Монго 2.4, это означает, что у вас есть MMAP как двигатель хранения.

мое предложение будет:

  1. создать подобную набора реплик на каждом хосте, но другой порт, и установить каталог базы данных на одном носителе, как текущий.
  2. настроить все Auth вещи так же, как работает те
  3. остановка старой реплики набор членов
  4. MOVE файлы базы данных в новый каталог исключая локальный порт
  5. изменения на новой реплики установить
  6. запустить его

Как перемещение файлов в другой каталог - это просто указатель чанг e это займет несколько секунд.

Пожалуйста, проверьте перед реализацией.

Любые комментарии приветствуются!

+0

Как перемещение файлов базы данных (исключая локальные) без использования op-log влияет на новый набор реплик? Будет ли он знать, как синхронизировать? Кроме того, что, если данные не являются точными между всеми членами из-за задержки репликации? Кстати, мой движок хранения - tokumx – odedfos

+0

не имел опыта работы с tokmux ... вам нужно восстановить тот, который был мастером сначала – profesor79

+0

просто мышление ... oplog также нужно перенести - но все же думать о движке и способе хранения мы могли бы пережить это .... – profesor79