关于mongodb 的日志轮询

mongod每天要产生大量的日志,如果不去管它,我这边一周大约有10~20G的日志出来,可见日志轮询是必须的。

mongodb本身支持日志轮询的信号,所以我的日志轮询脚本如下:

#!/bin/sh
log_dir="/var/log/mongo/"
killall -SIGUSR1 mongod
/usr/bin/find ${log_dir} -name 'mongod.log.*' -mtime +5  -exec rm -f {} ;

然后每天零点零分跑一下。

我有6台mongodb,上面的脚本跑了一两个月一直挺正常。但是最近其中一台在做日志轮询的时候可能是产生了死锁,因为我首先收到了读写锁过多的报警,日志轮询没有成功,客户端也连不进去。收到报警后就连到服务器去看,查查日志,确定问题后重启mongodb就正常了。

这个脚本造成服务中断14分钟,mongodb用的是最新的稳定版本1.8.1,mongodb的稳定性还有待提高。

阅读全文

关于mongodb 的Oplog

mongodb的Replication是通过一个日志来存储写操作的,这个日志就叫做Oplog。

在默认情况下,对于64位的mongodb,oplogs都相当大-可能是5%的磁盘空间。通常而言,这是一种合理的设置。可以通过mongod –oplogSize来改变Oplog的日志大小。

Oplog的collectio为:

local.oplog.$main for master/slave replication;
local.oplog.rs for replica sets

如 master/slave replication:

阅读全文

用nagios监控mongodb

网上已经有人写好了mongodb的nagios监控脚本,参考: https://github.com/mzupan/nagios-plugin-mongodb/blob/master/README.md

  1. 先安装git
yum install git
  1. 下载脚本
cd /etc/nagios/command

git clone git://github.com/mzupan/nagios-plugin-mongodb.git
cd nagios-plugin-mongodb/
chmod 755 check_mongodb.py

如果执行报下面的错误:

# ./check_mongodb.py --help
need to install pymongo

需要安装pymongo:

git clone git://github.com/mongodb/mongo-python-driver.git pymongo
cd pymongo/
python setup.py install

阅读全文

我们有项目用到了MongoDB,在正式运营时数据需要做实时备份,而目前资源也有限,只有两台机器用于MongoDB,所以选用MongoDB的Master-Slave Replication来实现实时备份,其实我是比较看好Replica Sets的,因为其可以实现自动切换,但我目前因为机器少只能做罢。

两台机器一台为Master(192.168.1.173),一台为Slave(192.168.1.174),系统环境为:centos linux 5.5。

阅读全文

2010年8月5日,Mongodb 1.6正式发布了,这个版本增加和改进了很多功能,我了解的几个比较大的改进在:

  1. Mongodb存储文件申请磁盘空间的方式做了改进。在mongodb 1.4的时候是按128M,256M,512M,1024M,2048M这样的方式申请磁盘空间的;而在mongodb 1.6中,已经是动态小量的申请磁盘空间了。
  2. 增加了$or等查询操作符,这在mongodb 1.4的时候是没有的。
  3. 改进和提高了并发性能。
  4. Replication的同步方面做了改进。
  5. etc…

阅读全文

mongodb的备份与恢复

mongodb提供了两个命令来备份(mongodump )和恢复(mongorestore )数据库。

1.备份(mongodump )

用法 :

[root@web3 3]# mongodump –help
options:
–help                   produce help message
-v [ –verbose ]         be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
-h [ –host ] arg        mongo host to connect to (“left,right” for pairs)
-d [ –db ] arg          database to use
-c [ –collection ] arg  collection to use (some commands)
-u [ –username ] arg    username
-p [ –password ] arg    password
–dbpath arg             directly access mongod data files in the given path,
instead of connecting to a mongod instance - needs
to lock the data directory, so cannot be used if a
mongod is currently accessing the same path
–directoryperdb         if dbpath specified, each db is in a separate
directory
-o [ –out ] arg (=dump) output directory

阅读全文

MongoDB update数据语法

在前面的文章“mongodb 查询的语法”里,我介绍了Mongodb的常用查询语法,Mongodb的update操作也有点复杂,我结合自己的使用经验,在这里介绍一下,给用mongodb的朋友看看,也方便以后自己用到的时候查阅:

注:在这篇文章及上篇文章内讲的语法介绍都是在mongodb shell环境内的,和真正运用语言编程(如java,php等)使用时,在使用方法上会有一些差别,但语法(如查询条件,in,inc等)是一样的。

本文是参考官方文档来介绍的,之所以有官方文档还要在这介绍,一方面是就当翻译,毕竟每次要用时去看英文文档比较累,第二是官方文档讲解比较简单,有时光看官方文档不好理解,我在实际操作的情况下可以做些补充。

阅读全文

作者的图片

阿辉

容器技术及容器集群等分布式系统研究

容器平台负责人

上海