MongoDB集群配置筆記
單臺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集群配置筆記