亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Mongodb基操--分片群集操作詳解

發布時間:2020-02-27 06:13:46 來源:網絡 閱讀:5701 作者:一介余民 欄目:MongoDB數據庫
MongoDB分片介紹
分片的目的

  高數據量和吞吐量的數據庫應用會對單機的性能造成較大壓力,大的查詢量會將單機的CPU耗盡,大的數據量對單機的存儲壓力較大,最終會耗盡系統的內存而將壓力轉移到磁盤IO上。

  為了解決這些問題,有兩個基本的方法: 垂直擴展和水平擴展。

垂直擴展:增加更多的CPU和存儲資源來擴展容量。

水平擴展:將數據集分布在多個服務器上。水平擴展即分片。

         分片為應對高吞吐量與大數據量提供了方法。使用分片減少了每個分片需要處理的請求數,因此,通過水平擴展,集群可以提高自己的存儲容量和吞吐量。舉例來說,當插入一條數據時,應用只需要訪問存儲這條數據的分片,使用分片減少了每個分片存儲的數據。

分片集群架構

(1)mongos :數據路由,和客戶端打交道的模塊。mongos本身沒有任何數據,他也不知道該怎么處理這數據,去找config server

(2)config server:所有存、取數據的方式,所有shard節點的信息,分片功能的一些配置信息。可以理解為真實數據的元數據。

(3)shard:真正的數據存儲位置,以chunk為單位存數據。

 

架構圖  

Mongodb基操--分片群集操作詳解

 

環境說明

系統版本:CentOS Linux release 7.5.1804 (Core)

防火墻SE關閉

mongodb版本:mongodb-linux-x86_64-3.2.1.tgz

 

前期準備,在root用戶下操作

采用Mongodb多實例進行

解壓移動mongodb安裝包

tar zxvf mongodb-linux-x86_64-3.2.1.tgz -C /opt/

cd /opt/
mv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb

建立軟連接方便管理

cd /usr/local/mongodb/
cd bin/
ln -s /usr/local/mongodb/bin/mongo /usr/bin/mongo
ln -s /usr/local/mongodb/bin/mongod /usr/bin/mongod

創建所需目錄

mkdir -p /data/mongodb/mongodb{1,2,3,4}
cd /data/mongodb/
mkdir logs
cd logs/
touch mongodb{1,2,3,4}.log
chmod 777 *.log

優化進程以及打開文件數量

ulimit -u 25000
ulimit -n 25000

編輯配置文件(修改加粗項目)

cd /usr/local/mongodb/bin/
vim mongodb1.conf

port=37017
dbpath=/data/mongodb/mongodb1
logpath=/data/mongodb/logs/mongodb1.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
configsvr=true      //指定為配置服務器

內存分攤:某節點內存不足時,從其他節點分配內存


sysctl -w vm.zone_reclaim_mode=0
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

 

復制修改2,3的配置文件(修改粗體處)

cp -p mongodb1.conf mongodb2.conf
vim mongodb2.conf
port=47017
dbpath=/data/mongodb/mongodb2
logpath=/data/mongodb/logs/mongodb2.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true

cp -p mongodb2.conf mongodb3.conf
vim mongodb3.conf
port=47018
dbpath=/data/mongodb/mongodb3
logpath=/data/mongodb/logs/mongodb3.log
logappend=true
fork=true
maxConns=5000
storageEngine=mmapv1
shardsvr=true

啟動服務

mongod -f mongodb1.conf
mongod -f mongodb2.conf
mongod -f mongodb3.conf

開啟路由模式


./mongos --port 27017 --fork --logpath=/usr/local/mongodb/bin/route.log --configdb 192.168.137.13:37017 --chunkSize 1

 

到此復制集配置完成

測試

登陸

[root@cent bin]# mongo
MongoDB shell version: 3.2.1
connecting to: test
Welcome to the MongoDB shell.

mongos>                                   //這里顯示用mongs登陸成功(配置服務器)

查看是否又分片服務器

