本文主要介紹 MongoDB 的安裝,使用到的軟體版本:MongoDB 5.0.5、Centos 7.6,
1、單機安裝
1.1、下載并解壓 MongoDB
下載地址:https://www.mongodb.com/try/download/community
解壓:tar zxvf mongodb-linux-x86_64-rhel70-5.0.5.tgz
1.2、創建資料及日志目錄
cd $MONGODB_HOME
mkdir data
mkidr logs
1.3、啟動
cd $MONGODB_HOME/bin
./mongod --bind_id 10.40.96.10,127.0.0.1 --dbpath ../data --logpath ../logs/mongod.log --fork
--dbpath:資料存盤目錄
--logpath:日志檔案
mongod 命令的更多引數可使用 mongod -h 來查看,
1.4、停止
通過 mongo 連接 MongoDB 的服務,然后執行停止的命令,
cd $MONGODB_HOME/bin
./mongo > use admin switched to db admin > db.shutdownServer()
2、Master-Slave 主從方式安裝
主從方式安裝時先啟動主機節點,再啟動被備節點;啟動方式如下:
./mongod --master --bind_ip <ip> --dbpath <dbpath> --logpath <logapth> #主節點
./mongod --slave --bind_ip <ip> --source <masterip:masterport> --dbpath <dbpath> --logfile <logfile> #備節點
新版的 MongoDB 已經不支持這種部署模式了(運行時會提示:Master/slave replication is no longer supported),這里就不詳細介紹了,
3、Replica Set 副本集方式安裝
3.1、規劃
| ip | 埠 | 角色 | MongoDB安裝目錄 |
| 10.49.196.10 | 27017 | Primary | /home/hadoop/app/mongodb-5.0.5 |
| 10.49.196.11 | 27017 | Secondary | /home/hadoop/app/mongodb-5.0.5 |
| 10.49.196.12 | 27017 | Secondary | /home/hadoop/app/mongodb-5.0.5 |
| 10.49.196.12 | 27018 | Arbiter | /home/hadoop/app/mongodb-5.0.5-27018 |
3.2、配置
使用組態檔來啟動 MongoDB,各 MongoDB 實體的組態檔(mongod.conf)如下:
10.49.196.10:27017
dbpath=/home/hadoop/app/mongodb-5.0.5/data logpath=/home/hadoop/app/mongodb-5.0.5/logs/mongo.log fork=true replSet=rs0 bind_ip=127.0.0.1,10.49.196.10
10.49.196.11:27017
dbpath=/home/hadoop/app/mongodb-5.0.5/data logpath=/home/hadoop/app/mongodb-5.0.5/logs/mongo.log fork=true replSet=rs0 bind_ip=127.0.0.1,10.49.196.11
10.49.196.12:27017
dbpath=/home/hadoop/app/mongodb-5.0.5/data logpath=/home/hadoop/app/mongodb-5.0.5/logs/mongo.log fork=true replSet=rs0 bind_ip=127.0.0.1,10.49.196.12
10.49.196.12:27018
dbpath=/home/hadoop/app/mongodb-5.0.5-27018/data
logpath=/home/hadoop/app/mongodb-5.0.5-27018/logs/mongo.log fork=true replSet=rs0 port=27018 bind_ip=127.0.0.1,10.49.196.12
注:資料目錄和日志目錄需要自己創建,
3.3、啟動
在各機器機器上使用如下命令來啟動 MongoDB:
cd $MONGODB_HMOE/bin
./mongod --config ./mongod.conf
3.4、初始化 Replica Set
連接 Primary,Secondary 的任一節點,執行初始化操作:
> use admin > cfg = {_id: "rs0",members:[{_id: 0,host: '10.49.196.10:27017',priority: 3},{_id: 1,host: '10.49.196.11:27017',priority: 2},{_id: 2,host: '10.49.196.12:27017',priority: 1},{_id: 3,host: '10.49.196.12:27018',arbiterOnly: true}]}; > rs.initiate(cfg)最外層的 _id 表示 Replica Set 的名字,members 里包含所有節點的地址以及優先級;優先級最高成為主節點,對于仲裁節點,需要設定:arbiterOnly:true,
3.5、查看狀態
rs0:PRIMARY> rs.status()
3.6、使 Secondary 可讀
默認情況下 Secondary 不可寫,不可讀;可通過執行 rs.slaveOk() (新版已過期) 或 rs.secondaryOk() 來使 Secondary 可讀:
rs0:SECONDARY> rs.secondaryOk()
4、Sharding 分片方式安裝
4.1、規劃
| ip | 埠 | 角色 | MongoDB安裝目錄 |
| 10.49.196.10 | 27011 | Router(mongos) | /home/hadoop/app/mongodb-5.0.5-27011-mongos |
| 27012 | Config Server(config Primary) | /home/hadoop/app/mongodb-5.0.5-27012-config | |
| 27013 | Shard(shard1 Secondary) | /home/hadoop/app/mongodb-5.0.5-27013-shard1 | |
| 27014 | Shard(shard2 Secondary) | /home/hadoop/app/mongodb-5.0.5-27014-shard2 | |
| 10.49.196.11 | 27011 | Router(mongos) | /home/hadoop/app/mongodb-5.0.5-27011-mongos |
| 27012 | Config Server(config Secondary) | /home/hadoop/app/mongodb-5.0.5-27012-config | |
| 27013 | Shard(shard1 Primary) | /home/hadoop/app/mongodb-5.0.5-27013-shard1 | |
| 27014 | Shard(shard2 Secondary) | /home/hadoop/app/mongodb-5.0.5-27014-shard2 | |
| 10.49.196.12 | 27011 | Router(mongos) | /home/hadoop/app/mongodb-5.0.5-27011-mongos |
| 27012 | Config Server(config Secondary) | /home/hadoop/app/mongodb-5.0.5-27012-config | |
| 27013 | Shard(shard1 Secondary) | /home/hadoop/app/mongodb-5.0.5-27013-shard1 | |
| 27014 | Shard(shard2 Primary) | /home/hadoop/app/mongodb-5.0.5-27014-shard2 |
4.2、啟動 Config Server
A、使用如下命令啟動 config 的各個節點:
./mongod --config ./mon.conf
各節點組態檔 mon.conf 的內容如下:
10.49.196.10:27012
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-config/data logpath=/home/hadoop/app/mongodb-5.0.5-27012-config/logs/mon.log fork=true replSet=config bind_ip=127.0.0.1,10.49.196.10 port=27012 configsvr=true
10.49.196.11:27012
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-config/data logpath=/home/hadoop/app/mongodb-5.0.5-27012-config/logs/mon.log fork=true replSet=config bind_ip=127.0.0.1,10.49.196.11 port=27012 configsvr=true
10.49.196.12:27012
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-config/data
logpath=/home/hadoop/app/mongodb-5.0.5-27013-config/logs/mon.log
fork=true
replSet=config
bind_ip=127.0.0.1,10.49.196.12
port=27012
configsvr=true
B、初始化副本集 config
登錄任一節點(./mong --port 27012)執行如下命令:
> use admin
> cfg = {_id: "config",members:[{_id: 1,host: '10.49.196.10:27012',priority: 3},{_id: 2,host: '10.49.196.11:27012',priority: 1},{_id: 3,host: '10.49.196.12:27012',priority: 2}]};
> rs.initiate(cfg)
4.3、啟動 Shard
4.3.1、啟動 shard1
A、使用如下命令啟動 shard1 的各個節點:
./mongod --config ./mon.conf
各節點組態檔 mon.conf 的內容如下:
10.49.196.10:27013
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/data logpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/logs/mon.log fork=true replSet=shard1 bind_ip=127.0.0.1,10.49.196.10 port=27013 shardsvr=true
10.49.196.11:27013
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/data logpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/logs/mon.log fork=true replSet=shard1 bind_ip=127.0.0.1,10.49.196.11 port=27013 shardsvr=true
10.49.196.12:27013
dbpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/data logpath=/home/hadoop/app/mongodb-5.0.5-27013-shard1/logs/mon.log fork=true replSet=shard1 bind_ip=127.0.0.1,10.49.196.12 port=27013 shardsvr=true
B、初始化 shard1
登錄任一節點(./mong --port 27013)執行如下命令:
> use admin > cfg = {_id: "shard1",members:[{_id: 1,host: '10.49.196.10:27013',priority: 2},{_id: 2,host: '10.49.196.11:27013',priority: 3},{_id: 3,host: '10.49.196.12:27013',priority: 1}]}; > rs.initiate(cfg)
4.3.2、啟動 shard2
A、使用如下命令啟動 shard2 的各個節點:
./mongod --config ./mon.conf
各節點組態檔 mon.conf 的內容如下:
10.49.196.10:27014
dbpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/data logpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/logs/mon.log fork=true replSet=shard2 bind_ip=127.0.0.1,10.49.196.10 port=27014 shardsvr=true
10.49.196.11:27014
dbpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/data logpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/logs/mon.log fork=true replSet=shard2 bind_ip=127.0.0.1,10.49.196.11 port=27014 shardsvr=true
10.49.196.12:27014
dbpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/data
logpath=/home/hadoop/app/mongodb-5.0.5-27014-shard2/logs/mon.log
fork=true
replSet=shard2
bind_ip=127.0.0.1,10.49.196.12
port=27014
shardsvr=true
B、初始化 shard2
登錄任一節點(./mong --port 27014)執行如下命令:
> use admin
> cfg = {_id: "shard2",members:[{_id: 1,host: '10.49.196.10:27014',priority: 1},{_id: 2,host: '10.49.196.11:27014',priority: 2},{_id: 3,host: '10.49.196.12:27014',priority: 3}]};
> rs.initiate(cfg)
4.3、啟動 Route
這里以啟動一個 Route 為例來演示,其他的 Route 都是類似的操作,
1、使用如下命令啟動 Route:
./mongos -f ./mon.conf
組態檔 mon.conf 的內容如下:
logpath=/home/hadoop/app/mongodb-5.0.5-27011-mongos/logs/mon.log
fork=true
bind_ip=127.0.0.1,10.49.196.10
port=27011
configdb=config/10.49.196.10:27012,10.49.196.11:27012,10.49.196.12:27012 #對應配置的副本集
2、配置 Sharding
./mongo --port 27011 mongos> use admin mongos> sh.addShard("shard1/10.49.196.10:27013,10.49.196.12:27013,10.49.196.12:27013"); mongos> sh.addShard("shard2/10.49.196.10:27014,10.49.196.12:27014,10.49.196.12:27014");
3、查看集群狀態
mongos> sh.status()
4、查看分片資訊
mongos> use config mongos> db.shards.find()
5、查看 chunk 資訊
mongos> use config mongos> db.chunks.find()
6、指定使用分片的資料庫
mongos> sh.enableSharding("testdb")
7、hash 分片例子
先指定分片的集合和片鍵
mongos> use testdb mongos> db.createCollection('col1') mongos> sh.enableSharding("testdb") mongos> sh.shardCollection("testdb.col1", {"name":"hashed"})
往集合中插入資料:
mongos> for(i=1;i<=1000;i++){db.col1.insert({"id":i,"name":"test" + i})};
查看集合的統計資訊:
mongos> db.col1.find() ... "shards" : { "shard2" : { "ns" : "testdb.col1", "size" : 24274, "count" : 468, "avgObjSize" : 51, "storageSize" : 28672, "freeStorageSize" : 0, "capped" : false, ... "shard1" : { "ns" : "testdb.col1", "size" : 27619, "count" : 532, "avgObjSize" : 51, "storageSize" : 32768, ...
可以看到分片 shard2 上有 468 條記錄,shard1 上有 532 條記錄,
8、范圍分片例子
先指定分片的集合和片鍵
mongos> use testdb mongos> db.createCollection('col2') mongos> sh.enableSharding("testdb") mongos> sh.shardCollection("testdb.col2", {"x":1})
往集合中插入資料:
mongos> for(i=1;i<=1000;i++){db.col2.insert({"x":i,"name":"test" + i})};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/433277.html
標籤:其他
上一篇:6-常用類
