Mongodb 身份验证

介绍

不管数据库是在多安全的环境或者本地环境,给数据库建立一个安全的环境是很有必要的。

Mongodb提供了一系列的安全功能,这里介绍一种很常用的身份验证方式。

开启验证

默认情况下,只要在启动数据库的时候没有加上--auth选项,就是没有身份验证功能的,所有客户端都可以进行所有权限的操作。

如果加上过后,我们就可以通过安全的身份验证连接数据库。如果要在数据库中进行身份验证,可以通过db.auth(username, password),如果验证成功则返回1,反之。

建立用户

建立用户我们可以通过db.createUser()方法来建立用户,比如下面这样:

db.createUser({user: 'username', pwd: 'password', roles: [
    {role: 'read', db: 'test'}
]});

继续阅读

Mongodb 备份及恢复

介绍

无论在什么情况下都应该进行数据备份,才能避免灾难性的数据损坏,下面将介绍两种备份方式,两种备份方式使用的场景也不一样,可以根据自身的使用情况进行选择

复制文件备份

在复制数据库文件之前,我们可以通过db.fsynclock()方法让数据库禁止一切写入,并把所有在缓存中的信息全部同步到磁盘中,让所有的写操作进入队列,在没有取消锁之前,Mongodb不会对任何写操作进行处理。

> db.fsyncLock();   首先给数据库上锁,以免出现我们在备份的过程中同时还有数据写入

$ cp -R /data/blog/* /data/Backup/blog  //复制数据库所有的文件到备份目录

> db.fsyncUnlock();  解锁数据库,解锁后数据库将处理队列中的写操作

mongodump

mongodump可以给正在运行的实例进行热备份,只需要通过指定端口,地址,如果在本机上面运行,只需要指定端口就可以进行热备份了。

$ mongodump --port 27017

继续阅读

Mongodb 数据修复

介绍

很多时候我们看见数据目录下有一个mongodb.lock文件,这个文件在开启了日志系统后不会出现,在没有开启日志系统的情况下非常重要,并且有时发现重新启动数据库的时候无法启动了,然后删除mongodb.lock又可以启动了,但是尽量不要这样做。

当Mongodb启动的时候会建立一个mongodb.lock文件,而正常退出的时候就会删除这个文件,但是遇见非正常退出,这个文件就滞留了,Mongodb就会得知上一次是非正常退出,所以第一时间不是删除这个文件启动,而是尝试着修复数据,再进行启动。

mongod –repair

mongod内置了一个修复数据的选项,这个工具相比与下面介绍的另一种工具来说这种在修复的速度上要稍微快一下,我们只需指定修复的数据库路径,然后加上选项就可以进行修复了。

$ mongod --dbpath /data/blog --repair

继续阅读

Mongodb 监测

介绍

为什么要进行监控状态,因为在实际的情况中可能会发生一下无法预计的情况,比如阻塞的问题,阻塞的原因会有很多种情况造成,如果当我们查询文档的时候发生了阻塞,那么就会影响到后面的操作,甚至无法对后面的操作进行响应。

我们可以通过监控很快速的找到到底是哪里出了问题,这样有助于我们快速定位所在的问题,从而得到解决。

Mongodb官方提供了三种用语分析Mongodb的方式:

  1. Mongodb自带的监控工具:用于提供数据库活动的实时报告
  2. 数据库命令:以更真实的情况返回数据库状态的统计信息
  3. 第三方平台托管监控

Mongodb自带监控工具

mongostat

mongostat是官方随同mongodb下载包中一同下载的,你可以找到安装目录或者解压目录进行使用。

我们可以通过mongostat --help()进行查询可用选项,也可以通过官方文档进行查询。

Mongostat默认所返回的信息都是基于秒为单位,比如返回的insert指的是每秒插入数据库的对象数,而如果我们限制了返回时间,那么这个返回的结果是基于限制时间的平均值。

继续阅读

Mongodb 分片

介绍

分片是指将数据拆分,并分散放在多个服务器中组成一个集群,这可以将N台服务器的性能集中到一起来处理数据,这将很大程度的提高数据处理的速度。

在Mongodb的分片中必须具备三个角色:

  1. 路由服务器:用于处理和响应请求,并把各个分片服务器查询到的结果处理合并然后返回。
  2. 配置服务器(configServer):存储集群、数据的描述信息。
  3. 分片服务器:用于储存拆分的数据服务器。

而这三个角色都是普通的数据库,只是扮演的角色不一样。

它们的请求、响应流程就如下图中表示一样:

构造

因为所有的应用程序都是通过路由进行请求,所以对于应用程序来说,它没有什么不同就如请求一个普通数据服务器一样:

客户端请求

搭建配置服务器

首先我们需要搭建配置服务器,配置服务器如同分片的大脑,保存着集群和数据的描述信息。

因为Mongodb3.4版本后需要配置服务器必须配置为副本集,所以需要给配置服务器配置副本集,如果你还清楚如何搭建副本集,你可以试着看看我的上一篇文章《Mongodb 副本集》

继续阅读