欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mongo復制集+分片實現海量數據存儲

     MongoDB Auto-Sharding 解決了海量存儲和動態(tài)擴容的問題,但離實際生產環(huán)境所需的高可

忠縣網站建設公司創(chuàng)新互聯建站,忠縣網站設計制作,有大型網站制作公司豐富經驗。已為忠縣成百上千提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站制作要多少錢,請找那個售后服務好的忠縣做網站的公司定做!

靠、高可用還有些距離,所以有了” Replica Sets + Sharding”的解決方案:

     Shard:

     使用 Replica Sets,確保每個數據節(jié)點都具有備份、自動容錯轉移、自動恢復能力。

     Config:

     使用3 個配置服務器,確保元數據完整性

     Route:

     使用3 個路由進程,實現負載平衡,提高客戶端接入性能


基本結構如下:



  主機      IP         服務及端口


ServerA

 

192.168.10.150

   mongod shard1_1:27017

   mongod shard2_1:27018

   mongod config1:20000

   mongs1:30000

ServerB


192.168.10.151

   mongod shard1_2:27017

   mongod shard2_2:27018

   mongod config2:20000

   mongs2:30000


ServerC


192.168.10.154

   mongod shard1_3:27017

   mongod shard2_3:27018

   mongod config3:20000

   mongs3:30000

創(chuàng)建數據目錄


serverA:

mkdir -p /data/shardset/{shard1_1,shard2_1,config}/


serverB:

mkdir -p /data/shardset/{shard1_2,shard2_2,config}/


serverC

mkdir -p /data/shardset/{shard1_3,shard2_3,config}/


配置復制集


配置shard1所用到的Replica Sets


serverA:

mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shardset/shard1_1 --logpath /data/shardset/shard1_1/shard1_1.log --logappend --fork


serverB:

mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shardset/shard1_2 --logpath /data/shardset/shard1_2/shard1_2.log --logappend --fork

serverC:

mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/shardset/shard1_3 --logpath /data/shardset/shard1_3/shard1_3.log --logappend --fork

用mongo 連接其中一臺機器的27017 端口的mongod,初始化Replica Sets“shard1”,執(zhí)行:

[root@template ~]# mongo --port 27017

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:27017/test

>config = {_id: 'shard1', members: [ {_id: 0, host: '192.168.10.150:27017'},{_id: 1, host: '192.168.10.151:27017'},{_id: 2, host: '192.168.10.154:27017'}]}

{

        "_id" : "shard1",

        "members" : [

                {

                        "_id" : 0,

                        "host" : "192.168.10.150:27017"

                },

                {

                        "_id" : 1,

                        "host" : "192.168.10.151:27017"

                },

                {

                        "_id" : 2,

                        "host" : "192.168.10.154:27017"

                }

        ]

}

> rs.initiate(config)

{

        "info" : "Config now saved locally.  Should come online in about a minute.",

        "ok" : 1

}



配置shard2所用到的Replica Sets


ServerA:

mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shardset/shard2_1 --logpath /data/shardset/shard2_1/shard2_1.log --logappend --fork


ServerB:

mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shardset/shard2_2 --logpath /data/shardset/shard2_2/shard2_2.log --logappend --fork


ServerC:

mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/shardset/shard2_3 --logpath /data/shardset/shard2_3/shard2_3.log --logappend --fork

 

用mongo 連接其中一臺機器的27018 端口的mongod,初始化Replica Sets “shard2”,執(zhí)行:

[root@template ~]# mongo --port 27018

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:27018/test

>config = {_id: 'shard2', members: [ {_id: 0, host: '192.168.10.150:27018'},{_id: 1, host: '192.168.10.151:27018'},{_id: 2, host: '192.168.10.154:27018'}]}

{

        "_id" : "shard2",

        "members" : [

                {

                        "_id" : 0,

                        "host" : "192.168.10.150:27018"

                },

                {

                        "_id" : 1,

                        "host" : "192.168.10.151:27018"

                },

                {

                        "_id" : 2,

                        "host" : "192.168.10.154:27018"

                }

        ]

}

>  rs.initiate(config)

{

        "info" : "Config now saved locally.  Should come online in about a minute.",

        "ok" : 1

}



配置3Config Server


Server ABC上執(zhí)行:

mongod --configsvr --dbpath /data/shardset/config --port 20000 --logpath/data/shardset/config/config.log --logappend --fork


配置3Route Process


Server ABC上執(zhí)行:

mongos --configdb 192.168.10.150:20000,192.168.10.151:20000,192.168.10.154:20000 --port 30000 --chunkSize 1 --logpath /data/shardset/mongos.log --logappend --fork



配置Shard Cluster


連接到其中一臺機器的端口30000 的mongos 進程,并切換到admin 數據庫做以下配置:

[root@template ~]# mongo --port 30000

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:30000/test

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

        http://docs.mongodb.org/

Questions? Try the support group

        http://groups.google.com/group/mongodb-user

mongos>

mongos> use admin

switched to db admin