mongos> sh.status()
]--- Sharding Status ---
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("5b9e394051c099916cc7b236")
}
  shards:                               //這里沒有東西,那就是還沒有創建分片服務器
  active mongoses:
    "3.2.1" : 1
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours:
        No recent migrations
  databases:

添加分片服務器


mongos> sh.addShard("192.168.137.13:47017")                                      //添加47017
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> sh.addShard("192.168.137.13:47018")                                     //添加47018
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> sh.status()
--- Sharding Status ---
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("5b9e394051c099916cc7b236")
}
  shards:
    {  "_id" : "shard0000",  "host" : "192.168.137.13:47017" }                   //看到添加成功了
    {  "_id" : "shard0001",  "host" : "192.168.137.13:47018" }
  active mongoses:
    "3.2.1" : 1
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours:
        No recent migrations
  databases:

給數據庫添加一些東西,看看它是否會分片。

mongos> use mood
switched to db mood
mongos> for(var i=1;i<=10000;i++)db.info.insert({"id":i,"name":"makee"+i})
WriteResult({
    "writeError" : {
        "code" : 70,
        "errmsg" : "unable to target write op for collection mood.info :: caused by :: ShardNotFound No shards found"
    }
})
mongos> sh.status()
--- Sharding Status ---
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("5ba24eeef6c5933feb7b6cf5")
}
  shards:
  active mongoses:
    "3.2.1" : 1
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours:
        No recent migrations
  databases:                                     //并沒有

因為我們需要啟動分片才可以,下面啟動它

mongos> sh.enableSharding("mood")        //開啟數據庫分片
{ "ok" : 1 }
mongos> db.info.createIndex({"id":1})            //創建表索引
{
    "raw" : {
        "192.168.137.13:47017" : {
            "createdCollectionAutomatically" : false,
            "numIndexesBefore" : 1,
            "numIndexesAfter" : 2,
            "ok" : 1
        }
    },
    "ok" : 1
}
mongos> sh.shardCollection("mood.info",{"id":1})   //表分片

{ "collectionsharded" : "mood.info", "ok" : 1 }
mongos> sh.status()         //查看結果
--- Sharding Status ---
  sharding version: {
    "_id" : 1,
    "minCompatibleVersion" : 5,
    "currentVersion" : 6,
    "clusterId" : ObjectId("5ba3b64dcc3cc1318414a128")
}
  shards:
    {  "_id" : "shard0000",  "host" : "192.168.137.13:47017" }
    {  "_id" : "shard0001",  "host" : "192.168.137.13:47018" }
  active mongoses:
    "3.2.1" : 1
  balancer:
    Currently enabled:  yes
    Currently running:  no
    Failed balancer rounds in last 5 attempts:  0
    Migration Results for the last 24 hours:
        1 : Success
  databases:
    {  "_id" : "mood",  "primary" : "shard0000",  "partitioned" : true }
        mood.info
            shard key: { "id" : 1 }
            unique: false
            balancing: true
            chunks:
                shard0000    2
                shard0001    1
            { "id" : { "$minKey" : 1 } } -->> { "id" : 4682 } on : shard0001 Timestamp(2, 0)        //已經開始分片了
            { "id" : 4682 } -->> { "id" : 9364 } on : shard0000 Timestamp(2, 1)
            { "id" : 9364 } -->> { "id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 2)

向AI問一下細節

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

AI

保靖县| 八宿县| 金湖县| 越西县| 彩票| 文化| 榆林市| 囊谦县| 泸水县| 南充市| 香河县| 古浪县| 肇东市| 罗城| 普安县| 金湖县| 昆明市| 佛教| 满城县| 渑池县| 海丰县| 华阴市| 抚宁县| 松原市| 南康市| 兴业县| 龙川县| 衡阳县| 汝城县| 溆浦县| 抚松县| 乌审旗| 台中县| 泸定县| 黄梅县| 溧阳市| 磴口县| 龙门县| 九台市| 清水县| 讷河市|