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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

MongoDB-集群搭建

發布時間:2024/4/13 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB-集群搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

????? 搭建一個MongoDB的集群,這個環境只是內網的一個測試環境,分片沒有使用副本集,配置并分配好端口后,開啟集群的身份驗證功能,在開啟集群權限時,有些注意事項,在搭建過程中會著重標出。

一、集群規劃

????? 首先有三臺服務器分別為192.168.0.230,192.168.0.232,192.168.0.234。集群規劃如下:3個 用來分片,3個 mongos路由服務,3個 config配置服務器。

? ? ?注意:保證三臺服務器的端口是通的。

1.1端口分配

????? 端口號分配情況,所有的分片都使用27017端口,所有的配置都使用20000端口,所有的mongos路由服務都使用30000端口,每個服務器具體信息如下:

表1-1 端口號分配表

?

192.168.0.230

192.168.0.232

192.168.0.234

mongos

30000

30000

30000

config

20000

20000

20000

sharing

27017

27017

27017

1.2集群整體規劃圖

?

二、集群啟動和配置

2.1 啟動集群服務器

2.1.1 創建數據文件目錄

230服務器分片1 # mkdir –p /data/mongodb/config /data/mongodb/shard1_1 232服務器分片2 # mkdir –p /data/mongodb/config /data/mongodb/shard1_2 234服務器分片3 # mkdir –p /data/mongodb/config /data/mongodb/shard1_3

然后按照順序啟動,分片服務器,配置服務器和路由服務器

2.1.2 啟動分片服務

230服務器: mongod --shardsvr --port 27017 --dbpath /data/mongodb/shard1_1 --logpath /data/mongodb/shard1_1/rs0.log --logappend --directoryperdb --fork 232服務器: mongod --shardsvr --port 27017 --dbpath /data/mongodb/shard1_2 --logpath /data/mongodb/shard1_2/rs0.log --logappend --directoryperdb --fork 234服務器: mongod --shardsvr --port 27017 --dbpath /data/mongodb/shard1_3 --logpath /data/mongodb/shard1_3/rs0.log --logappend --directoryperdb --fork

然后在三臺服務器上各自啟動配置服務器和路由服務器:

2.1.3 啟動配置服務器

三臺服務器分別執行:

mongod --configsvr --port 20000 --dbpath /data/mongodb/config --logpath /data/mongodb/config.log --logappend --directoryperdb –fork

2.1.4 啟動路由服務

三臺服務器分別執行:

mongos --configdb 192.168.0.230:20000, 192.168.0.232:20000, 192.168.0.234:20000 --port=30000 --chunkSize=1
--logpath=/data/mongogdb/mongos.log --logappend --fork

注意:這里指定了—chunkSize分片塊大小為1M,默認為64M,是為了能夠更快的實現分片。

2.2 配置集群服務器

2.2.1 配置分片

????? 連接到任意服務器的路由服務30000端口,把三個分片服務器添加到集群配置中去:

?添加分片服務器

# mongo –port 30000 mongos> use admin switched to db admin mongos> db.runCommand({"addshard":"192.168.0.230:27017"}) mongos> db.runCommand({"addshard":"192.168.0.232:27017"}) mongos> db.runCommand({"addshard":"192.168.0.234:27017"})

現在執行sh.status()就能看到集群的分片情況。分片環境已經配置完成,但還沒開啟集合的分片,接下來測試一個集合的分片功能。

2.2.2 激活并驗證分片功能

? ? ?集合開啟分片之前,需要選擇一個片鍵來指定分片規則,片鍵的選擇直接影響數據分發的效果,關于片鍵的選擇策略,具體問題具體分析,后續會簡單整理一下。

注意:分片片鍵必須是索引

激活數據庫foo的分片功能,并把其中的bar集合按照timestamp升序片鍵開啟分片,操作如下:

# mongo –port 30000 mongos> sh.enableSharding("foo") { "ok" : 1 } mongos> sh.shardCollection("foo.bar",{"timestamp":1}) { "collectionsharded" : "foo.bar", "ok" : 1 }

這時使用sh.status()命令,就可以看到相應的集合已經開啟了分片

mongos> for(var i=1; i<=500000; i++){ db.bar.insert({"inc":i, "timestamp":new Date()}) }

往數據庫中插入50萬數據,使用sh.status()查看數據已經均勻分布在各個分片上。

三、開啟集群身份驗證

? ? ? 默認情況下,MongoDB是不啟動訪問控制的,對于單機模式下,只需在啟動mongod服務時添加--auth參數即可。但是在分片集群下只能使用keyfile的方式啟動訪問控制。

首先,生成一個keyfile文件,并把這個文件復制到其他服務器上。

# openssl rand -base64 741 > /data/mongodb/mongodb-keyfile # chmod 600 mongodb-keyfile 重要

注意:在啟用訪問控制之前,要保證路由服務和每個分片服務器已經存在一個管理員用戶,用于添加用戶和關閉集群使用。

添加用戶也很簡單,分別連到3000和27017端口在admin數據庫執行以下命令:

mongos> use admin switched to db admin mongos> db.createUser({user:"admin", pwd:"111111", roles:[{role: "root", db: "admin" }]}) Successfully added user: {"user" : "admin","roles" : [{"role" : "root","db" : "admin"}] }

? ? ? 接下來開啟集群的訪問控制,這里我講keyfile文件拷貝到了/data/mongodb/keyfile目錄下,在啟動每個服務時(分片服務,配置服務,路由服務)添加--keyFile /data/mongodb/keyfile參數即可。

如啟動路由服務時
mongos
--configdb 192.168.0.230:20000, 192.168.0.232:20000, 192.168.0.234:20000 --port=30000 --chunkSize=1 --logpath=/data/mongogdb/mongos.log

--logappend –fork --keyFile /data/mongodb/keyfile

之后在連接到集群時,操作之前就需要驗證用戶身份了,其中驗證有兩種方式:

一是在連接時進行驗證:

mongo --port 30000 -u "admin" -p "111111" --authenticationDatabase "admin"

二是在連接后進行驗證:

# mongo --port 30000 mongos> use admin switched to db admin mongos> db.auth("admin", "111111")

驗證成功后就可以進行相應的操作了。

四、集群中一些問題

1 關閉集群服務器

? ? ?關閉順序按照路由服務,配置服務,分片服務,分別連接到對應端口的admin數據庫,使用db.shutdownServer()關閉服務。如果開啟了身份驗證,這里就用到了預先建好的admin用戶

2 集群某個服務起不來

????? 比如配置服務或分片服務啟動錯誤,可能是上次退出不正常,這是可以選擇修復數據,也可直接把數據文件中的mongod.lock文件刪除。

3 數據沒分片

? ? ? 首先保證集合開啟了分片,然后查看一下config配置數據庫中配置的chunkSize是多少,是不是數據不夠大,最后查看一下服務器的時間,如果服務器的時間相差比較大,也會導致分片失敗,服務器時間差最好保持在30秒以內。

?

?

轉載于:https://www.cnblogs.com/cwane/p/5428436.html

總結

以上是生活随笔為你收集整理的MongoDB-集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

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