mongos> db.runCommand({addshard:"shard1/192.168.10.150:27017,192.168.10.151:27017,192.168.10.154:27017"});

{ "shardAdded" : "shard1", "ok" : 1 }

mongos> db.runCommand({addshard:"shard2/192.168.10.150:27018,192.168.10.151:27018,192.168.10.154:27018"});

{ "shardAdded" : "shard2", "ok" : 1 }

mongos>

激活數據庫及集合的分片

mongos> db.runCommand({ enablesharding:"test" })

{ "ok" : 1 }

mongos> db.runCommand({ shardcollection: "test.users", key: { _id:1 }})

{ "collectionsharded" : "test.users", "ok" : 1 }

mongos>


查看配置

mongos> use admin

switched to db admin

mongos> db.runCommand({listshards: 1})

{

        "shards" : [

                {

                        "_id" : "shard1",

                        "host" : "shard1/192.168.10.150:27017,192.168.10.151:27017,192.168.10.154:27017"

                },

                {

                        "_id" : "shard2",

                        "host" : "shard2/192.168.10.150:27018,192.168.10.151:27018,192.168.10.154:27018"

                }

        ],

        "ok" : 1

}


驗證Sharding正常工作


mongos> use test

switched to db test

mongos> for(var i=1;i<=200000;i++) db.users.insert({id:i,addr_1:"Beijing",addr_2:"Shanghai"});

WriteResult({ "nInserted" : 1 })

mongos> db.users.stats()

{

        "sharded" : true,

        "systemFlags" : 1,

        "userFlags" : 1,

        "ns" : "test.users",

        "count" : 200000,

        "numExtents" : 13,

        "size" : 22400000,

        "storageSize" : 33689600,

        "totalIndexSize" : 6908720,

        "indexSizes" : {

                "_id_" : 6908720

        },

        "avgObjSize" : 112,

        "nindexes" : 1,

        "nchunks" : 13,

        "shards" : {

                "shard1" : {

                        "ns" : "test.users",

                        "count" : 147600,

                        "size" : 16531200,

                        "avgObjSize" : 112,

                        "storageSize" : 22507520,

                        "numExtents" : 7,

                        "nindexes" : 1,

                        "lastExtentSize" : 11325440,

                        "paddingFactor" : 1,

                        "systemFlags" : 1,

                        "userFlags" : 1,

                        "totalIndexSize" : 4807488,

                        "indexSizes" : {

                                "_id_" : 4807488

                        },

                        "ok" : 1

                },

                "shard2" : {

                        "ns" : "test.users",

                        "count" : 52400,

                        "size" : 5868800,

                        "avgObjSize" : 112,

                        "storageSize" : 11182080,

                        "numExtents" : 6,

                        "nindexes" : 1,

                        "lastExtentSize" : 8388608,

                        "paddingFactor" : 1,

                        "systemFlags" : 1,

                        "userFlags" : 1,

                        "totalIndexSize" : 2101232,

                        "indexSizes" : {

                                "_id_" : 2101232

                        },

                        "ok" : 1

                }

        },

        "ok" : 1

}


ServerA:

[root@template ~]# mongo --port 27017

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:27017/test

shard1:PRIMARY> show dbs

admin  (empty)

local  4.076GB

test   0.078GB

shard1:PRIMARY>


ServerB:

[root@template ~]# mongo --port 27017

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:27017/test

shard1:SECONDARY>

shard1:SECONDARY> show dbs

admin  (empty)

local  4.076GB

test   0.078GB

shard1:SECONDARY>

默認從庫是不可查詢的,但是執(zhí)行如下語句則可以查詢。

rs.slaveOk();

或者

db.getMongo().setSlaveOk()

做讀寫分離時上述語句必不可少

 

ServerC:

[root@template ~]# mongo --port 27017

MongoDB shell version: 2.6.0

connecting to: 127.0.0.1:27017/test

shard1:SECONDARY> show dbs

admin  (empty)

local  4.076GB

test   0.078GB

shard1:SECONDARY>

如果想在線切換主從庫,需要更改優(yōu)先級:

[root@template ~]# mongo --port 27017

需要在主庫中設置

conf=rs.conf()

conf.members[0].priority=2

conf.members[1].priority=5

conf.members[2].priority=1

rs.reconfig(conf)




查看節(jié)點

db.status()

或者

db.isMaster()


查看數據是否開啟分片

use config

db.databases.find()


增加節(jié)點

db.remove("192.168.10.155:27017")


刪除節(jié)點

db.add("192.168.10.154:27017")


增加仲裁節(jié)點

rs.addArb("192.168.10.155:27017")

rs.isMaster()

"arbiters" : [

                "192.168.10.155:27017"

        ],


創(chuàng)建用戶

use admin
db.createUser(
  {
    user: "adminUserName",
    pwd: "userPassword",
    roles:
    [
      {
        roles: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }

)

本文題目:mongo復制集+分片實現海量數據存儲
鏈接分享:http://chinadenli.net/article34/ipsdpe.html

成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站微信小程序域名注冊網站收錄用戶體驗面包屑導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

h5響應式網站建設