环境配置

创新互联是一家从事企业网站建设、成都网站设计、成都网站制作、行业门户网站建设、网页设计制作的专业网站设计公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点1000+。
架构:一主两从(三台虚拟机)
系统版本:CentOS Linux release 7.4.1708 (Core)
MongoDB版本:3.0.15
MongoDB安装
以下操作需要在三台虚拟机都进行
下载yum源配置
wget https://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo mv mongodb-org-3.0.repo /etc/yum.repos.d/
安装mongodb
yum -y install mongodb-org
修改mongodb配置文件
# 修改监听地址为0.0.0.0 net: port: 27017 bindIp: 0.0.0.0 # 修改副本集配置,此项为之后配置副本集所需要的配置 replication: oplogSizeMB: 20480 replSetName: gogen
说明:
- oplogSizeMB:此为主从服务器在同步的时候需要的一块交换空间,如果服务器空间够大,那么此空间尽量足够大,单位为MB。此值更改时需要注意,不可随意更改 
- replSetName:此为副本集名称,自己自定义 
修改内核配置
# 最好加入开机自启动配置文件 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
修改文件描述符/etc/security/limits.conf
# 在配置文件最后加入以后内容 mongod soft nofile 64000 mongod hard nofile 64000 mongod soft nproc 32000 mongod hard nproc 32000
启动服务
chkconfig mongod on service mongod start
副本集部署
在任何一台服务器上面执行下面命令
登录至monogdb
mongo
切换至admin库
> use admin
定义一个config变量,注意更改id名称为自己的副本集名,host为自己的实际主机IP和监听端口,变量名也可以自己定义
> config={_id:"gogen",members:[{_id:0,host:"192.168.6.91:27017"},{_id:1,host:"192.168.6.92:27017"},{_id:2,host:"192.168.6.93:27017"}]}初始化配置,返回 则创建成功
> rs.initiate(config)
{ "ok" : 1 }
gogen:OTHER> 
gogen:PRIMARY>说明
- { "ok" : 1 }:代表执行成功,如果不成功返回其它结果 
- gogen:OTHER>:上条命令执行成功后提示符会变成这样,代表正在创建副本集,但此主机的角色还不确定,所以为OTHER 
- gogen:PRIMARY>:过一会再次直接回车就提示符就变成了PRIMARY(代表主),如果为SECONDARY(代表从) 
副本集权重配置
在主上面登录至monogdb再执行下面的命令,首先定义一个变量
gogen:PRIMARY> cfg=rs.config()
更改第一个主机的权重为100
gogen:PRIMARY> cfg.members[0].priority=100
更改第二个主机的权重为90
gogen:PRIMARY> cfg.members[1].priority=90
更改第三个主机的权重为1
gogen:PRIMARY> cfg.members[2].priority=1
刷新配置
gogen:PRIMARY> rs.reconfig(cfg)
副本集基本命令使用
查看副本集状态
gogen:PRIMARY> rs.status()
# 反回结果参考
{
	"set" : "gogen",
	"date" : ISODate("2018-03-07T02:40:00.403Z"),
	"myState" : 1,
	"members" : [
		{
			"_id" : 0,
			"name" : "192.168.6.91:27017",
			"health" : 1,
			"state" : 1,
			"stateStr" : "PRIMARY",
			"uptime" : 54870,
			"optime" : Timestamp(1520336246, 1),
			"optimeDate" : ISODate("2018-03-06T11:37:26Z"),
			"electionTime" : Timestamp(1520335742, 1),
			"electionDate" : ISODate("2018-03-06T11:29:02Z"),
			"configVersion" : 2,
			"self" : true
		},
		{
			"_id" : 1,
			"name" : "192.168.6.92:27017",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 54661,
			"optime" : Timestamp(1520336246, 1),
			"optimeDate" : ISODate("2018-03-06T11:37:26Z"),
			"lastHeartbeat" : ISODate("2018-03-07T02:40:00.046Z"),
			"lastHeartbeatRecv" : ISODate("2018-03-07T02:39:59.466Z"),
			"pingMs" : 0,
			"syncingTo" : "192.168.6.91:27017",
			"configVersion" : 2
		},
		{
			"_id" : 2,
			"name" : "192.168.6.93:27017",
			"health" : 1,
			"state" : 2,
			"stateStr" : "SECONDARY",
			"uptime" : 54661,
			"optime" : Timestamp(1520336246, 1),
			"optimeDate" : ISODate("2018-03-06T11:37:26Z"),
			"lastHeartbeat" : ISODate("2018-03-07T02:39:59.914Z"),
			"lastHeartbeatRecv" : ISODate("2018-03-07T02:39:59.297Z"),
			"pingMs" : 0,
			"syncingTo" : "192.168.6.91:27017",
			"configVersion" : 2
		}
	],
	"ok" : 1
}查看副本集配置
gogen:PRIMARY> rs.config()
# 返回结果参考
{
	"_id" : "gogen",
	"version" : 2,
	"members" : [
		{
			"_id" : 0,
			"host" : "192.168.6.91:27017",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 100,
			"tags" : {
				
			},
			"slaveDelay" : 0,
			"votes" : 1
		},
		{
			"_id" : 1,
			"host" : "192.168.6.92:27017",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 90,
			"tags" : {
				
			},
			"slaveDelay" : 0,
			"votes" : 1
		},
		{
			"_id" : 2,
			"host" : "192.168.6.93:27017",
			"arbiterOnly" : false,
			"buildIndexes" : true,
			"hidden" : false,
			"priority" : 1,
			"tags" : {
				
			},
			"slaveDelay" : 0,
			"votes" : 1
		}
	],
	"settings" : {
		"chainingAllowed" : true,
		"heartbeatTimeoutSecs" : 10,
		"getLastErrorModes" : {
			
		},
		"getLastErrorDefaults" : {
			"w" : 1,
			"wtimeout" : 0
		}
	}
}测试
- 在主上面写入一些数据,查看从是否可以从主同步 
- 测试主宕机(直接关机,或者停止服务),是否可以在另外两台从里同重新选举出新主 
- 在新主上面再写入数据,查看另外一个从是否可以同步 
- 恢复宕机的旧主服务器,查看新写入的数据是否可以同步到旧主,另外查看是否会将主夺取回来 
网站名称:MongoDB3.0副本集搭建
转载注明:http://www.cqwzjz.cn/article/jdghgd.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 