MongoDB常用命令
一.基础操作命令
1. !注意区分大小写 系统命令详细语法 --help查看
2. 查看帮助命令:
3. server级别 >hlep
4. db级别 >db.help()
5. 集合级别>db. collectionname .help()
6.
7. /*db*/ 库
8. 启动:# mongod -f /usr/local/mongodb/conf/mongod.conf
9. 登入:# ./mongo --port 27017
10.关闭:# mongod --shutdown -f 对应组件的conf文件路径 或者 >db.shutdownServer(),需要use admin执行 或者kill <mongod process ID> 但是注意不能加上-9否则下次无法正常启动
11.切换到指定库:>use dbname
12.查询当前用户: >show users 或者>db.system.users.find() 、>db.system.users.find().pretty()
13.查看当前库:>db
14.查看所有库:>show dbs
15.查看数据库状态信息:>db.serverStatus()
16.查看 db 的元数据信息:>db.stats()
17.查看当前库所有集合:>show collections 或者show tables
18.查看集合状态:> db.printCollectionStats()
19.查看数据库版本信息:>db.version()
20. /*replset*/ 副本集
21.副本集启动:#mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
22.查看当前副本集状态:>rs.status()
23.查看当前副本集配置:>rs.config()
24.查看副本集复制状态:> db.printReplicationInfo()
25.查看主备同步延时:>db.printSlaveReplicationInfo()
26.添加副本集节点:>rs.add('ip:port')
27.移除副本集节点:rs.remove() # 需要primary节点执行
28.添加仲裁节点:>rs.addArb('ip:port')
29.实现secondary节点查询(读请求):>rs.slaveOk() 或者 db.getMongo().setSlaveOk() 或者 配置mongo的时候增加slave-ok="true"也支持直接从secondary中读
30./*shading*/ 分片集
31.启动config Server:# mongod --config /data/db/confsrv/mongod-cs.cnf # 启动Shard Server同理
32.启动router各节点:# mongos --config /data/db/router/mongos.cnf # 注意区别router组件和其他组件启动命令不同
33.连接到指定组件:# mongo --port 29017 # 端口号指定对应组件的端口号
34.查看shard分片信息:>db.printShardingStatus()
35.Balancer:-连接到 config 库操作
36.开启Balancer:>sh.startBalancer()
37.停止Balancer:>sh.stopBalancer()
38.查看Balancer状态:>sh.getBalancerState()
二.备份命令
1. MongoDB目前为止还没有像xtrabackup这种好用的备份工具。所以一般来说,都是使用逻辑备份方式来进行操作
2. 逻辑备份与恢复
3. 备份:mongodump # mongodump -h hostip:port -u username --authenticationDatabase admin -p password -d dbname -c collectionsname --dumpDbUserAndRoles -o /path/filename.sql
4.
5. 利用oplog 实现point-in-time的恢复, 即恢复到误操作前的状态:
6. 备份出oplog:
7. # mongodump -h 192.168.90.228:27017 -d local -c oplog.rs -o /tmp/
8. Bsondump可以让oplog 具备可读性:
9. # bsondump oplog.rs.bson >local.log
10.从log中可以找到误操作时间点
11.
12.恢复:mongorestore
13.# mongorestore -h localhost -d users --dir /root/mongdbbak/users
14.将oplog 的备份复制到备机上,进行恢复:
15.# mongorestore - h 192.168.90.228:27017 --oplogReplay --oplogLimit 1560161074:1 /tmp/
16.注意:在还原过程中 mongorestore默认不会删除数据,因此向现有数据库还原数据,务必带上--drop标志
17.导出:mongoexport (可将集合数据导出到json\csv文件中)
18.# mongoexport -d dbname -c collectionsname -o filename.csv
19.导入:mongoimport (mongoimport --help查看导入选项)
20.# mongoimport -d dbname -c collectionsname --type csv --headline filename.csv /*headline:csv文件第一行包含字段名*/
21.
22.注:通过mongoshell执行以下命令以确保所有的写操作都flush到磁盘并禁止新的写入:
23.>db.fsyncLock();
三.监控与数据库诊断优化命令
1. 统计信息:>db.runCommand({"serverStatus":1})
2. 统计信息包括以下:页错误、B树访问率、打开连接数、总的插入、更新、查询和删除等详细信息。
3. 显示每个数据库的操作计数器:>db.runCommand({"top":1})
4. 返回当前数据库正在运行的所有操作,以及正在等待运行的其他操作:>db.currentOp()
5. Mongo自带监测工具:# mongostat --间隔固定时间获取mongodb的当前运行状态,并输出
6. 查看是否设置Profiling:>db.getProfilingLevel() ---类似mysql slowlog,收集到的所有都写入到system.profile集合中。注:0:关闭,不收集任何数据 1:收集慢查询数据,默认是100毫秒 2:收集所有数据
7. 设置开启慢查询监控:> db.setProfilingLevel(2,200) --200为时间阈值
8. 查看执行计划:>db.collection.find().explain(verbose) --参数verbose:可选参数。缺省值为queryPlanner,用于查看指定执行计划的特定部分。即给定不同的参数则输出信息的详细程度不同,常用的包括queryPlanner,executionStats,以及allPlansExecution.
9. 查看更多explain支持的运算方法:> db.collectionname.explain().help()