У меня следующая установка:
- Множество серверов
- Одна общая сетевая папка для хранения данных
На одном из серверов мне нужно запустить MongoDB для записи на него данных. Я хочу иметь доступ к этим записанным данным с других серверов, пока один экземпляр все еще работает. Возможно ли иметь доступный только для чтения экземпляр MongoDB, который позволяет это? Во всех остальных мне не нужно ничего писать, просто читаю.
Вы не можете поделиться dbPath
с несколькими активными mongod
процессы - каждый процесс требует монопольного доступа к файлам данных.
Для избыточности данных и копий данных только для чтения MongoDB поддерживает развертывания наборов реплик. Набор реплик избирает единственного основного члена который принимает записи и может иметь несколько вторичных членов только для чтения. По умолчанию все операции чтения и записи направлены на текущий первичный объект в наборе реплик, но ваш драйвер или приложение могут использовать читать предпочтения читать от второстепенных участников. В случае, если текущий первичный сервер недоступен, наборы реплик также поддерживают отработку отказа в зависимости от вашей конфигурации.
Однако общее хранилище не идеально подходит для набора реплик, поскольку вы будете записывать много копий одних и тех же данных в общее хранилище (которое, предположительно, также имеет некоторую встроенную избыточность записи).
С репликацией или без нее вам следует настроить MongoDB Контроль доступа на основе ролей (RBAC) чтобы ваши приложения аутентифицировались с соответствующими привилегиями, такими как доступ только для чтения. В Контрольный список безопасности MongoDB есть список мер безопасности, которые необходимо учитывать. Даже если доступ ограничен доверенной сетью, использование RBAC ограничивает вашу подверженность случайному изменению данных и обеспечивает некоторый контрольный журнал в журналах сервера MongoDB.