日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongodb分片配置

發布時間:2025/3/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongodb分片配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


#本次配置時間為 2014-11-06 軟件版本為:mongodb-linux-x86_64-2.4.3.tgz ??

linux :centos 5.9 64bit

##############################################################

本次部署分片的方式,只為測試環境: ? ? ? ? ? ? ? ? ? ? ? ? ?#

? ? ? ? ? ? ? 10.8.10.234 ? ?10.8.10.235 ? ?10.8.10.236 ? ? #

shard1 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#

shard2 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#

shard3 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

###############################################################





#每個服務器配置:


mkdir ?-p /data/mongodb/config/data

mkdir ?-p /data/mongodb/config/log


mkdir ?-p /data/mongodb/mongos/log


mkdir ?-p /data/mongodb/shard1/data

mkdir ?-p /data/mongodb/shard1/log


mkdir ?-p /data/mongodb/shard2/data

mkdir ?-p /data/mongodb/shard2/log


mkdir ?-p /data/mongodb/shard3/data

mkdir ?-p /data/mongodb/shard3/log


tar -xvzf mongodb-linux-x86_64-2.4.3.tgz

mv mongodb-linux-x86_64-2.4.3 ?/data/mongodb/mongodb


#每個服務器配置服務:


?/data/mongodb/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/config/data --port 21000 --logpath /data/mongodb/config/log/config.log --fork



#每臺服務器 啟動分片服務:

/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodb/shard1/data --logpath /data/mongodb/shard1/log/shard1.log --fork --nojournal --oplogSize 10



/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal --oplogSize 10



/data/mongodb/mongodb/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodb/shard3/data --logpath /data/mongodb/shard3/log/shard3.log --fork --nojournal --oplogSize 10


# 1臺或者多臺服務器啟動mongos路由,應用程序連接該路由端口。

#mongos 需要等到3臺服務器的配置文件都啟動之后 才能啟動,否則報錯。

/data/mongodb/mongodb/bin/mongos --configdb 10.8.10.234:21000,10.8.10.235:21000,10.8.10.236:21000 --port 20000 --logpath /data/mongodb/mongos/log/mongos.log --fork



#################################

#登入任意服務器執行:


mongo 127.0.0.1:22001?

use admin


設置分片1?


>config = { _id:"shard1", members:[

  {_id:0,host:"10.8.10.234:22001",priority:1},

  {_id:1,host:"10.8.10.235:22001",priority:1},

  {_id:2,host:"10.8.10.236:22001",arbiterOnly:true}

  ]

  }


>rs.initiate(config);


# ,priority:N 是設置master 優先級 可以不配置,建議把分片的master放置在不同的服務器,實現讀寫壓力分流

# arbiterOnly:true 需要配置。省略后,變成1 master + 2個slaver 與方案不符


############################


mongo 127.0.0.1:22002?

use admin


設置分片2?

>config = { _id:"shard2", members:[

  {_id:0,host:"10.8.10.234:22002",priority:1},

  {_id:1,host:"10.8.10.235:22002",priority:1},

  {_id:2,host:"10.8.10.236:22002",arbiterOnly:true}

  ]

  }


>rs.initiate(config);


# ,priority:N 是設置master 優先級 可以不配置。建議把分片的master放置在不同的服務器,實現讀寫壓力分流

# arbiterOnly:true 需要配置 。省略后,變成1master + 2個slaver 與方案不符


#############################


mongo 127.0.0.1:22003?

use admin

設置分片3


?

>config = { _id:"shard3", members:[

  {_id:0,host:"10.8.10.234:22003",priority:1},

  {_id:1,host:"10.8.10.235:22003",priority:1},

  {_id:2,host:"10.8.10.236:22003",arbiterOnly:true}

  ]

  }



>rs.initiate(config);


# ,priority:N 是設置master 優先級 可以不配置。建議把分片的master放置在不同的服務器,實現讀寫壓力分流

# arbiterOnly:true 需要配置。省略后,變成1master + 2個slaver 與方案不符


#########################


連接mongs: ?bin/mongo 127.0.0.1:20000

#使用admin數據庫 user admin

串聯路由服務器與分配副本集1


db.runCommand( { addshard : "shard1/10.8.10.234:22001,10.8.10.235:22001,10.8.10.236:22001"});


串聯路由服務器與分配副本集2

db.runCommand( { addshard : "shard2/10.8.10.234:22002,10.8.10.235:22002,10.8.10.236:22002"});


串聯路由服務器與分配副本集3

db.runCommand( { addshard : "shard3/10.8.10.234:22003,10.8.10.235:22003,10.8.10.236:22003"});



#查看分片服務器的配置

?db.runCommand( { listshards : 1 } );


?備注:每個分片副本集的仲裁節點結果不列出來

##############################


###手動選定master備注:


在配置分片的時候 添加優先級可以手動選擇master


分片配置后之后,使用如下命令,在分片的主節點登錄,可以將members[1] 提升為Master。

rs.status();

rs.conf();

cfg=rs.conf();

cfg.members[0].priority=1

cfg.members[1].priority=2

#cfg.members[2] 仲裁機不用設置

rs.reconfig(cfg);



創建數據測試:

  #指定testdb分片生效

  db.runCommand( { enablesharding :"testdb"});

  #指定數據庫里需要分片的集合和片鍵

  db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )

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


bin/mongo 127.0.0.1:20000

  #使用testdb use testdb;

? ? #插入測試數據

  for (var i = 1; i <= 100000; i++)  db.table1.save({id:i,"test1":"testval1"});


  #查看分片情況如下,部分無關信息省掉了

  db.table1.stats();

?看到數據分到3個分片,各自分片數量為: shard1 “count” : 42183,shard2 “count”: 38937,shard3 “count” : 18880。已經成功了!不過分的好像不是很均勻,所以這個分片還是很有講究的,后續再深入討論。



為了充分利用3臺服務器資源,緩解磁盤Io ,以上方案可以如下變通:

##############################################################

在生產環境中,可以如下部署: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#

? ? ? ? ? ? ? 10.8.10.234 ? ?10.8.10.235 ? ?10.8.10.236 ? ? #

shard1 分片 ? ? ? master ? ? ? ?slaver ? ? ? arbiterOnly ? ?#

shard2 分片 ? ? ?arbiterOnly ? ?master ? ? ? ?slaver ? ? ? ?#

shard3 分片 ? ? ? slaver ? ? ?arbiterOnly ? ? master ? ? ? ?#

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

###############################################################


轉載于:https://blog.51cto.com/2574526/1573855

總結

以上是生活随笔為你收集整理的mongodb分片配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。