8天学通MongoDB——第七天 运维技术

原文:8天学通MongoDB——第七天 运维技术

这一篇我们以管理员的视角来看mongodb,作为一名管理员,我们经常接触到的主要有4个方面:

1.  安装部署

2.  状态监控

3.  安全认证

4.  备份和恢复,

下面我们就一点一点的讲解。

 

一:安装部署

        我之前的文章都是采用console程序来承载,不过在生产环境中这并不是最佳实践,谁也不愿意在机器重启后满地找牙似找mongodb,

在mongodb里面提供了一个叫做“服务寄宿”的模式,我想如果大家对wcf比较熟悉的话很容易听懂。好了,我们实践一下,这里我开一下D盘

里面的mongodb。

 

这里要注意的有两点:

   <1> logpath: 当我们使用服务寄宿的时候,用眼睛都能想明白肯定不会用console来承载日志信息了。

   <2> install:   开启安装服务寄宿,很happy啊,把管理员的手工操作降低到最小,感谢mongodb。

 

好了,console程序叫我看log日志,那我就看看,发现mongodb已经提示我们如何开启mongodb,接着我照做就是了。

 

还要提醒大家一点的就是,这些命令参数很多很复杂也就很容易忘,不过没关系,数据库给我们提供了一个help方法,我们可以

拿mongod和mongo说事。

mongod:

 

mongo:

 

二:状态监控

     监控可以让我们实时的了解数据库的健康状况以及性能调优,在mongodb里面给我们提供了三种方式。

1:http监视器

     这个我在先前的文章中也提到了,这里就不赘述了。

2:serverStatus()

    这个函数可以获取到mongodb的服务器统计信息,其中包括 :全局锁,索引,用户操作行为等等这些统计信息,对管理员来说非常

    重要,具体的参数含义可以参考园友:http://www.cnblogs.com/xuegang/archive/2011/10/13/2210339.html

    这里还是截个图混个眼熟。

 

3:mongostat

      前面那些统计信息再牛X,那也是静态统计,不能让我观看实时数据变化,还好,mongodb里面提供了这里要说的mongodstat

监视器,这玩意会每秒刷新,在实际生产环境中大有用处,还是截张图,很有意思,是不是感觉大军压境了。

 

三: 安全认证

     作为数据库软件,我们肯定不想谁都可以访问,为了确保数据的安全,mongodb也会像其他的数据库软件一样可以采用用户

验证的方法,那么该怎么做呢?其实很简单,mongodb提供了addUser方法,还有一个注意点就是如果在admin数据库中添加

将会被视为“超级管理员”。

上面的admin用户将会被视为超级管理员,“jack”用户追加的第三个参数表示是否是“只读用户”,好了,该添加的我们都添加了,

我们第一次登录时不是采用验证模式,现在我们使用--reinstall重启服务并以--auth验证模式登录。

好了,我们进入test集合翻翻数据看看情况,我们发现jack用户始终都是没有写入的权限,不管是授权或者未授权。

 

四:备份和恢复

      这玩意的重要性我想都不需要我来说了吧,这玩意要是搞不好会死人的,mongodb里面常用的手段有3种。

1: 直接copy

       这个算是最简单的了,不过要注意一点,在服务器运行的情况下直接copy是很有风险的,可能copy出来时,数据已经遭到

        破坏,唯一能保证的就是要暂时关闭下服务器,copy完后重开。

2:mongodump和mongorestore

      这个是mongo给我们提供的内置工具,很好用,能保证在不关闭服务器的情况下copy数据。

为了操作方便,我们先删除授权用户。

 

好了,我们转入正题,这里我先在D盘建立一个backup文件夹用于存放test数据库。

快看,数据已经备份过来了,太爽了,现在我们用mongorestore恢复过去,记住啊,它是不用关闭机器的。

提一点的就是 drop选项,这里是说我将test数据恢复之前先删除原有数据库里面的数据,同样大家可以通过help查看。

 

