1. 程式人生 > >MongoDB集群配置筆記

MongoDB集群配置筆記

replica 配置筆記 iat 特殊 數據 ble width ... mon

單臺mongodb配置文件:

dbpath=/opt/mongodb/data
logpath=/opt/mongodb/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.209.128
port=27017

啟動MongoDB

./mongod -f mongodb.cfg


MongoDB 主從搭建

MongoDB 4.0之後不再支持該配置方法:

Master配置文件如下:

dbpath=/opt/mongodb/master-slave/master/data
logpath=/opt/mongodb/master-slave/master/logs/mongodb.log
logappend
=true fork=true bind_ip=192.168.209.128 port=27001 master=true //4.0後不再支持 //source=192.168.x.x:27002

Slaver配置如下:

..........

slave=true

............


MongoDB 副本集

簡單來說就是集群當中包含了多份數據,保證主節點掛掉了,備節點能繼續提供數據服務,提供的前提就是數據需要和主節點一致。

Mongodb(M)表示主節點,Mongodb(S)表示備節點,Mongodb(A)表示仲裁節點。
1. 主備節點存儲數據,仲裁節點不存儲數據。客戶端同時連接主節點與備節點,不連接仲裁節點。
默認設置下,主節點提供所有增刪查改服務,備節點不提供任何服務。但是可以通過設置使備節點提供查詢服務,這樣就可以減少主節點的壓力,當客戶端進行數據查詢時,請求自動轉到備節點上。這個設置叫做Read Preference Modes,同時Java 客戶端提供了簡單的配置方式,可以不必直接對數據庫進行操作。
2.仲裁節點是一種特殊的節點,它本身並不存儲數據,主要的作用是決定哪一個備節點在主節點掛掉之後提升為主節點,所以客戶端不需要連接此節點。這裏雖然只有一個備節點,但是仍然需要一個仲裁節點來提升備節點級別。

主, 備, 仲裁節點配置文件如下:

dbpath=/opt/mongodb/replset/xx/data
logpath=/opt/mongodb/replset/xx/logs/mongodb.log
logappend=true

//註意: 這裏是關鍵, 記錄集群的名字
replSet=shard002
bind_ip=192.168.x.x
port=27017
fork=true

啟動各節點之後, 配置主,備,仲裁節點

#連接好其中一臺主機, 方便配置
mongo 192.168.x.x:27017
use admin
cfg={_id:"shard002",members:[{_id:0,host:‘192.168.x.128:27017‘,priority:9},{_id:1,host:‘192.168.x.129:27017‘,priority:1},{_id:2,host:‘192.168.x.130:27017‘,arbiterOnly:true
}]}; #使配置生效 rs.initiate(cfg)

rs.status()

註意: 對於仲裁節點,需要有個特別的配置——arbiterOnly:true。這個千萬不能少了,不然主備模式就不能生效。


MongoDB 數據分片:

服務器結構圖如下:

技術分享圖片

1). 數據節點配置文件:

dbpath=/opt/mongodb/shard/replset/replica2/data
logpath=/opt/mongodb/shard/replset/replica2/logs/mongodb.log
logappend=true
fork=true
bind_ip=192.168.x.x
port=27002
replSet=shard001
shardsvr=true

使數據節點集群生效

//#連接上其中一臺數據服務器,進行其余配置
mongo 192.168.209.128:27001 #ip 和port 是某個節點的地址

cfg={_id:"shard001",members:[{_id:0,host:‘192.168.209.x:27001‘},{_id:1,host:‘192.168.209.x:27002‘},{_id:2,host:‘192.168.209.x:27003‘}]};

//#使配置生效
rs.initiate(cfg) 

2). config 集群配置文件如下:

dbpath=/opt/mongodb/shard/configsvr/config2/data
configsvr=true
//此處端口號根據實際應用調整
port=28002
fork=true
logpath=/opt/mongodb/shard/configsvr/config2/logs/mongodb.log
replSet=configrs
logappend=true
bind_ip=192.168.209.x

啟動config集群,並使節點集群生效

##連接上其中一臺數據服務器,進行其余配置
mongo 192.168.209.x:28001 

 #先切換到admin
use admin

cfg={_id:"configrs",members:[{_id:0,host:‘192.168.209.x:28001‘},{_id:1,host:‘192.168.209.x:28002‘},{_id:2,host:‘192.168.209.x:28003‘}]};

#使配置生效
rs.initiate(cfg) 

3). 路由集群配置文件如下:

//此處配置config集群的地址
configdb=configrs/192.168.209.x:28001,192.168.209.x:28002,192.168.209.x:28003
//此處端口號根據實際應用調整
port=29000
fork=true
logpath=/opt/mongodb/shard/routesvr/logs/mongodb.log
logappend=true
bind_ip=192.168.209.x

4). 配置Replica Set 分片信息

//#這裏必須連接路由節點
mongo 192.168.209.x:29000 

//#連接上數據集群中的其中一臺,自動同步集群中其他機器信息
sh.addShard("shard001/192.168.209.x:27001");


//#連接上collection[testdb], 並設置分片
use testdb

//#testdb is database name
sh.enableSharding("testdb") 

sh.shardCollection("testdb.testcon",{"name":”hashed”})

db.collection.status()

MongoDB集群配置筆記