MongoDB: не может инициировать набор реплик; "уже имеет данные, не может инициировать набор"
у меня есть экземпляр MongoDB, настройка с помощью конфигурационного файла и ключевого файла.
Я хочу инициировать набор реплик с помощью pymongo. Когда я пытаюсь инициировать набор replcia, выполняя скрипт python против сервера, который станет первичным набором реплик, например:
from pymongo import MongoClient
uri = "mongodb://correctWorkingUsername:password@localhost:27017"
c = MongoClient(uri)
config = {'_id': 'RelicaSetName', 'members': [
{'_id': 0, 'host': 'FirstServer:27017'},
{'_id': 1, 'host': 'SecondServer:27017'},
{'_id': 2, 'host': 'ThirdServer:27017'}]}
c.admin.command("replSetInitiate", config)
Я получаю сообщение об ошибке, следующие:
'SecondSErver:27017' has data already, cannot initiate set
однако, если я проверки подлинности в базе данных используя
mongo admin -u correctWorkingUsername -p password
Я могу инициировать репликацию, и успешно добавлять элементы:
rs.initiate()
rs.add('SecondServer:27017')
Я не был уверен, связано ли это с аутентификацией ключевого файла или с тем, что пользователи уже были созданы на других серверах скриптом. Каждый сервер также был запущен с конфигурационным файлом mongod.conf, который содержит имя набора реплик.
Почему это не удается? РС.инициировать () и rs.add () работает отлично, но скрипт python не работает хотя это может повлиять на подключение к базе данных.
1 ответов
когда вы инициализируете полный набор реплик сразу, каждый узел не должен иметь данных.
когда вы превращаете существующий одиночный узел в набор реплик, его данные становятся данными набора реплик, а затем добавление дополнительных узлов реплицирует данные на них, стирая существующие данные.
то, что вы должны делать, это запуск узлов, инициализация набора реплик и затем создание пользователей (только на главную).
пользователи были уже созданы на других серверах скриптом
это проблема в ядре - единственный способ, которым это могло быть сделано на неинициализированном члене набора реплик, - это если он был сначала поднят как узел набора реплик, пользователи были добавлены, а затем он был перезапущен с . Это не правильная последовательность. Для правильного списка шагов проверка документов.