温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongoDB 3.0副本集搭建

发布时间:2020-03-02 10:09:48 来源:网络 阅读:660 作者:蓝色_风暴 栏目:MongoDB数据库

环境配置

架构:一主两从(三台虚拟机)

系统版本: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	}	} }

测试

  1. 在主上面写入一些数据,查看从是否可以从主同步

  2. 测试主宕机(直接关机,或者停止服务),是否可以在另外两台从里同重新选举出新主

  3. 在新主上面再写入数据,查看另外一个从是否可以同步

  4. 恢复宕机的旧主服务器,查看新写入的数据是否可以同步到旧主,另外查看是否会将主夺取回来


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI