副本 - MongoDB EC2 实例
Replica - MongoDB EC2 instances
在 AWS 云中添加了 3 个 EC2 实例。
在 3 个不同的实例中安装了 3 个 MongoDB 个实例,所有实例都 运行 正常。
我正在为相同的数据库添加复制。
以下是我遵循的步骤:
sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet" ( 总共3 mongo 个实例)
config = {_id : "myReplSet" , 成员: [{_id: 0, host:"ip-10-0-0-68:27017"},{_id: 1, host:"ip-10-0-0-247:27017" },{_id: 2, 主机:"ip-10-0-0-148:27017"}]}
rs.initiate(配置)
错误如下:
MongoDB Enterprise > rs.initiate(config)
{
"ok" : 0,
"errmsg" : "This node was not started with the replSet option",
"code" : 76,
"codeName" : "NoReplicationEnabled"
}
编辑
我为所有 3 个实例添加了相同的安全组和弹性 IP。
所有 3 个都是新的数据库。
现在我收到错误消息:
{
"ok" : 0,
"errmsg" : "'ip-10-0-0-148:27017' has data already, cannot initiate set.",
"code" : 110,
"codeName" : "CannotInitializeNodeWithData"
}
EDIT-2
一台服务器的配置文件:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1,13.58.225.174,13.58.180.226 # Listen to local interface only, comment to listen on all interfaces.
#security:
#operationProfiling:
replication:
replSetName: rs0
服务启动命令不接受参数。所以
sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet"
相当于
sudo service mongod start
如果您想将这些设置添加到 mongod
配置中,您将需要编辑 /etc/mongod.conf
以添加它们。由于一些选项的名称在命令行和配置之间有所不同文件,您应该查看 Configuration File Options 文档以确保您使用正确的设置。
编辑
根据您的编辑和错误消息,mongod
进程 (ip-10-0-0-148:27017
) 似乎已经有数据。您不能将已经有数据的 mongod
进程添加到副本集。但是,您可以在已经有数据的 mongod
进程上启动副本集。您应该连接到 mongod
进程和那里的 运行 rs.initiate()
。然后你 运行 rs.add()
将剩余的空 mongod
进程添加到副本集。
注意:MongoDB 确实提供 MongoDB Cloud Manager and MongoDB Atlas,它可以为您完成部分或全部工作。但是,它们不是免费的,因此是否要使用它们取决于您。
这样就可以了。
- rs.initialize()
- rs.add()
- rs.add()
我在这里回复:
https://devops.profitbricks.com/tutorials/configure-mongodb-replica-set/
在 AWS 云中添加了 3 个 EC2 实例。 在 3 个不同的实例中安装了 3 个 MongoDB 个实例,所有实例都 运行 正常。
我正在为相同的数据库添加复制。
以下是我遵循的步骤:
sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet" ( 总共3 mongo 个实例)
config = {_id : "myReplSet" , 成员: [{_id: 0, host:"ip-10-0-0-68:27017"},{_id: 1, host:"ip-10-0-0-247:27017" },{_id: 2, 主机:"ip-10-0-0-148:27017"}]}
rs.initiate(配置)
错误如下:
MongoDB Enterprise > rs.initiate(config)
{
"ok" : 0,
"errmsg" : "This node was not started with the replSet option",
"code" : 76,
"codeName" : "NoReplicationEnabled"
}
编辑
我为所有 3 个实例添加了相同的安全组和弹性 IP。 所有 3 个都是新的数据库。 现在我收到错误消息:
{
"ok" : 0,
"errmsg" : "'ip-10-0-0-148:27017' has data already, cannot initiate set.",
"code" : 110,
"codeName" : "CannotInitializeNodeWithData"
}
EDIT-2
一台服务器的配置文件:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1,13.58.225.174,13.58.180.226 # Listen to local interface only, comment to listen on all interfaces.
#security:
#operationProfiling:
replication:
replSetName: rs0
服务启动命令不接受参数。所以
sudo service mongod start --sslPEMKeyFile "/etc/ssl/mongodb.pem" --sslMode "requireSSL" --replSet "myReplSet"
相当于
sudo service mongod start
如果您想将这些设置添加到 mongod
配置中,您将需要编辑 /etc/mongod.conf
以添加它们。由于一些选项的名称在命令行和配置之间有所不同文件,您应该查看 Configuration File Options 文档以确保您使用正确的设置。
编辑
根据您的编辑和错误消息,mongod
进程 (ip-10-0-0-148:27017
) 似乎已经有数据。您不能将已经有数据的 mongod
进程添加到副本集。但是,您可以在已经有数据的 mongod
进程上启动副本集。您应该连接到 mongod
进程和那里的 运行 rs.initiate()
。然后你 运行 rs.add()
将剩余的空 mongod
进程添加到副本集。
注意:MongoDB 确实提供 MongoDB Cloud Manager and MongoDB Atlas,它可以为您完成部分或全部工作。但是,它们不是免费的,因此是否要使用它们取决于您。
这样就可以了。
- rs.initialize()
- rs.add()
- rs.add()
我在这里回复: https://devops.profitbricks.com/tutorials/configure-mongodb-replica-set/