mongodb集群搭建(双机)
来源:互联网 发布:单例设计模式 java 编辑:程序博客网 时间:2024/05/23 01:15
搭建数据库集群从未如此简单过, 想起做rac的时候, raid, lv, vg, 双机互信, 建库等一大堆弄下来, 在完全不出错的情况下, 都要接近6个小时.
环境准备.
a). 操作系统, centos6.5 x86.64.
b). mongodb: mongodb-linux-x86_64-2.6.5.gz
解压好mongodb之后就可以直接开始建集群了.
1. 先创建6个文件夹.
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/dat0
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/dat1
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/dat2
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log0
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log1
/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log2
2. 因为只有一台机器, 所以使用了三个不同的端口, 开三个console, 依次运行下面的三条命令.
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log0/log.log --logappend
mongod --replSet gmlogx --dbpath=/usr/local/mongodb-2.6.5/gmlogx/dat1 --port 10001 --oplogSize=512 \
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log1/log.log --logappend
mongod --replSet gmlogx --dbpath=/usr/local/mongodb-2.6.5/gmlogx/dat2 --port 10002 --oplogSize=512 \
--logpath=/usr/local/mongodb-linux-x86_64-2.6.5/gmlogx/log2/log.log --logappend
3. 部分参数解释:
--replSet gmlogx, 指定了集群的名称gmlogx.
--port 10000, 指的是数据库节点的服务端口为10000.
--oplogSize=512, 指的是给mongdb的操作日志缓冲区大小, 单位是M, 即512M. 这里有个小坑. 如果不指定oplogSize的话, 两个数据库节点
就占用了90G磁盘, 如下图.
4. 我们的机器ip是192.168.1.117, 连接上其中一个接点, 依次键入下面的命令.
[root@xzw gmlogx]# mongo 192.168.1.117:10000MongoDB shell version: 2.6.5connecting to: 192.168.1.117:10000/test> var cfg = {_id: "gmlogx", members: []}> cfg.members.push({_id: 0, host: "192.168.1.117:10000"});1> cfg.members.push({_id: 1, host: "192.168.1.117:10001"});2> cfg.members.push({_id: 2, host: "192.168.1.117:10002", arbiterOnly: true});3> rs.initiate(cfg);{"info" : "Config now saved locally. Should come online in about a minute.","ok" : 1}>上面的arbiterOnly: true, 表示这是一个仲裁节点, 它仅用于选举和协调另外两个数据库节点的主备关系. 仲裁节点本身不承载业务数据. 事实上
这种仲裁者的集群环境不被<<mongodb权威指南>>推荐, 原话是: 如果可能, 尽量在副本集中使用奇数个数据成员, 而不要使用仲裁者.
这里可能有个地方需要注意, 在敲上面的命令之前, 端口可能还没有ready, 请先确认两个数据库节点的端口已经LISTEN
5. 退出mongo-shell, 重新进入一次就可以发现, 192.168.1.117:10000已经被选举成主节点.
[root@xzw gmlogx]# mongo 192.168.1.117:10000MongoDB shell version: 2.6.5connecting to: 192.168.1.117:10000/testgmlogx:PRIMARY> rs.status(){"set" : "gmlogx","date" : ISODate("2014-11-14T04:24:45Z"),"myState" : 1,"members" : [{"_id" : 0,"name" : "192.168.1.117:10000","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 1101,"optime" : Timestamp(1415938107, 1),"optimeDate" : ISODate("2014-11-14T04:08:27Z"),"electionTime" : Timestamp(1415938116, 1),"electionDate" : ISODate("2014-11-14T04:08:36Z"),"self" : true},{"_id" : 1,"name" : "192.168.1.117:10001","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 977,"optime" : Timestamp(1415938107, 1),"optimeDate" : ISODate("2014-11-14T04:08:27Z"),"lastHeartbeat" : ISODate("2014-11-14T04:24:44Z"),"lastHeartbeatRecv" : ISODate("2014-11-14T04:24:45Z"),"pingMs" : 0,"syncingTo" : "192.168.1.117:10000"},{"_id" : 2,"name" : "192.168.1.117:10002","health" : 1,"state" : 7,"stateStr" : "ARBITER","uptime" : 977,"lastHeartbeat" : ISODate("2014-11-14T04:24:44Z"),"lastHeartbeatRecv" : ISODate("2014-11-14T04:24:45Z"),"pingMs" : 0}],"ok" : 1}gmlogx:PRIMARY>
6. 创建一个database, 并尝试插入一条记录.
gmlogx:PRIMARY> use gmlogxswitched to db gmlogxgmlogx:PRIMARY> db.logx.insert({usr: 'usr', age: 32})WriteResult({ "nInserted" : 1 })gmlogx:PRIMARY>
7. 通过java-driver进行查询操作, 如果你想做到读写分离的效果, 可以直接访问备节点(192.168.1.117:10001).
public static void main(String[] args) throws UnknownHostException{MongoOptions mo = new MongoOptions();List<ServerAddress> addr = Arrays.asList(new ServerAddress("192.168.1.117", 10000), new ServerAddress("192.168.1.117", 10001));mo.readPreference = ReadPreference.secondary(); /* 可从副本中读取. */Mongo mg = new Mongo(addr, mo);DBCollection coll = mg.getDB("gmlogx").getCollection("logx");DBCursor cur = coll.find();while (cur.hasNext())System.out.println(cur.next());}
- mongodb集群搭建(双机)
- MongoDB双机集群操作记录
- MongoDB 双机集群配置与管理
- 关于weblogic 双机集群搭建方案
- 搭建MongoDB集群
- mongodb集群搭建
- mongodb集群搭建
- mongodb 集群搭建
- MongoDB 分片集群搭建
- mongodb集群搭建-分片
- mongodb集群搭建
- Mongodb集群配置搭建
- MongoDB -- 集群搭建
- MongoDB分片集群搭建
- MongoDB分布式集群搭建
- MongoDB集群搭建实例
- MongoDB集群搭建
- Mongodb集群搭建
- sqlite3的使用
- datagirdview中,单元格根据另一个单元格的数据变动而自动计算
- 基于百度地图3.1.1开发导航
- 鸟哥私房菜shell script的脚本学习
- [ios2] ios7UI适配 【转】 - 金建彤
- mongodb集群搭建(双机)
- centos下Mysql-5.5.19数据库的安装
- notepad++ 向前 向后 前进 后退 插件 LocationNav
- 简单工厂模式
- 开发微信公众平台的基本功能
- 深入理解JAVA的几个例子
- jQuery源码分析-01总体架构
- poj 2524-Ubiquitous Religions(并查集)
- rhythmbox乱码解决方案