中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

mongodb分片群集怎么配置?

發布時間:2020-05-25 14:09:51 來源:億速云 閱讀:186 作者:鴿子 欄目:系統運維

配置mongodb分片群集
Sharding cluster介紹
這是一種可以水平擴展的模式,在數據量很大時特給力,數據量很大時一般會采用這種架構去構建monodb系統。

要構建一個 MongoDB Sharding Cluster,需要三種角色:
Shard Server: mongod 實例,用于存儲實際的數據塊,實際生產環境中一個shard server角色可由幾臺機器組個一個relica set承擔,防止主機單點故障
Config Server: mongod 實例,存儲了整個 Cluster Metadata,其中包括 chunk 信息。
Route Server: mongos 實例,前端路由,客戶端由此接入,且讓整個集群看上去像單一數據庫,前端應用可以透明使用。

Sharding架構圖:

實際環境架構
本例架構示例圖:

1.分別在10.10.1.[107~109]機器運行一個mongod實例(稱為mongod shard11,mongod shard12,mongod shard13)組織replica set1,作為cluster的shard1
2.分別在10.10.1.[107~109]機器運行一個mongod實例(稱為mongod shard21,mongod shard22,mongod shard23)組織replica set2,作為cluster的shard2
3.分別在10.10.2.[89~91]機器運行一個mongod實例(稱為mongod shard31,mongod shard32,mongod shard33)組織replica set3,作為cluster的shard3
4.分別在10.10.2.[89~91]機器運行一個mongod實例(稱為mongod shard41,mongod shard42,mongod shard43)組織replica set4,作為cluster的shard4
5.1.107、1.108、2.89機器運行一個mongod實例,作為3個config server
6.每臺機器運行一個mongs進程,用于客戶端連接
主機  IP  端口信息
Server1 10.10.1.107 mongod shard11:27017
mongod shard21:27018
mongod config1:20000
mongs1:30000
Server2 10.10.1.108 mongod shard12:27017
mongod shard22:27018
mongod config2:20000
mongs2:30000
Server3 10.10.1.109 mongod shard13:27017
mongod shard23:27018
mongs3:30000
Server4 10.10.2.89  mongod shard31:27017
mongod shard41:27018
mongod config3:20000
mongs4:30000
Server5 10.10.2.90  mongod shard32:27017
mongod shard42:27018
mongs5:30000
Server6 10.10.2.91  mongod shard33:27017
mongod shard43:27018
mongs6:30000

各節點hosts文件添加
#shard1
10.10.1.107 MongoDB_shard11.itings.com  
10.10.1.108 MongoDB_shard12.itings.com
10.10.1.109 MongoDB_shard13.itings.com

#shard2
10.10.1.107 MongoDB_shard21.itings.com  
10.10.1.108 MongoDB_shard22.itings.com 
10.10.1.109 MongoDB_shard23.itings.com 

#shard3
10.10.2.89  MongoDB_shard31.itings.com  
10.10.2.90  MongoDB_shard32.itings.com 
10.10.2.91  MongoDB_shard33.itings.com 

#shard4
10.10.2.89  MongoDB_shard41.itings.com  
10.10.2.90  MongoDB_shard42.itings.com 
10.10.2.91  MongoDB_shard43.itings.com 

#config1 
10.10.1.107 MongoDB_config1.itings.com  
10.10.1.108 MongoDB_config2.itings.com 
10.10.2.89  MongoDB_config3.itings.com 

#mongos
10.10.1.107 MongoDB_mongos1.itings.com  
10.10.1.108 MongoDB_mongos2.itings.com 
10.10.1.109 MongoDB_mongos3.itings.com 
10.10.2.89  MongoDB_mongos4.itings.com  
10.10.2.90  MongoDB_mongos5.itings.com 
10.10.2.91  MongoDB_mongos6.itings.com

軟件準備
1.安裝monodb軟件
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz
tar xvzf mongodb-linux-x86_64-2.4.9.tgz
mv mongodb-linux-x86_64-2.4.9 /usr/local/mongodb

安裝好后,目錄結構如下:
tree mongodb-linux-x86_64-2.4.9
mongodb-linux-x86_64-1.6.2
|-- GNU-AGPL-3.0
|-- README
|-- THIRD-PARTY-NOTICES
-- bin<br/>|-- bsondump<br/>|-- mongo<br/>|-- mongod<br/>|-- mongodump<br/>|-- mongoexport<br/>|-- mongofiles<br/>|-- mongoimport<br/>|-- mongorestore<br/>|-- mongos<br/>|-- mongosniff<br/>-- mongostat
1 directory, 14 files

