Сбой первичной реплики MongoDB, прежде чем вторичные реплики смогут синхронизироваться - PullRequest
1 голос
/ 07 мая 2019

В моей базе данных mongo три реплики: 1 - основной узел, а 2,3 - вторичный узел.Предположим, что следующая последовательность событий происходит

1) Реплика 1 записывает документ A, и он реплицируется в 2,3

2) Реплика 1 записывает документ B, но не удается скопировать его в какой-либодругие реплики по какой-то причине.

3) Реплика 1 столкнулась с некоторой ошибкой

Что должно произойти в следующих шагах.Я знал, что выборы пройдут между 2, 3, и один из них станет основным, а другой - второстепенным, и операция продолжит работать, но как насчет записи документа B в 1, следует ли ее тиражировать, когда 1 восстанавливается после сбоя?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

https://docs.mongodb.com/manual/core/replica-set-rollbacks/:

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

кажется довольно ясным

0 голосов
/ 21 мая 2019

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

...