转自://http://f.dataguru.cn/thread-133804-1-1.html


在个人电脑尤其是虚拟机上,适当使用参数可以加快进程启动速度,减少磁盘占用空间



mongod --replSet abc --dbpath 1 --port 27001 --oplogSize 50 --logpath log.1 --logappend --fork --smallfiles --nojournal

--replSet 集群名
--dbpath 数据文件存储目录
-port 端口
--oplogSize 操作日志,这里设置了50M,对于实验环境足够了,生产环境一般默认就好,5%的磁盘空间,当然越大越好
--logpath 日志文件
--logappend 追加日志方式
--fork 后台运行
--smallfiles 使用小文件
--nojournal 不记录操作日志

使用以上命令启动mongodb很快,而且占用空间小





##################### 分割线  ############################# 

MongoDB副本集的快速搭建


在进行配置副本集的前先进行一点说明
在启动单个mongod实例要启用安全认证 只要在启动的时候增加一个--auth启动参数即可,但是副本集的安全认证不是这样 他需要另外一个启动参数 --keyFile 加上你的密匙文件路径
密匙文件的内容生成可以使用linux命令随机生成
openssl rand -base64 741
生成完后 密匙文件的权限必须设置成没有用户组和其他权限的文件 否则你的mongo实例启动不了 切记!!!!
参考资料
 
副本集的配置过程大致分为两个步骤
1)启动实例
2)初始化副本集
 
副本集的配置过程
 

1.启动三个实例 有一个是仲裁节点

mongod --rest --replSet rs --port 40000 --dbpath /var/lib/mongodb/mongonode1 --directoryperdb --fork --logpath /var/log/mongo/mongodnode1.log --keyFile /root/authfile
mongod --rest --replSet rs --port 40001 --dbpath /var/lib/mongodb/mongonode2 --directoryperdb --fork --logpath /var/log/mongo/mongodnode2.log --keyFile /root/authfile
mongod --rest --replSet rs --port 40002 --dbpath /var/lib/mongodb/mongoarbiter  --fork --logpath /var/log/mongo/mongodarbiter.log --nojournal --keyFile /root/authfile
当然你也可以使用配置文件进行启动3份配置如下

# mongonode1.conf
logpath=/var/log/mongo/mongodnode1.log
logappend=true
 
fork = true
port = 40000
 
dbpath=/var/lib/mongodb/mongonode1
directoryperdb=true
 
replSet=rs
keyFile=/root/authfile
rest=true
 

# mongonode2.conf
logpath=/var/log/mongo/mongodnode2.log
logappend=true
 
fork = true
port = 40001
 
dbpath=/var/lib/mongodb/mongonode2
directoryperdb=true
 
replSet=rs
keyFile=/root/authfile
rest=true
 

# mongoarbiter.conf
logpath=/var/log/mongo/mongodarbiter.log
logappend=true
 
fork = true
port = 40002
 
dbpath=/var/lib/mongodb/mongoarbiter
nojournal=true
nohttpinterface = true
 
replSet=rs
keyFile=/root/authfile
rest=true
 

2.连接到一个非仲裁节点的实例,进行初始化

初始化一个副本集,有3种方式可以:
1)db.runCommand({replSetInitiate : <config_object> } )
2)rs.initiate(<config_object>)
3)rs.initiate()//先初始化,再通过rs.add、rs.remove等方法修改
开始执行如下命令
cfg={
  "_id":"rs",
  "members":[{
    "_id":0,
    "host":"192.168.247.45:40000"
}]
 
rs.initiate(cfg)
rs.add('192.168.247.45:40001')
rs.add('192.168.247.45:40002',{ariterOnly:true})
 
 
简单测试
在主节点执行如下脚本
for(var i=0;i<1000;i++){
    db.zjh.insert({name:'mongo'+i,count:1-i});
}
rs:PRIMARY> db.zjh.ensureIndex({count:1});
到从节点实例进行查看 正确同步
至此你的副本集已经搭建完毕 可以进行你的各种测试了
 
 
members 数组成员属性说明(默认值在括号中):
_id:在副本集中的每一个成员都必须有一个_id表示,这个_id是通常是数字,从0开始增长。需要注意的是当其中一个成员退休了(指从副本集config中移除了),新加入的成员不能重新使用这个退休成员的_id;
host:ip地址和端口号;
arbiterOnly(false):如果是true,则表示这个成员为仲裁节点,不接收数据;
buildIndexes(true):如果设置为false,则会阻止在这个节点上创建第二索引,通常这个节点是作为纯粹的数据备份,从不用来被查询。不过也因为此节点没有第二索引,所以他写入的东西很少,也就需要很少的内存和磁盘。_id的索引还是会被创建的。只有当priority属性设置为0时,此项才能设置为false,一般不会用到这个选项;
hidden(false):如果此项为true,不要告诉客户端的此节点的存在,设置隐藏节点的原因是此节点的数据的使用模式和其他节点大为不同,比如:报表,统计,备份等。设置为ture时,允许你针对这个节点发送非主要查询。
priority(1.0):权重,更高的权重会被选举为主节点
tags({}):一个文档代表这台服务器的位置,有利于位置感知的读写。其实就是表示此节点位于哪个数据中心的,mongodb会根据tags找近的数据中心节点同步数据。
slaveDelay(0):同步数据的延迟,设置为0表示立即更新同步数据。
votes(1):此节点可以发出的投票数,一般不用修改他
settings 对象:settings对象可以在集群建立起来以后用再进行设置,通常使用默认值








Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