Может ли вторичное восстановление mongodb восстановиться, если лаг больше, чем оплог?
Давайте предположим, что вторичный сервер отстает из-за сбоя сервера, который не был перезапущен в течение определенного времени. Теперь у нас отставание в 100 часов, но оплог 10 часов, как это
db.printSlaveReplicationInfo()
source: db3
syncedTo: TIMEINTHEPAST
360000 secs (100.00 hrs) behind the primary
source: db1
syncedTo: NOW
1 secs (0 hrs) behind the primary
Но тогда оплог намного меньше
db.printReplicationInfo()
configured oplog size: GIVENSIZE
log length start to end: 36000secs (10hrs)
Правильно ли я полагаю, что этот вторичный объект не имеет возможности наверстать упущенное (ВОССТАНОВЛЕНИЕ)?
Как решить эту ситуацию?
1 ответ
Решение
Ответ прост. Вторичный не может выжить. В этой ситуации у вас мало возможностей для "повторной инициализации" этого узла.
- Вы останавливаете этот узел, очищаете его каталог данных, перезапускаете его и даете ему выполнить первоначальную синхронизацию.
ИЛИ ЖЕ
- Вы останавливаете этот узел, приносите снимок (или файлы данных) других файлов данных здоровых узлов, перезапускаете его и позволяете ему "поймать" основной.
После того, как вы снова работаете с набором реплик, измените размер своего оплога на гораздо больший. Как в 15 раз больше.