Что такое Oplog
oplog (журнал операций) — это специальная ограниченная коллекция, хранящаяся в базе данных local на каждом члене набора репликации. Она записывает все операции, которые изменяют данные: вставки, обновления и удаления.
Роль в репликации
oplog — это основной механизм, который держит членов набора репликации в синхронизации:
- Первичный узел записывает каждую операцию, изменяющую данные, в свой oplog
- Вторичные узлы постоянно опрашивают oplog первичного узла и применяют эти операции к своим данным
- Этот процесс называется oplog tailing и происходит почти в реальном времени
Ключевые характеристики
- oplog — это ограниченная коллекция фиксированного размера: при заполнении самые старые записи автоматически перезаписываются
- Каждая запись oplog идемпотентна — её можно применять несколько раз без изменения конечного результата, что обеспечивает согласованность при восстановлении
- Окно oplog — это временной диапазон, за который oplog хранит историю; если вторичный узел отстаёт слишком сильно, он может перейти в состояние
RECOVERING и потребовать полной начальной синхронизации
Практическое значение
Primary → writes to oplog → Secondary reads & applies oplog entries
- Задержка репликации возникает, когда вторичные узлы не успевают применять записи oplog достаточно быстро
- Мониторинг размера oplog и задержки репликации критически важен для поддержания высокой доступности
- Инструменты вроде Change Streams построены поверх oplog и позволяют отслеживать изменения данных в реальном времени