Mr.*_*ris 13 python mongodb pymongo replicaset
我有一个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)
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,如下:
'SecondSErver:27017' has data already, cannot initiate set
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用数据库进行身份验证
mongo admin -u correctWorkingUsername -p password
Run Code Online (Sandbox Code Playgroud)
我可以启动复制,并成功添加成员:
rs.initiate()
rs.add('SecondServer:27017')
Run Code Online (Sandbox Code Playgroud)
我不确定这是否与密钥文件身份验证有关,或者是否由用户脚本在其他服务器上创建了ALREADY.每个服务器也都使用配置文件mongod.conf启动,该文件包含副本集名称.
为什么这会失败?rs.initiate()和rs.add()完美地工作,但python脚本虽然可以实际连接到数据库但不起作用.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |