复制包含用于主节点和辅助节点的2个节点,以及用于任意节点的第三个节点。 如果一个节点出现故障,则任意节点可以帮助检查并使其其中一个节点成为主节点。
步骤: 在具有相同凭据的3台计算机上安装mongodb。 保持enableLocalhostAuthBypass:false,在所有3个系统中使用相同的密码创建用户。
在所有3个系统中复制“ mongodb-key-file”(示例位置“ D:/ mongodb / conf /”)。 要么 生成“ mongodb-key-file”,如下所示 openssl rand -base64 756> d:/ mongodb-key-file 在所有3个系统中复制“ mongodb-key-file”(示例位置“ D:/ mongodb / conf /”)。
在所有3个系统中使用以下配置重新启动服务器
systemLog:
destination: file
path: "d:/mongodb/log/mongod.log"
storage:
dbPath: d:/mongodb/data/
journal:
enabled: true
net:
bindIp: [localhost,<Secondary IP Address>,<Arbitrary IP Address>]
port: 26017
setParameter:
enableLocalhostAuthBypass: true
security:
keyFile: <key file location>/mongodb-key-file
replication:
replSetName: rs0
systemLog:
destination: file
path: "d:/mongodb/log/mongod.log"
storage:
dbPath: d:/mongodb/data/
journal:
enabled: true
net:
bindIp: [<Secondary IP Address>,localhost,<Arbitrary IP Address>]
port: 27017
setParameter:
enableLocalhostAuthBypass: true
security:
keyFile: <key file location>/mongodb-key-file
replication:
replSetName: rs0
systemLog:
destination: file
path: "d:/mongodb/log/mongod.log"
storage:
dbPath: d:/mongodb/data/
journal:
enabled: false
net:
bindIp: [localhost, <Primary IP Address>, <Secondary IP Address>]
port: 28017
setParameter:
enableLocalhostAuthBypass: true
security:
keyFile: <key file location>/mongodb-key-file
replication:
replSetName: rs0
以上条目的格式应与mongo.conf文件中的任何选项卡相同。
从控制台通过以下方式连接到mongo:在所有计算机上都必须执行此步骤
主数据库:mongo --port 26017 -u root -p --authentication数据库管理员
次要:mongo --port 27017 -u root -p --authentication数据库管理员
任意:mongo --port 27017 -u root -p --authentication数据库管理员
在主系统中: 1. rs.initiate()
if(arbitrary is not chosen)
{
2. rs.add({host:"<Secondoary IP Addresss>:27017", priority:0,votes:0}) (
}
else{
2. rs.add("<Secondoary IP Addresss>:27017")
3. rs.addArb("<Arbitrary IP Address>:28017")
}
4. rs.status() should show the status.
1. rs.initiate(
{
_id: "rs0",
version: 1,
members: [
{ _id: 0, host : "primary host:26017" },
{ _id: 1, host : "secondary host:27017" }
{ _id: 2, host : "arbitrary:28017" }
]
}
)
if(arbitrary is not choosen)
{
2. rs.add({host:"<Secondoary IP Addresss>:27017", priority:0,votes:0}) (
}
else{
2. rs.add("<Secondoary IP Addresss>:27017")
3. rs.addArb("<Arbitrary IP Address>:28017")
}
4. rs.status()
注意:如果未添加任意选项,则故障转移将不起作用。即。如果主服务器已关闭,则不会将辅助服务器设置为主服务器。 注意:如果在主数据库中使用rs.initiate(),则会采用主系统的名称而不是实际的“主机名”,并将其传递给辅助系统。但是系统名称将不会被解释为主计算机的实际IP地址。因此,在辅助计算机中,应将主系统名称添加到映射到实际IP地址的“等->主机”文件中。
添加辅助数据库时出现以下错误,描述了上述情况 “在新配置中没有描述主机”