溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB 3.0副本集搭建

發(fā)布時間:2020-03-02 10:09:48 來源:網(wǎng)絡 閱讀:628 作者:藍色_風暴 欄目:MongoDB數(shù)據(jù)庫

環(huán)境配置

架構:一主兩從(三臺虛擬機)

系統(tǒng)版本: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配置文件

# 修改監(jiān)聽地址為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


副本集部署

在任何一臺服務器上面執(zhí)行下面命令

登錄至monogdb

mongo

切換至admin庫

> use admin

定義一個config變量,注意更改id名稱為自己的副本集名,host為自己的實際主機IP和監(jiān)聽端口,變量名也可以自己定義

> 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"}]}

初始化配置,返回  則創(chuàng)建成功

> rs.initiate(config)
{ "ok" : 1 }
gogen:OTHER> 
gogen:PRIMARY>

說明

  • { "ok" : 1 }:代表執(zhí)行成功,如果不成功返回其它結果

  • gogen:OTHER>:上條命令執(zhí)行成功后提示符會變成這樣,代表正在創(chuàng)建副本集,但此主機的角色還不確定,所以為OTHER

  • gogen:PRIMARY>:過一會再次直接回車就提示符就變成了PRIMARY(代表主),如果為SECONDARY(代表從)

副本集權重配置


上面登錄至monogdb再執(zhí)行下面的命令,首先定義一個變量

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)

副本集基本命令使用

查看副本集狀態(tài)

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. 在主上面寫入一些數(shù)據(jù),查看從是否可以從主同步

  2. 測試主宕機(直接關機,或者停止服務),是否可以在另外兩臺從里同重新選舉出新主

  3. 在新主上面再寫入數(shù)據(jù),查看另外一個從是否可以同步

  4. 恢復宕機的舊主服務器,查看新寫入的數(shù)據(jù)是否可以同步到舊主,另外查看是否會將主奪取回來


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI