码迷,mamicode.com
首页 > 系统相关 > 详细

linux mongo 搭建+集群

时间:2015-10-26 13:54:13      阅读:254      评论:0      收藏:0      [点我收藏+]

标签: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



linux mongo 搭建+集群

标签:linux mongo 搭建 集群

原文地址:http://2385662.blog.51cto.com/2375662/1706257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!