MongoDB 学习笔记(六):备份与用户管理
一、启动项
1、在启动数据库服务时可以在命令行输入mongod命令,然后直接带一些参数,比如“mongod --dbpath D:\Installations\MongoDB-2.4.6\MongoDBDATA”,还可以将mongod命令后的那些参数写入一个配置文件中, 然后在命令行中使用--config参数指定配置文件,比如将--dbpath参数写入文件中,如下图:
然后在命令行中使用mongod命令加上--config参数一样可以启动数据库服务,如下图:
2、要查看启动数据库服务有哪些参数可以给我们使用,可以使用“mongod --help”命令查看;另外在这个链接中有中文的参数说明(http://www.uspcat.com/forum.php?mod=viewthread&tid=7722&extra=page%3D1)。
3、MongoDB默认的端口是27017,Web访问端口是28017,Web访问端口会是默认端口大小再加1000。比如指定MongoDB的端口是8888,则Web端口会是9888,如下图:
4、停止MongoDB数据库服务
- 直接按下Ctrl+C。
- 登录admin数据库,使用db.shutdownServer()命令,如下图:
二、导入与导出、运行时备份与恢复
1、导出
导出可以使用mongoexport命令,导出会中断其它操作。常用参数:
- -d:指明要导出的数据库
- -c:指明要导出的集合
- -o:指明要导出的文件名
- --host:指明数据库主机地址(不写默认就是本机)
- --port:指明数据库端口(不写默认就是27017)
如下图:导出mdb数据库中的person集合
2、导入
导入可以使用mongoimport命令,导入也会中断其它操作。常用参数:
- --db:指明要导入到的数据库(如果数据库不存在会自动创建)
- --collection:指明要导入到的集合(如果集合不存在会自动创建)
- --file:数据文件地址
- --host:指明数据库主机地址(不写默认就是本机)
- --port:指明数据库端口(不写默认就是27017)
如下图:导入数据到mdb数据库中的person集合
3、运行时备份
运行时备份可以使用mongodump命令,它不会中断其它操作,但可能会遗漏数据,因为可能内存中的数据尚未写回数据库中。如下图:备份mdb数据库
4、运行时恢复
运行时恢复可以使用mongorestore命令,如下图:恢复mdb数据库
5、懒人备份
MongoDB是文件数据库,所以可以用拷贝文件的方式进行备份。
三、Fsync锁与数据修复
1、正如上面所说的运行时备份,它虽然不会中断其它操作,但是可能会遗漏数据,因为它只会备份数据库,缓冲池中没有来得及写回数据库中的数据可能就 没有备份。所以这个时候就可以用到Fsync锁,加上锁后,缓冲池的数据先写回数据库中,然后进行备份或者是恢复,完成后再解锁。如下图:
2、上锁和解锁
- 上锁:上锁只能用在admin数据库上,如下图:
- 解锁:从上图中可以发现解锁可以用db.fsyncUnlock()的方式。
3、数据修复
当停电等不可逆转情况发生,由于MongoDB的存储结构导致会产生垃圾数据,这时候就可以使用数据库的自我修复,命令为db.repairDatabase()。
四、用户管理与安全认证
1、添加用户
为某个数据库添加用户:db.addUser("用户名", "密码")。如下图:为admin数据库添加用户admin001,密码123456,为mdb数据库添加用户mdb001,密码123456
然后在数据库中就会生成一个叫做system.users的集合,里面就保存了该数据库的用户信息,如下图:
2、安全认证
在启动数据库时如果没有加入--auth参数,则MongoDB默认是不会进行安全检查的,不需要用户名和密码就能够进入数据库进行操作了,如下图:进入mdb数据库无法登录进行操作
当启用了安全认证后进入某个数据库需要使用该数据库中的用户名和密码登录后才能进行操作,如下图:首先是进入test数据库,然后切换到mdb数据库,然后使用之前为mdb数据库创建的用户“mdb001”登录,然后该用户就可以进行数据库操作了
当启用了安全认证后,不是admin数据库的用户是不能使用“show dbs”命令的,如下图:
3、删除用户
进入到该数据库,然后删除该数据库中system.users集合中要删除的用户所在文档即可,如下图: