管理MongoDB相关操作命令
1. 管理查看语句
show dbs
show collections;
show users;
use db
获取当前库名
db.getName()
当前数据库状态
db.stats()
查看当前版本
db.version()
1.1 创建用户
use bg_base
db.createUser(
{
user:"devtymongo",
pwd:"#############",
roles:[{role:"readWrite",db:"bg_base"},{role:"dbAdmin",db:"bg_base"},{role:"userAdmin",db:"bg_base"},
{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},{role:"clusterMonitor",db:"admin"},
{ role: "dbOwner", db: "bg_base" }]
})
1.2.1 修改密码
db.changeUserPassword('test','123')
1.2.2 创建管理员账户
db.createUser({user:'admin',pwd:'123',roles:[{role:'root',db:'admin'}]})
1.2.3 创建普通管理员 可以连接多个库
use admin
db.createUser(
{
user: "admin",
pwd: "#############",
roles: [{role:"clusterAdmin",db:"admin"},{role:"clusterManager",db:"admin"},
{role:"clusterMonitor",db:"admin"}, { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
1.2.4 创建只读账户: 可以连接多个库
use admin
db.createUser(
{
user:"jsread",
pwd:"###########",
roles:[{role:"readAnyDatabase",db:"admin"}]
})
1.2.5 验证用户
db.auth('user','pwd')
1.2.6 显示当前所有用户
show users()
1.2.7 删除用户
db.dropUser('test_user')
2. 数据库导入和导出
2.1 mongo导出:
mongodump -h 127.0.0.1:26060 -d bc -u admin -p '########' --authenticationDatabase=admin -o /data/mongobak
2.2 mongo导入:
mongorestore -u yctymongo -p '###########' --host 127.0.0.1 --port 26060 --authenticationDatabase=admin -d bc /data/mongobak/bc
3. 慢日志分析
mloginfo mongod_20200619.log --queries --sort count
2. 副本集管理
2.1 配置副本集
use admin
config = {_id: 'my_repl', members: [ {_id: 0, host: '10.5.22.40:26060'}, {_id: 1, host: '10.5.22.41:26060'}, {_id: 2, host: '10.5.22.42:26060'}] }
rs.initiate(config)
rs.status
rs.slaveOk()
2.2 管理节点
rs.remove("ip:port")
rs.add("ip:port")
rs.add({host: "10.5.11.17:26060", priority: 0, hidden: true})
cfg=rs.conf() /*找到需要改为延迟性同步的数组号*/;
设置优先级,0为不参加选举
cfg.members[1].priority=0
设置同步延时
cfg.members[1].slaveDelay=120
对外隐藏节点
cfg.members[1].hidden=false
重写配置文件
rs.reconfig(cfg)
2.3 查看副本节点,可以监控主从延时
ty88:PRIMARY> rs.printSlaveReplicationInfo()
source: 10.5.11.19:26060
syncedTo: Thu Jul 16 2020 14:09:51 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
source: 10.5.11.20:26060
syncedTo: Thu Jul 16 2020 14:09:51 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
source: 10.5.22.40:26060
syncedTo: Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
1594879791 secs (443022.16 hrs) behind the primary
2.4 查看副本集状态
rs.status()
2.5 查看副本集的oplog的状态
ty88:PRIMARY> rs.printReplicationInfo()
configured oplog size: 51200MB
log length start to end: 302285secs (83.97hrs)
oplog first event time: Mon Jul 13 2020 02:10:54 GMT+0800 (CST)
oplog last event time: Thu Jul 16 2020 14:08:59 GMT+0800 (CST)
now: Thu Jul 16 2020 14:08:59 GMT+0800 (CST)
2.5 对集合进行压缩,主要是解决删除数据不释放的问题
db.runCommand({ compact : 'sr_live_eventStatisticsInfo_uof',force: true});
2.6 mtools
mloginfo
mloginfo令是一个用于做日志信息统计的工具。
连接数
# mloginfo mongod.log-20180531-2.211-gbk --connections
事件统计
# mloginfo mongod.log-20180531-2.211-gbk --distinct
重启信息
# mloginfo mongod.log-20180531-2.211-gbk --restart
副本集切换
# mloginfo mongod.log-20180531-2.211-gbk --rsstate
查询次数
# mloginfo mongod.log-20180531-2.211-gbk --queries --sort count
查看超过10s的慢操作
# mlogfilter mongod.log-20180531-2.211-gbk --slow 10000 --shorten 200
查看超过10s的慢操作
# mlogfilter mongod.log-20180531-2.211-gbk --slow 10000 --shorten 200
查看慢扫描操作
慢扫描是指该操作需要扫描过多的记录(超过1w行),且返回数量不足扫描数量的1/100,这样的操作通常对CPU消耗很高,也比较低效
# mlogfilter mongod.log-20180531-2.211-gbk --scan --shorten 200
根据名称空间过滤
# mlogfilter mongod.log-20180531-2.211-gbk --namespace dmspace.DeviceInfo
根据操作类型过滤
# mlogfilter mongod.log-20180531-2.211-gbk --operation update
2.7 更改oplog大小
2.7.1 查看当前oplog大小
use local
db.oplog.rs.stats().maxSize
2.7.2 更改oplog大小设置,更改即生效。单位为M
db.adminCommand({replSetResizeOplog:1, size: 100000})