Перейти к основному содержимому
Версия: 7.0

Feature Compatibility Version (FCV)

Описание

Feature Compatibility Version (FCV) — это настройка, определяющая, какие возможности MongoDB разрешено использовать. Она хранится в системной коллекции admin.system.version и по умолчанию совпадает с версией, на которой база данных была изначально развернута.

FCV позволяет кластеру временно работать в режиме совместимости со старой версией, даже после обновления бинарных файлов MongoDB. Это обеспечивает возможность постепенного обновления экземпляров в репликационном наборе MongoDB без необходимости полного простоя.

осторожно

Важно: FCV всегда работает только на одну версию вверх — например, версия MongoDB 7.0 может иметь FCV = "6.0" или "7.0", но не "5.0". Это значит, что обновление следует выполнять поэтапно: 6.0 → 7.0, затем при необходимости 7.0 → 8.0 и так далее.

Для установок с одним экземпляром базы данных FCV не играет особой роли — обновление таких экземпляров происходит напрямую, без межузловой совместимости.

Проверка и настройка FCV

осторожно

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

Для проверки FCV перед выполнением обновления:

  1. Подключитесь к кластеру пользователем с правами доступа к базе admin:
mongosh "mongodb://your_admin_user:your_password@node1:27017,node2:27017,node3:27017/?replicaSet=your_replicaset_name"
  1. Получите текущее значение FCV:
db.adminCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
  1. Eсли значение меньше текущей версии MongoDB, обновите его до используемой версии:
db.adminCommand({ setFeatureCompatibilityVersion: "7.0" })

Алгоритм пошагового обновления для репликационных наборов

  1. Остановить один экземпляр базы данных с ролью secondary, обновить его версию до следующей мажорной версии и запустить заново.
  2. Дождаться синхронизации обновленного узла:
rs.status()
  1. Повторить процесс для остальных secondary экземпляров баз данных.
  2. Передать роль primary одному из ранее обновленных экземпляров:
rs.stepDown()
  1. Убедиться, что роль экземпляра, который ранее был primary, теперь secondary:
rs.status()
  1. Обновить бывший primary эксземпляр до нужной версии.
  2. После того как все члены репликационного набора обновлены, поднимите FCV:
db.adminCommand({ setFeatureCompatibilityVersion: "7.0" })