williamxww1的专栏通过本文主要向大家介绍了mongodb,集群,windows等相关知识,希望本文的分享对您有所帮助
单节点安装
-
复制文件到目录D:\CFile\MongoDB
-
注册windows服务(可能需要以管理员运行cmd)
新建D:\CFile\MongoDB\data D:\CFile\MongoDB\log\mongo.log
> mongod --dbpath "D:\CFile\MongoDB\data" --logpath "D:\CFile\MongoDB\log\mongo.log" --install --serviceName "MongoDB"
> net start mongodb
> net stop mongodb
> mongod --remove --serviceName "MongoDB"
> mongod --auth --dbpath "D:\CFile\MongoDB\data" --logpath "D:\CFile\MongoDB\log\mongo.log" --reinstall --serviceName "MongoDB"
- 初始化
> mongo 127.0.0.1:27017
> use admin
> db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
- 用户权限管理
// 查看用户
> show users
> db.system.users.find()
> db.changeUserPassword("admin","123456");
> db.system.users.find();//查看用户
> db.system.users.remove({user:"admin"}); //删除用户
// 新增一个库test,用户xww对其有读写权限,注意上面admin只是有管理用户的权限
use test
db.createUser(
{
user: "xww",
pwd: "xww",
roles: [ { role: "readWrite", db: "test" }]
}
)
// 收回权限
db.revokeRolesFromUser(
"xww",
[{ role: "readWrite", db: "test"}]
)
// 授予读权限
db.grantRolesToUser(
"xww",
[{ role: "read", db: "test" }]
)
// 增加超级用户
db.createUser({
user: "admin",
pwd: "admin",
roles:[{role: "root",db: "admin"}]
})
- CRUD
> show dbs;
> use test;
> db.onuPmReportLK.insert({
"_id" : 3,
"upSpeed" : 90.14,
"cpuUsage" : 0.9,
"temperature" : 9.0,
"oId" : "10000-0-0-0-0"
});
> db.onuPmReportLK.find({_id:3},{cpuUsage:1, oId:1}).sort({cpuUsage:1});
> db.onuPmReportLK.remove({_id:3});
- aggregation & lookup
// 模拟from onuPmReport left join onu on onuPmReport.oId = onu._id where onuPmReport._id=4;
> db.getCollection('onuPmReport').aggregate([
{
$lookup:
{
from:"onu",
localField:"oId",
foreignField:"_id",
as:"right"
}
},
{$match:{"right.onuName":"ONU-1"}},
{$sort:{"cpuUsage":1}},
{$skip:0},
{$limit:10}
],{allowDiskUse:true});
复制集群
#master.conf
port=27017
dbpath=../data
logpath=../log/mongodb.log
logappend=true
journal=true
master=true
> call mongod.exe -f ../conf/master.conf
#slave.conf
port=27018
dbpath=../data
logpath=../log/mongodb.log
logappend=true
journal=true
slave=true
source=127.0.0.1:27017
> call mongod.exe -f ../conf/slave.conf
3.0之后采用yaml方式配置
# config in yaml
systemLog:
destination: file
quiet: true
path: "../log/mongodb.log"
logAppend: true
storage:
dbPath: "../data"
journal:
enabled: true
net:
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
security:
# enabled后各种校验问题
authorization: "disabled"
replication:
oplogSizeMB: 100
replSetName: rs0
call mongod.exe -f ../conf/mongo.conf
启动三个独立节点后,初始化每个节点的角色
use admin;
var cfg={_id:"rs0",
members:[
{_id:1,host:"127.0.0.1:27017",priority:1},
{_id:2,host:"127.0.0.1:27018",priority:2},
{_id:3,host:"127.0.0.1:27019",arbiterOnly:true}
]};
rs.initiate(cfg);
之后操作主节点,备份节点即可看到变化。初始化结束后便可以在主节点上建立用户。
分片集群
- 配置config server & shard server
# config in yaml
systemLog:
destination: file
quiet: true
path: "../log/mongodb.log"
logAppend: true
storage:
dbPath: "../data"
journal:
enabled: true
net:
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
security:
# enabled后各种校验问题
authorization: "disabled"
sharding:
# configsvr
clusterRole: "shardsvr"
- 独立启动config server & shard server
- 启动router,指定config server
mongos.exe --logpath=../log/mongos.log --configdb=127.0.0.1:27019 --logappend --port 30000
- 给router配置shard
mongos> db.runCommand({ addshard:"127.0.0.1:27017" })
mongos> db.runCommand({ addshard:"127.0.0.1:27018" })
mongos> sh.status()
mongos> db.runCommand( { listshards : 1 } );
mongos> db.runCommand( { enablesharding :"testdb"});
mongos> db.runCommand( { shardcollection : "testdb.user",key : {id: 1} } )
# 构造数据
mongos> use testdb;
mongos> for (var i = 1; i <= 1000; i++){
db.user.save({id:i,"name":"vv"+i});
}