3:主从复制

       这个我在上上篇有所介绍,这里也不赘述了。

 

    其实上面的1,2两点都不能保证获取数据的实时性,因为我们在备份的时候可能还有数据灌在内存中不出来,那么我们

想说能不能把数据暴力的刷到硬盘上,当然是可以的,mongodb给我们提供了fsync+lock机制就能满足我们提的需求。

fsync+lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实例的写入操作全部被阻塞,直到fsync

+lock释放锁为止。

这里就不测试了。

 加锁:    db.runCommand({"fsync":1,"lock":1})

 释放锁: db.$cmd.unlock.findOne()

                   

时间: 2024-10-04 00:24:02

8天学通MongoDB——第七天 运维技术的相关文章

8天学通MongoDB——第四天 索引操作

原文:8天学通MongoDB--第四天 索引操作     这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅.     好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵.     从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的"索引查找",如果大家对sql

8天学通MongoDB——第三天 细说高级操作

原文:8天学通MongoDB--第三天 细说高级操作     今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标. 一: 聚合       常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce. <1> count         count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样.   <2> distinct        这个操作相信大家也是非常熟悉的,

8天学通MongoDB——第五天 主从复制

原文:8天学通MongoDB--第五天 主从复制      从这一篇开始我们主要讨论mongodb的部署技术.     我们知道sql server能够做到读写分离,双机热备份和集群部署,当然mongodb也能做到,实际应用中我们不希望数据库采用单点部署, 如果碰到数据库宕机或者被毁灭性破坏那是多么的糟糕.   一:主从复制 1: 首先看看模型图    2: 从上面的图形中我们可以分析出这种架构有如下的好处:      <1>  数据备份.      <2>  数据恢复.    

8天学通MongoDB——第一天 基础入门

      关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中"集合" 就是对应关系数据库中的"表","文档"对应"行".   一: 下载       上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意:           ①:根据业界规则,偶数为"稳定版"(如:1.6.X,1.8.X),奇数

8天学通MongoDB——第二天 细说增删查改

      看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察"划线区域"的信息,发现db文件夹下有一个类似的"lock file"阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享.   一: Insert操作      上一篇也说过,文档是采用"K-V"格式

教大家8天学通MongoDB——第一天 基础入门篇_MongoDB

关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中"集合" 就是对应关系数据库中的"表","文档"对应"行". 一: 下载       上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意:           ①:根据业界规则,偶数为"稳定版"(如:1.6.X,1.8.X),奇数为"开

8天学通MongoDB——第六天 分片技术

     在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存 就吃不消了,针对这样的场景我们该如何应对.   一:分片      mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上的一种解决方案.   下面我对这张图解释一下:      人脸:       代表客户端,客户端肯定说,你数据库分片不分片跟我没关系,我叫你干啥就干啥,没什么好商量的.      mongos: 首先我们要了解"片键&q

8天学通MongoDB——第八天 驱动实践

  作为系列的最后一篇,得要说说C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者, 因为提供了丰富的linq操作,相当方便.   官方驱动:https://github.com/mongodb/mongo-csharp-driver/downloads.下载后,还提供了一个酷似msdn的帮助文档. samus驱动:https://github.com/samus/mongodb-csharp/downloads.    下面就具体看看samus驱动

MongoDB入门教程之常用的运维技术介绍_MongoDB

这一篇我们以管理员的视角来看mongodb,作为一名管理员,我们经常接触到的主要有4个方面: 1.  安装部署 2.  状态监控 3.  安全认证 4.  备份和恢复, 下面我们就一点一点的讲解. 一:安装部署         我之前的文章都是采用console程序来承载,不过在生产环境中这并不是最佳实践,谁也不愿意在机器重启后满地找牙似找mongodb, 在mongodb里面提供了一个叫做"服务寄宿"的模式,我想如果大家对wcf比较熟悉的话很容易听懂.好了,我们实践一下,这里我开一下