设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 4760|回复: 7

[NOSQL] mongodb主从 [复制链接]

Rank: 8Rank: 8

签到
336
注册时间
2009-3-25
最后登录
2014-5-16
在线时间
504 小时
阅读权限
90
积分
29319
帖子
61
主题
3
精华
0
UID
2124
发表于 2011-4-21 16:16:31 |显示全部楼层
最近在学习mongodb,发现mongodb的没有conf配置文件,所有的设置都是在启动时的参数设定的。

今天在做mongodb主从复制时,出错了,mongodb进程起不来,命令如下:
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/log/mongodb.log --logappend &
查看日志,发现:
Thu Apr 21 15:19:24 [initandlisten] MongoDB starting : pid=5673 port=27017 dbpath=/usr/local/mongodb/data/ master=1 64-bit
Thu Apr 21 15:19:24 [initandlisten] db version v1.8.0, pdfile version 4.5
Thu Apr 21 15:19:24 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Thu Apr 21 15:19:24 [initandlisten] build sys info: Linux bs-linux64.10gen.cc 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Thu Apr 21 15:19:24 [initandlisten] waiting for connections on port 27017
Thu Apr 21 15:19:24 [initandlisten] ******
Thu Apr 21 15:19:24 [initandlisten] creating replication oplog of size: 944MB...
Thu Apr 21 15:19:24 [FileAllocator] allocating new datafile /usr/local/mongodb/data/local.ns, filling with zeroes...
Thu Apr 21 15:19:24 [FileAllocator] done allocating datafile /usr/local/mongodb/data/local.ns, size: 16MB,  took 0.164 secs
Thu Apr 21 15:19:24 [FileAllocator] allocating new datafile /usr/local/mongodb/data/local.0, filling with zeroes...
Thu Apr 21 15:19:25 [FileAllocator] done allocating datafile /usr/local/mongodb/data/local.0, size: 64MB,  took 1.109 secs
Thu Apr 21 15:19:25 [FileAllocator] allocating new datafile /usr/local/mongodb/data/local.1, filling with zeroes...
Thu Apr 21 15:19:27 [FileAllocator] done allocating datafile /usr/local/mongodb/data/local.1, size: 128MB,  took 1.639 secs
Thu Apr 21 15:19:27 [FileAllocator] allocating new datafile /usr/local/mongodb/data/local.2, filling with zeroes...
Thu Apr 21 15:19:37 [FileAllocator] done allocating datafile /usr/local/mongodb/data/local.2, size: 1024MB,  took 9.577 secs
Thu Apr 21 15:19:37 [initandlisten] ERROR:   mmap() failed for /usr/local/mongodb/data/local.2 len:1073741824 errno:12 Cannot allocate memory
Thu Apr 21 15:19:37 [initandlisten] ERROR: mmap failed with out of memory. (64 bit build)
Thu Apr 21 15:19:37 [initandlisten] exception in initAndListen std::exception: can't map file memory, terminating
Thu Apr 21 15:19:37 dbexit:
Thu Apr 21 15:19:37 [initandlisten] shutdown: going to close listening sockets...
Thu Apr 21 15:19:37 [initandlisten] shutdown: going to flush diaglog...
Thu Apr 21 15:19:37 [initandlisten] shutdown: going to close sockets...
Thu Apr 21 15:19:37 [initandlisten] shutdown: waiting for fs preallocator...
Thu Apr 21 15:19:38 [initandlisten] shutdown: closing all files...
Thu Apr 21 15:19:38 closeAllFiles() finished
Thu Apr 21 15:19:38 [initandlisten] shutdown: removing fs lock...
Thu Apr 21 15:19:38 dbexit: really exiting now
看来是因为我在虚拟机上做的,内存太小,而mongodb在设置为主从关系时,会创建oplog“creating replication oplog of size: 944MB”,这个日志应该是放在内存中的,所以就爆了“ERROR: mmap failed with out of memory”
解决方法:
(1)设置oplog的大小,用参数--oplogSize来指定,不默认创建944M
(2)放开虚拟内存的限制(虚拟机默认设定512M ),ulimit -v unlimited
再执行主从的启动命令就ok了
疑问?
mongodb如此吃内存,现在还没有做线上应用,希望有用mongodb做应用的给点建议···

