目录
副本集(replica set)是一组mongod进程维护的相同的数据集,提供了MongoDB的冗余和高可用,本篇将对MongoDB下副本集环境(PSA架构,即一主一从一仲裁)的搭建进行演示。
1 软件环境
使用的软件分别为:
- VirtualBox 6.0
- Oracle Linux 6.7
- MongoDB 4.2.0
2 副本集架构
采用一主一从一仲裁的架构,即PSA架构:
3 搭建过程
3.1 创建Mongod实例
参考:安装MongoDB单实例
3.2 创建KeyFile文件
1)创建KeyFile
[mongod@pri data]$ openssl rand -base64 741 > /u01/data/conf/keyfile
[mongod@pri conf]$ chmod 400 /u01/data/conf/keyfile
[mongod@pri conf]$ ll
total 8
-r--------. 1 mongod mongod 1004 Oct 2 17:50 keyfile
-rw-r--r--. 1 mongod mongod 484 Oct 2 17:52 mongod.cnf
2)复制KeyFile至其它主机
[mongod@pri conf]$ scp * root@192.168.56.103:/u01/data/conf
The authenticity of host '192.168.56.103 (192.168.56.103)' can't be established.
RSA key fingerprint is c1:97:8c:3d:6e:c5:3e:90:f4:52:5b:77:8b:1a:94:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.103' (RSA) to the list of known hosts.
root@192.168.56.103's password:
keyfile 100% 1004 1.0KB/s 00:00
mongod.cnf 100% 484 0.5KB/s 00:00
[mongod@pri conf]$ scp * root@192.168.56.104:/u01/data/conf
The authenticity of host '192.168.56.104 (192.168.56.104)' can't be established.
RSA key fingerprint is c1:97:8c:3d:6e:c5:3e:90:f4:52:5b:77:8b:1a:94:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.104' (RSA) to the list of known hosts.
root@192.168.56.104's password:
keyfile 100% 1004 1.0KB/s 00:00
mongod.cnf 100% 484 0.5KB/s 00:00
3.3 启动Mongod实例
1)启动每个成员的mongod实例
[mongod@pri conf]$ mongod -f ./mongod.cnf
about to fork child process, waiting until server is ready for connections.
forked process: 3328
child process started successfully, parent exiting
3.4 初始化复本集
1)通过mongo连接副本集的一个成员,进行副本集的初始化
[mongod@pri data]$ mongo localhost:27017/admin
MongoDB shell version v4.2.0
connecting to: mongodb://localhost:27017/admin?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("7a223330-bc53-46c6-a194-31b28041fb67") }
MongoDB server version: 4.2.0
> cfg={
... _id:'rep1',
... members:[
... {_id:0,host:'192.168.56.102:27017'},
... {_id:1,host:'192.168.56.103:27017'},
... {_id:2,host:'192.168.56.104:27017',arbiterOnly:true}
... ]
... }
{
"_id" : "rep1",
"members" : [
{
"_id" : 0,
"host" : "192.168.56.102:27017"
},
{
"_id" : 1,
"host" : "192.168.56.103:27017"
},
{
"_id" : 2,
"host" : "192.168.56.104:27017",
"arbiterOnly" : true
}
]
}
> rs.initiate(cfg)
{ "ok" : 1 }
rep1:OTHER>
2)查看副本集状态
rep1:PRIMARY> rs.status()
{
"set" : "rep1",
"date" : ISODate("2019-10-02T12:51:11.466Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"