2.創建數據目錄
根據本例sharding架構圖所示,在各臺sever上創建shard數據文件目錄
Server1:
mkdir -p  /data/mongodb/data/shard11
mkdir -p  /data/mongodb/data/shard21

Server2:
mkdir -p  /data/mongodb/data/shard12
mkdir -p  /data/mongodb/data/shard22

Server3:
mkdir -p  /data/mongodb/data/shard13
mkdir -p  /data/mongodb/data/shard23

Server4:
mkdir -p  /data/mongodb/data/shard31
mkdir -p  /data/mongodb/data/shard41

Server5:
mkdir -p  /data/mongodb/data/shard32
mkdir -p  /data/mongodb/data/shard42
Server6:
mkdir -p  /data/mongodb/data/shard33
mkdir -p  /data/mongodb/data/shard43

配置relica sets
1.配置replica sets:
Server1:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard11 --oplogSize 8192 --logpath /data/mongodb/data/shard11.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard21 --oplogSize 8192 --logpath /data/mongodb/data/shard21.log --logappend --fork

Server2:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard12 --oplogSize 8192 --logpath /data/mongodb/data/shard12.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard22 --oplogSize 8192 --logpath /data/mongodb/data/shard22.log --logappend --fork

Server3:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/data/shard13 --oplogSize 8192 --logpath /data/mongodb/data/shard13.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/data/shard23 --oplogSize 8192 --logpath /data/mongodb/data/shard23.log --logappend --fork

Server4:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard31 --oplogSize 8192 --logpath /data/mongodb/data/shard31.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard41 --oplogSize 8192 --logpath /data/mongodb/data/shard41.log --logappend --fork

Server5:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard32 --oplogSize 8192 --logpath /data/mongodb/data/shard32.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard42 --oplogSize 8192 --logpath /data/mongodb/data/shard42.log --logappend --fork

Server6:
/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard3 --port 27017 --dbpath /data/mongodb/data/shard33 --oplogSize 8192 --logpath /data/mongodb/data/shard33.log --logappend --fork

/usr/local/mongodb/bin/mongod  --shardsvr --replSet shard4 --port 27018 --dbpath /data/mongodb/data/shard43 --oplogSize 8192 --logpath /data/mongodb/data/shard43.log --logappend --fork

初始化replica set
用mongo連接其中一個mongod,執行:
/usr/local/mongodb/bin/mongo --host 10.10.1.107 --port 27017
config = {_id: 'shard1', members: [
{_id: 0, host: 'MongoDB_shard11.itings.com:27017'},
{_id: 1, host: 'MongoDB_shard12.itings.com:27017'},
{_id: 2, host: 'MongoDB_shard13.itings.com:27017'}]
}

rs.initiate(config);

/usr/local/mongodb/bin/mongo --host 10.10.1.107 --port 27018
config = {_id: 'shard2', members: [
{_id: 0, host: 'MongoDB_shard21.itings.com:27018'},
{_id: 1, host: 'MongoDB_shard22.itings.com:27018'},
{_id: 2, host: 'MongoDB_shard23.itings.com:27018'}]
}
rs.initiate(config);

初始化節點
/usr/local/mongodb/bin/mongo --host 10.10.2.89 --port 27017
config = {_id: 'shard3', members: [
{_id: 0, host: 'MongoDB_shard31.itings.com:27017'},
{_id: 1, host: 'MongoDB_shard32.itings.com:27017'},
{_id: 2, host: 'MongoDB_shard33.itings.com:27017'}]
}
rs.initiate(config);

/usr/local/mongodb/bin/mongo --host 10.10.2.89 --port 27018
初始化節點
config = {_id: 'shard4', members: [
{_id: 0, host: 'MongoDB_shard41.itings.com:27018'},
{_id: 1, host: 'MongoDB_shard42.itings.com:27018'},
{_id: 2, host: 'MongoDB_shard43.itings.com:27018'}]
}
rs.initiate(config);
配置三臺config server
Server1機器
mkdir -p  /data/mongodb/data/config
啟動configserver1
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

Server2機器
mkdir -p  /data/mongodb/data/config
啟動configserver2
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

Server4機器
mkdir -p  /data/mongodb/data/config
啟動configserver3
/usr/local/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/data/config --port 20000 --logpath /data/mongodb/data/config.log --logappend --fork

配置mongs
所有機器都啟動mongos
/usr/local/mongodb/bin/mongos --configdb MongoDB_config1.itings.com:20000,MongoDB_config2.itings.com:20000,MongoDB_config3.itings.com:20000 --port 30000 --chunkSize 5 --logpath /data/mongodb/data/mongos.log --logappend --fork
#mongs不需要dbpath
Configuring the Shard Cluster
連接到其中一個mongos進程,并切換到admin數據庫做以下配置
1.連接到mongs,并切換到admin
/usr/local/mongodb/bin/mongo MongoDB_mongos1.itings.com:30000/admin

