Вторичный узел Mongodb не становится первичным при сбое первичного - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать набор реплик в экземплярах Amazon Ec2. У меня есть один первичный и один вторичный узел. Если я уничтожу порт первичного узла в течение 10–12, мой вторичный узел должен стать первичным узлом, но этого не происходит. Через 10 минут также он находится только во вторичном состоянии. Если я запускаю mongodb на первичном сервере, он запускается как вторичный, и сразу вторичный становится первичным. Когда я проверяю в настройках конфигурации

 "electionTimeoutMillis" : 10000

rs.config (): Когда основной номер включен

rs0:SECONDARY> rs.config();
{
        "_id" : "rs0",
        "version" : 2,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "xx.xxx.xx.xx:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "xx.xxx.xxx.xx:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "catchUpTimeoutMillis" : -1,
                "catchUpTakeoverDelayMillis" : 30000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("5e26f399cf82d4f8bf826660")
        }
}

Ответы [ 2 ]

1 голос
/ 22 января 2020

В наборе реплики из двух элементов, если какой-либо узел (основной или дополнительный) выходит из строя, оставшийся узел может быть только вторичным. Если первичный выходит из строя, вторичный не может стать первичным. Если вторичный узел выйдет из строя, первичный будет понижен как первичный и станет вторичным.

Когда в наборе репликации есть только один узел, репликация данных не может быть (наборы реплики относятся к репликации данных, не так ли?).

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

0 голосов
/ 21 января 2020

Глядя на вашу конфигурацию, кажется, что вы используете четные узлы, что вызывает проблему при выборе основного узла.

Этот блог может вам помочь.

Для получения дополнительной информации см. Репликация в MongoDB

...