Rank: 7Rank: 7Rank: 7

注册时间
2008-9-20
最后登录
2014-8-25
在线时间
483 小时
阅读权限
100
积分
34285
帖子
2190
主题
48
精华
0
UID
307

LT元老

发表于 2011-4-22 09:57:14 |显示全部楼层
关注。

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-6-18
最后登录
2014-5-27
在线时间
160 小时
阅读权限
90
积分
20158
帖子
136
主题
14
精华
1
UID
9568
发表于 2011-4-22 14:03:47 |显示全部楼层
本帖最后由 spitfire00 于 2011-4-22 14:05 编辑

1. MongoDB在32位操作系统出现“mmap failed with out of memory”错误,因为在32位平台MongoDB不允许数据库文件(累计总和)超过2G,而64位平台没有这个限制。64bit操作系统+64bit MongoDb 报“mmap failed with out of memory”错误,是楼主所说的,和虚拟内存限制有关系吧。

2. 其实MongoDB是可以设置配置文件的,可以通过类似下面的命令来启动MongoDB:

# /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongod.conf

也可以自己写启动脚本,楼主请参考netseek的安装脚本,
参考帖子,里面有mongodb的配置文档写法:

http://bbs.linuxtone.org/forum-viewthread-tid-9160-highlight-mongodb.html

官方文档关于conf参数的说明:

http://www.mongodb.org/display/DOCS/File+Based+Configuration

3. oplog的大小和内存没有太大关系,oplogSize相当于mysql数据库的binlog,从库复制的数据都是从oplog也就是local这个库读取的;
--oplopgSize,指定了master往slave同步时,更新日志保存的最大大小,最新版本的mongodb如果不指定参数的话默认是硬盘空间的5%,如果设置太小,slave同步和主库相差远超过了oplog的大小的话,有可能会数据不一致。

详细情况可以看官方文档:
http://www.mongodb.org/display/DOCS/Replication+Oplog+Length

4、使用mongoDB建议使用高性能sas硬盘,追求性能可以考虑使用raid 1+0硬盘,内存根据数据量和业务应用,单机应用内存尽量要大。2台以上机子可以考虑使用Replica Sets(副本集)架构,比M/S要使用的多。




使用道具 举报

Rank: 8Rank: 8

注册时间
2010-6-18
最后登录
2014-5-27
在线时间
160 小时
阅读权限
90
积分
20158
帖子
136
主题
14
精华
1
UID
9568
发表于 2011-4-22 14:07:16 |显示全部楼层
最近有空整理一下使用mongoDB的经验给大家交流一下,希望大家踊跃分享使用经验和技巧。

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-3-25
最后登录
2014-5-16
在线时间
504 小时
阅读权限
90
积分
29319
帖子
61
主题
3
精华
0
UID
2124
发表于 2011-4-22 18:55:39 |显示全部楼层
回复 spitfire00 的帖子

谢谢支持,期待你的经验整理

使用道具 举报

Rank: 4

注册时间
2011-10-10
最后登录
2012-5-21
在线时间
2 小时
阅读权限
50
积分
916
帖子
4
主题
0
精华
0
UID
15718
发表于 2012-4-23 14:53:27 |显示全部楼层
怎么验证有没有成功那

使用道具 举报

Rank: 4

注册时间
2011-10-10
最后登录
2012-5-21
在线时间
2 小时
阅读权限
50
积分
916
帖子
4
主题
0
精华
0
UID
15718
发表于 2012-4-23 15:05:24 |显示全部楼层
谢谢你的分享

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-3-28
最后登录
2014-2-18
在线时间
150 小时
阅读权限
90
积分
27174
帖子
374
主题
18
精华
0
UID
12570
发表于 2012-4-23 15:55:43 |显示全部楼层
大服务器 没事的

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2014-8-30 04:04 , Processed in 0.023850 second(s), 12 queries , Apc On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部