2.加入shards
db.runCommand( { addshard : "shard1/MongoDB_shard11.itings.com:27017,MongoDB_shard12.itings.com:27017,MongoDB_shard13.itings.com:27017",name:"s1"} );
db.runCommand( { addshard : "shard2/MongoDB_shard21.itings.com:27018,MongoDB_shard22.itings.com:27018,MongoDB_shard23.itings.com:27018",name:"s2"} );
db.runCommand( { addshard : "shard3/MongoDB_shard31.itings.com:27017,MongoDB_shard32.itings.com:27017,MongoDB_shard33.itings.com:27017",name:"s3"} );
db.runCommand( { addshard : "shard4/MongoDB_shard41.itings.com:27018,MongoDB_shard42.itings.com:27018,MongoDB_shard43.itings.com:27018",name:"s4"} );

獲得分片概要信息:
db.printShardingStatus();

3.可選參數
Name:用于指定每個shard的名字,不指定的話系統將自動分配
maxSize:指定各個shard可使用的最大磁盤空間,單位megabytes
樣例:
db.runCommand( { addshard : "shard1/MongoDB_shard11.itings.com:27017,MongoDB_shard12.itings.com:27017,MongoDB_shard13.itings.com:27017",name:"s1",maxSize: 512000} );

獲得分片概要信息:
db.printShardingStatus();
db.user.getShardDistribution();
db.runCommand( { listshards : 1 } );

查看各collection的狀態
db.printCollectionStats()

激活分片樣例
db.runCommand({"enablesharding" : "kaola_play"});
db.runCommand( { shardcollection : "kaola_play.user",key : {_id: 1} } );
附錄:mongodb運行模式介紹
?單機模式
?Replication模式,這又可分為Master-Slave Replication和Replica Sets
?Sharding模式

1.單機模式
這里有目前的mongodb 1.6.2版本作介紹,mongodb安裝后目錄結構如下圖所示非常簡單,所占空間也不到100M

通過執行bin/mongod –dbpath <數據文件目錄>就可以啟動mongodb實例(暫且也稱為實例),與mysql類似,一個mongodb實例里可以創建多個數據庫。同一臺主機也可以起多個mongodb實例

1.Replication模式
MongoDB提供在sever之間異步數據復制功能,用于failover和數據冗余。從1.6版本起多了replica sets功能,1.6版本之前只有Master/Slave replication結構
?Mster-Slave Relication   跟mysql的M/S結構很類似
?Relica Sets        1.6版本開始推出的新功能,能自動故障切換

關于Mster-Slave Relication和 Relica Sets,怎么選擇呢?
Which should I use?
?if using <v1.6 : master/slave  1.6版本之前,那就沒得選,只有M/S
?if need automatic fail-over and recovery (easy administration): replica sets  想做倒自動故障切換,那就用replica sets
?if using --auth (security) or --slavedelay : for now, master/slave  想指定slave延遲時間,就用M/S
?if using sharding : either, but replica sets are best for clusters that are not small  用sharding架構時
?if risk averse : master/slave (replica sets are new to v1.6.0)  顧慮風險的話,用m/s

個人理解,從1.6版本推出relica sets開始,逐漸推薦用relica sets這種模式,能自動故障恢復,sharding模式中也會用到

2.Sharding模式
這是一種可以水平擴展的模式,在數據量很大時特給力,一般企業級應用中都會采用這種架構去構建monodb系統。

要構建一個 MongoDB Sharding Cluster,需要三種角色:
Shard Server: mongod 實例,用于存儲實際的數據塊,實際生產環境中一個shard server可由幾臺機器組個一個relica set承擔,防止主機單點故障
Config Server: mongod 實例,存儲了整個 Cluster Metadata,其中包括 chunk 信息。
Route Server: mongos 實例,前端路由,客戶端由此接入,且讓整個集群看上去像單一數據庫,前端應用可以透明使用。

向AI問一下細節

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

AI

长垣县| 新野县| 上杭县| 杭州市| 郑州市| 通州区| 马尔康县| 梁山县| 马边| 鲁山县| 临清市| 庄河市| 舒城县| 南澳县| 北海市| 郁南县| 广水市| 汉寿县| 丽水市| 保康县| 清流县| 涟水县| 军事| 什邡市| 黄浦区| 湖南省| 永修县| 潜山县| 武功县| 梧州市| 宁蒗| 新建县| 高清| 湘潭县| 裕民县| 凭祥市| 孝义市| 武陟县| 施秉县| 吉木乃县| 潍坊市|