linux mongo集群,linux mongo 搭建+集群

---------------------------------  Mongo single  -----------------------------------------------------------

Mongo 安装:

1. cd /usr/local/webserver/ && tar zxpf mongodb-linux-x86_64-2.0.6.tgz  && mv mongodb-linux-x86_64-2.0.6 mongodb

2. 编写配置文件如下(单个mongo配置)

vim  /usr/local/webserver/mongodb/conf/mongodb.conf_back

dbpath=/data/db            数据存放路径

logpath=/mongodb_data1log/mongodb_data1.log    日志路径

fork=true       后台启动

port=27019     启动端口

logappend=true     不会覆盖日志文件

3. 启动

/usr/local/webserver/mongodb/bin/mongod -f /usr/local/webserver/mongodb/conf/mongodb.conf

4. 进入数据库:

/usr/local/webserver/mongodb/bin/mongo 192.168.4.188:27017

---------------------------------  Mongo 集群  -----------------------------------------------------------

Mongo集群:

1. 主从模式(master/slave), 双节点 ,一旦主的挂掉, 数据就无法写入

2. 副本集模式(replica set) ,至少三节点, 一主,一辅, 一控制

下面为replica set 配置

1. 192.168.4.188(master)

mkdir -p /mongodb/data/master &&    mkdir -p /mongodb/log/

192.168.4.31(slaver)

mkdir -p /mongodb/data/slaver   &&    mkdir -p /mongodb/log/

192.168.4.32 (arbiter)

mkdir -p /mongodb/data/arbiter   &&    mkdir -p /mongodb/log/

2. 分别编写配置文件如下:

#master.conf

dbpath=/mongodb/data/master

logpath=/mongodb/log/master.log

pidfilepath=/mongodb/master.pid

directoryperdb=true

logappend=true

replSet=testrs

bind_ip=10.10.148.130

port=27017

oplogSize=10000

fork=true

noprealloc=true

#slaver.conf

dbpath=/mongodb/data/slaver

logpath=/mongodb/log/slaver.log

pidfilepath=/mongodb/slaver.pid

directoryperdb=true

logappend=true

replSet=testrs

bind_ip=10.10.148.131

port=27017

oplogSize=10000

fork=true

noprealloc=true

#arbiter.conf

dbpath=/mongodb/data/arbiter

logpath=/mongodb/log/arbiter.log

pidfilepath=/mongodb/arbiter.pid

directoryperdb=true

logappend=true

replSet=testrs

bind_ip=10.10.148.132

port=27017

oplogSize=10000

fork=true

noprealloc=true

参数解释:

dbpath:数据存放目录

logpath:日志存放路径

pidfilepath:进程文件,方便停止mongodb

directoryperdb:为每一个数据库按照数据库名建立文件夹存放

logappend:以追加的方式记录日志

replSet:replica set的名字

bind_ip:mongodb所绑定的ip地址

port:mongodb进程所使用的端口号,默认为27017

oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

fork:以后台方式运行进程

noprealloc:不预先分配存储

3. 分别启动:

/usr/local/webserver/mongodb/bin/mongod -f /usr/local/webserver/mongodb/conf/master.conf

/usr/local/webserver/mongodb/bin/mongod -f /usr/local/webserver/mongodb/conf/slaver.conf

/usr/local/webserver/mongodb/bin/mongod -f /usr/local/webserver/mongodb/conf/arbiter.conf

4. 连接主库192.168.4.188

1. /usr/local/webserver/mongodb/bin/mongo 192.168.4.188:27017

2.  use admin

3. cfg={ _id:"testrs", members:[ {_id:0,host:'192.168.4.188:27017',priority:2}, {_id:1,host:'192.168.4.31:27017',priority:1},{_id:2,host:'192.168.4.32',arbiterOnly:true}] };

4. rs.initiate(cfg)   初始化设置

5. rs.status()  检测配置是否生效

注:cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的10.10.148.130:27017。特别注意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。

配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。如果生效了,执行rs.status()命令会看到如下信息

PRIMARY> rs.status()

{

"set" : "testrs",

"date" : ISODate("2015-08-17T15:56:09Z"),

"myState" : 1,

"syncingTo" : "192.168.4.31:27017",

"members" : [

{

"_id" : 0,

"name" : "192.168.4.188:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"optime" : {

"t" : 1439825218000,

"i" : 1

},

"optimeDate" : ISODate("2015-08-17T15:26:58Z"),

"self" : true

},

{

"_id" : 2,

"name" : "192.168.4.32:27017",

"health" : 1,

"state" : 7,

"stateStr" : "ARBITER",

"uptime" : 2007,

"optime" : {

"t" : 0,

"i" : 0

},

"optimeDate" : ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" : ISODate("2015-08-17T15:56:09Z"),

"pingMs" : 0

},

{

"_id" : 3,

"name" : "192.168.4.31:27017",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 1459,

"optime" : {

"t" : 1439825218000,

"i" : 1

},

"optimeDate" : ISODate("2015-08-17T15:26:58Z"),

"lastHeartbeat" : ISODate("2015-08-17T15:56:08Z"),

"pingMs" : 0

}

],

"ok" : 1

5. 测试:

主:db.t.insert({uid:12345})

db.t.find()

{ "_id" : ObjectId("55d1f1e3abe1ab56e12281a5"), "uid" : 12345 }

辅: db.t.find()

{ "_id" : ObjectId("55d1f1e3abe1ab56e12281a5"), "uid" : 12345 }

有数据同步成功

节点移除:

在主库上执行: rs.remove("192.168.4.31:27017")  其中"192.168.4.188:27017", 为rs.status()  中查询到的 节点的 "name" : "192.168.4.188:27017",

节点添加:

1. 在主库上执行: PRIMARY> rs.add("192.168.4.31:27017")

{ "ok" : 1 }

2. 需要重启mongo数据库 ,否则状态错误,如下:

[root@localhost bin]# ./mongo 192.168.4.31:27017

MongoDB shell version: 2.0.6

connecting to: 192.168.4.31:27017/test

FATAL>    fatal  致命的   不同点

正确状态如下:

[root@localhost bin]# ./mongo 192.168.4.31:27017

MongoDB shell version: 2.0.6

connecting to: 192.168.4.31:27017/test

SECONDARY>    不同点

Mongo的常用命令

db            显示当前是那个数据库

rs.status()   查看节点信息

show dbs;     查看数据库

show collections  查看当前数据库下的表,及索引

use test       进入test库

db.stats()     查看数据库的状态

db.help()      查看db命令帮助

参考网址:

http://blog.csdn.net/luonanqin/article/details/8497860

http://developer.51cto.com/art/201403/434054_all.htm

http://snowolf.iteye.com/blog/1974747

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值