如何搭建服務器集群,MongoDB在單機上搭建分片副本集群(windows)

 2023-11-05 阅读 22 评论 0

摘要:------------------------------1.安裝MongoDB...... ------------------------------2.準備好文件夾 --config:配置文件夾mkdir F:\work\MongoDB\mongodb\data\mongodb\config20001mkdir F:\work\MongoDB\mongodb\data\mongodb\config20002mkdir F:\work\MongoDB\mongodb\dat

------------------------------
1.安裝MongoDB
...
...

------------------------------
2.準備好文件夾

--config:配置文件夾
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20001
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20002
mkdir F:\work\MongoDB\mongodb\data\mongodb\config20003

如何搭建服務器集群,--shard1:分片1文件夾
mkdir F:\work\MongoDB\mongodb\data\shard37017
mkdir F:\work\MongoDB\mongodb\data\shard37018
mkdir F:\work\MongoDB\mongodb\data\shard37019

--shard2:分片2文件夾
mkdir F:\work\MongoDB\mongodb\data\shard37027
mkdir F:\work\MongoDB\mongodb\data\shard37028
mkdir F:\work\MongoDB\mongodb\data\shard37029

--logs:日志文件夾
mkdir F:\work\MongoDB\mongodb\data\mongodb\logs

------------------------------
3.創建日志文件
f:
cd F:\work\MongoDB\mongodb\data\mongodb\logs
--config servers日志
echo>configsvr_20001.log
echo>configsvr_20002.log
echo>configsvr_20003.log

--mongos servers日志
echo>mongos40004.log

--shard servers shard1分片副本集日志
echo>shard_m11_37017.log
echo>shard_m11_37027.log
echo>shard_m11_37037.log

linux集群搭建?--shard servers shard2分片副本集日志
echo>shard_m11_37018.log
echo>shard_m11_37028.log
echo>shard_m11_37038.log

------------------------------
4.啟動配置進程(config servers)
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20001 --port 20001 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20001.log --logappend
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20002 --port 20002 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20002.log --logappend
mongod --configsvr --dbpath F:\work\MongoDB\mongodb\data\mongodb\config20003 --port 20003 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\configsvr_20003.log --logappend

------------------------------
5.啟動路由進程(mongos)
F:\work\MongoDB\mongodb\bin\mongos --configdb 127.0.0.1:20001,127.0.0.1:20002,127.0.0.1:20003 --port 40000 --chunkSize 64 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\mongos40004.log --logappend

------------------------------
6.啟動分片進程(shard servers)
--啟動shard1副本集
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37017 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37017 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37017.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37027 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37027 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37027.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard1 --port 37037 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37037 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37037.log --logappend

--啟動shard2副本集
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37018 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37018 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37018.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37028 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37028 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37028.log --logappend
F:\work\MongoDB\mongodb\bin\mongod --shardsvr --replSet shard2 --port 37038 --dbpath F:\work\MongoDB\mongodb\data\mongodb\shard37038 --oplogSize 2048 --logpath F:\work\MongoDB\mongodb\data\mongodb\logs\shard_m11_37038.log --logappend

------------------------------
7.開始設置分片副本集
--shard1副本集
a.設置第一個分片副本集,必須使用admin數據庫,登錄命令如下
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37017/admin

單機軟件與分布式軟件、b.定義副本集配置(priority:被選舉為主節點的優先級越大越高;arbiterOnly:仲裁者節點,只投票,不存儲及讀寫)
config = { _id:"shard1",members:[
{_id:0,host:"127.0.0.1:37017",priority:1},
{_id:1,host:"127.0.0.1:37027",priority:2},
{_id:2,host:"127.0.0.1:37037",arbiterOnly:true}
]
}

c.初始化副本集命令
rs.initiate(config)

--shard2副本集
a.設置第二個分片副本集,必須使用admin數據庫,登錄命令如下
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37018/admin

b.定義副本集配置(priority:被選舉為主節點的優先級越大越高;arbiterOnly:仲裁者節點,只投票,不存儲及讀寫)
config = { _id:"shard2",members:[
{_id:0,host:"127.0.0.1:37018",priority:1},
{_id:1,host:"127.0.0.1:37028",priority:2},
{_id:2,host:"127.0.0.1:37038",arbiterOnly:true}
]
}

c.初始化副本集命令
rs.initiate(config)

------------------------------
8.檢查下副本狀態:
F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:37028/admin
rs.status();

單機防御和集群防御、------------------------------
9.設置自動分片生效
配置服務器,路由服務器,各個分片服務器,以上操作配置完畢
不過應用程序連接到 mongos 路由服務器并不能使用分片機制,還需要在程序里設置分片配置,讓分片生效。
a.連接到mongs,并切換到admin
新開命令行,輸入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin

b.串聯路由服務器與分配副本集命令
db.runCommand( { addshard :"shard1/127.0.0.1:37017,127.0.0.1:37027,127.0.0.1:37037"});
db.runCommand( { addshard :"shard2/127.0.0.1:37018,127.0.0.1:37028,127.0.0.1:37038"});

------------------------------
10.查看分片服務器配置
db.runCommand({listshards : 1 });

執行結果
mongos> db.runCommand({listshards : 1});
{
"shards": [
{
"_id": "shard1",
"host": "shard1/127.0.0.1:37017,127.0.0.1:37027"
},
{
"_id": "shard2",
"host": "shard2/127.0.0.1:37018,127.0.0.1:37028"
}
],
"ok": 1
}

PS:因為37037、37038是每個分片副本集的仲裁節點,所以在上面結果沒有列出來。

查看均衡器,默認是打開的:
sh.getBalancerState();

------------------------------
11.如何讓錄入的數據自動分片
希望插入數據,數據能夠自動分片,那么還需要做如下工作:
連接在mongos上,準備讓指定的數據庫、指定的集合分片生效。
新開命令行,輸入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin

a.指定分片生效
db.runCommand( { enablesharding:"app"});--app是指定的數據庫,隨便指定,沒有會自建,插入數據才會生效數據庫

redis集群搭建。b.指定數據庫里需要分片的集合和片鍵
db.runCommand( { shardcollection :"app.download",key : {name: 1} } )
app:數據庫
download:數據集collection,也就是表
name:表里的分片鍵

ex.根據name自動分片到 shard1,shard2,shard3 上面去。要這樣設置是因為不是所有 mongodb 的數據庫和表都需要分片!

------------------------------
12.配置片鍵
需要進入admin數據庫里面去執行配置命令:
新開命令行,輸入:F:\work\MongoDB\mongodb\bin\mongo 127.0.0.1:40000/admin
use app
show collections
for(var i = 0;i < 10; i ++){db.download.insert({"name":i})}

--建立索引
db.download.createIndex({"name": "hashed" })
sh.shardCollection("app.download", { "name": "hashed"})

--查看狀態
db.stats()
db.download.stats()
關注count信息,及shard1和shard2種的count信息即可知道分片是否成功

--查看sharding分片狀態
db.printShardingStatus();

mongodb 分片集群,?

轉載于:https://www.cnblogs.com/a-horse-mosaic/p/9284010.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/166519.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息