Назад | Перейти на главную страницу

MongoDB: исправление ошибки ReplicaSet при перенастройке - «Задача Server :: doWork: исключение диспетчера rs: неавторизованная база данных: тип локальной блокировки: 2 клиента»

Вопрос: Как мне исправить мои серверы и вернуть их к обычному ReplicaSet без сообщений об ошибках?

Я бы предложил серьезную награду, но все мои баллы на SO :(

Подробности проблемы

Я использую трехузловой MongoDB ReplicaSet (1 мастер, 1 подчиненный, 1 арбитр) на отдельных серверах. Я играл с автоматическим переключением при отказе, чтобы убедиться, что мое ведомое устройство будет повышено до уровня мастера. После того, как я отключил мастера и подчиненный стал мастером, я последовал инструкциям по переизбранию моего старого мастера обратно на основной (Принуждение участника быть основным). Из моего нового PRIMARY я запустил:

> use admin
> db.auth("admin", "mypassword")
> config = rs.conf()
{
    "_id" : "foo",
    "version" : 1,
    "members" : [
        {
            "_id" : 0,
            "host" : "A",
        },
        {
            "_id" : 1,
            "host" : "B",
        },
        {
            "_id" : 2,
            "host" : "C",
        }
    ]
}
> config.version++
> // the default priority is 1
> config.members[1].priority = 2
> rs.reconfig(config)

Это привело к ошибке, поэтому я попробовал метод №2:

db.adminCommand({replSetStepDown:1000000, force:1})

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

Mon Aug 29 19:16:22 [rs Manager] replset msgReceivedNewConfig version: version: 2
Mon Aug 29 19:16:22 [rs Manager] replSet info saving a newer config version to local.system.replset
Mon Aug 29 19:16:22 [rs Manager] Server::doWork task:rs Manager exception:unauthorized db:local lock type:2 client:(NONE)
Mon Aug 29 19:16:22 [initandlisten] connection accepted from 192.168.139.50:28130 #476
Mon Aug 29 19:16:22 [initandlisten] connection accepted from 192.168.132.14:32014 #477
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.139.50:28133 #478
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.139.50:28136 #479
Mon Aug 29 19:16:23 [initandlisten] connection accepted from 192.168.132.14:32017 #480
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.139.50:28139 #481
Mon Aug 29 19:16:24 [rs Manager] replset msgReceivedNewConfig version: version: 2
Mon Aug 29 19:16:24 [rs Manager] replSet info saving a newer config version to local.system.replset
Mon Aug 29 19:16:24 [rs Manager] Server::doWork task:rs Manager exception:unauthorized db:local lock type:2 client:(NONE)
Mon Aug 29 19:16:24 [rs Manager] replSet info not electing self, we are not freshest
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.139.50:28142 #482
Mon Aug 29 19:16:24 [initandlisten] connection accepted from 192.168.132.14:32020 #483
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.139.50:28145 #484
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.139.50:28148 #485
Mon Aug 29 19:16:25 [initandlisten] connection accepted from 192.168.132.14:32023 #486
Mon Aug 29 19:16:26 [initandlisten] connection accepted from 192.168.139.50:28151 #487

После некоторого поиска в Google я обнаружил, что это ошибка ReplicaSets:

Немного информации о моей настройке:

Когда репортер обновил вопрос, это было сообщено как ошибка, и с тех пор она была исправлена ​​в более новой версии программного обеспечения.

Сообщение об ошибке / исправлено здесь: https://jira.mongodb.org/browse/SERVER-2919

Этот вопрос должен быть помечен как отвеченный / закрытый.