我对MongoDB很陌生,并花了几个小时寻找如何将我的mongo独立实例推广到一个副本中。我的实际环境是一个ubuntu服务器。
root@UMONGO1:/home/msc# lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal在端口27017上本地运行独立的mongodb实例:
root@UMONGO1:/var/lib# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-01-01 15:46:52 CET; 10min ago
Docs: https://docs.mongodb.org/manual
Main PID: 964 (mongod)
Memory: 222.6M
CGroup: /system.slice/mongod.service
└─964 /usr/bin/mongod --config /etc/mongod.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:我从这里导入了一个数据库,目标是再创建两个服务器并在它们上复制dbs。
请参阅文件:
将独立的副本集转换为副本集我对必须使用的两个参数--端口和-dbpath--感到困惑。如果我想提升我的实际实例,我应该使用现有的数据库路径和端口,对吗?但不管我在尝试什么都是失败。
使用另一个端口:
mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0
"ctx":"initandlisten","msg":"Error setting up listener","attr":{"error":{"code":9001,"codeName":"SocketException","errmsg":"Address already in use"}}}
mongod --port 27018 --dbpath /var/lib/mongodb/ --replSet rs0
BException in initAndListen, terminating","attr":{"error":"DBPathInUse: Unable to lock the lock file: /var/lib/mongodb/mongod.lock (Resource temporarily unavailable). Another mongod instance is already running on the /var/lib/mongodb/ directory"}}使用新目录:
mongod --port 27017 --dbpath /media/msc/MONGO/rs/ --replSet rs0
"replication":{"replSet":"rs0"},"storage":{"dbPath":"/media/msc/MONGO/rs/"}}}}
{"t":{"$date":"2021-12-31T16:55:28.885+01:00"},"s":"E", "c":"CONTROL", "id":20568, "ctx":"initandlisten","msg":"Error setting up listener","attr":{"error":{"code":9001,"codeName":"SocketException","errmsg":"Address already in use"}}}
mongod --port 27018 --dbpath /media/msc/MONGO/rs/ --replSet rs0
{"t":{"$date":"2021-12-31T16:57:11.762+01:00"},"s":"I", "c":"-", "id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":2000}}这个等待"nextWakeupMillis“永远不会停止。
你能提供帮助,在哪一个是正确的配置和问题是?
* <#>EDIT :01/03/2022<*
现在,我可以使用以下方法来推广我的实例:
mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0然后打开一个新的shell并发送
rs.initiate()但是,为什么服务不会从这种新配置开始呢?
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2022-01-03 11:39:51 CET; 1min 12s ago
Docs: https://docs.mongodb.org/manual
Process: 904 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=14)
Main PID: 904 (code=exited, status=14)
janv. 03 11:39:35 UMONGO1 systemd[1]: Started MongoDB Database Server.
janv. 03 11:39:51 UMONGO1 systemd[1]: mongod.service: Main process exited, code=exited, status=14/n/a
janv. 03 11:39:51 UMONGO1 systemd[1]: mongod.service: Failed with result 'exit-code'.此外,如果重新启动服务器,则必须重复这些操作。是否有任何方法来修复配置并启动单神服务?
发布于 2022-01-05 18:39:01
最后,经过几个小时的研究/测试,感谢这里的几个有用的答案,我开始更清楚地理解mongodb集群是如何工作的。完全忘记了Ubuntu,无论我尝试了什么服务都不会启动。
我有两个成员,MONGO2和MONGO3,运行mongo服务。
MONGO2
# network interfaces
net:
port: 27017
bindIp: 10.0.0.5,127.0.0.1,0.0.0.0
#replication:
replication:
replSetName: rs0MONGO3:
# network interfaces
net:
port: 27017
bindIp: 10.0.0.6,127.0.0.1,0.0.0.0
#replication:
replication:
replSetName: rs0./mongod.exe -端口27017 -dbpath M:\db\data -复制集rs0 -绑定_ip_all
当出现此错误消息时:
{"t":{"$date":"2021-12-31T16:57:11.762+01:00"},"s":"I", "c":"-", "id":4939300, "ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"NotYetInitialized: Cannot use non-local read concern until replica set is finished initializing.","nextWakeupMillis":2000}}./mongo.exe --port 27017然后是rs.initiate()
rs.add("MONGO3:27017");中。结果
rs0:PRIMARY> rs.conf()
{
"_id" : "rs0",
"version" : 3,
"term" : 4,
"members" : [
{
"_id" : 0,
"host" : "MONGO2:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "MONGO3:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"secondaryDelaySecs" : NumberLong(0),
"votes" : 1
}
],
"protocolVersion" : NumberLong(1),
"writeConcernMajorityJournalDefault" : true,
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"catchUpTimeoutMillis" : -1,
"catchUpTakeoverDelayMillis" : 30000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("61d5799d9249ea1cc550e79d")
}
}发布于 2022-01-03 14:34:42
对于初学者来说,当MongoDB文档没有明确强调配置文件设置和命令行选项时,常常会感到困惑。
当您将MongoDB作为服务运行时,您必须像下面这样编辑配置文件/etc/mongod.conf
# mongod.conf
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
### THIS ONE ###
replication:
replSetName: rs0发布于 2022-01-01 10:25:33
如果您使用localhost 127.0.0.1地址并希望拥有副本集,那么所有(不同的)副本(mongoD进程)都必须存在于不同的端口上,并且具有不同的数据目录(storage.dbPath),因为它们位于同一台机器上。因此,rs0使用f.ex。27007,rs1使用f.ex。27017,rs2使用f.ex。27027,然后是f.ex目录。/var/lib/mongodb/rs1 0、/var/lib/mongodb/rs1 1
但是,如果您使用多台机器构建副本集,那么
https://dba.stackexchange.com/questions/305514
复制相似问题