Mongodb集群搭建

三台服务器ip地址:192.168.1.1

                   192.168.1.2

                   192.168.1.3

 

    1. 在三台服务器分别安装mongodb(我采用的是3.2.7版本)
    2. 使用此命令即可下载: curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.7.tgz(版本可以手动的去更改)
    3. 安装完成之后比保证每台都能启动成功:由于这种方法安装在/etc/mongodb.conf没有此配置文件,所以要手动的去创建mongodb.conf
    4. 配置文件如下:根据自己的配置去填写

fork=true     #以守护进程的方式运行,创建服务器进程

 

#安装mongodb时的日志文件

logpath=/alidata/approot/mongodb/mongodb-linux-x86_64-3.2.7/logs/work.log

 

#日志输出方式

logappend=true

 

#mongodb的数据库路径

dbpath=/alidata/approot/mongodb/mongodb-linux-x86_64-3.2.7/data/db

 

#设置副本集的名字

replSet=rs0

 

#如果原先的mongodb没有数据的话就加上这个配置

directoryperdb=true

主和从的配置文件要一直,log和db可以不同.

    1. mongodb.conf配置好之后,进入到mongodb的安装目录下面的bin目录执行以下命令:

如果mongodb已经启动,要先杀掉mongodb的启动进程.

./mongod -f /etc/mongodb.conf

 

查看进程是都正常启动:

ps -ef|grep mongodb

ps -ef|grep mongod

ps -ef|grep mongo

 

启动成功!

    1. 然后进步mongodb的bin目录下执行./mongo之后.shou dbs 会报错:

   

是因为数据得初始化:解决方法:

先试用命令关闭掉mongodb:

./mongod --dbpath=/alidata/approot/mongodb/mongodb-linux-x86_64-3.2.7/data/db/ --shutdown

 

然后在etc/mongodb.conf配置文件加上配置参数:

oplogSize = 4096

journal = true

 

然后再次启动: ./mongod -f /etc/mongodb.conf

三台服务器的配置文件都要改为一致,启动成功之后进去到主的mongo

执行命令:

rs.initiate(

        {

      _id: "rs0",

      version: 1,

      members: [

         { _id: 0, host : "192.168.1.1:27017", priority: 30},

         { _id: 1, host : "192.168.1.2:27017", priority: 20 },

         { _id: 2, host : "192.168.1.3:27017", priority: 10 }

      ]

   }

)

然后使用命令:rs.ststus()查看下:会出现以下状态:

       {

"info" : "run rs.initiate(...) if not yet done for the set",

"ok" : 0,

"errmsg" : "no replset config has been received",

"code" : 94

}

 如果显示出来这样就是另外两台写入过数据

 停掉两台从的 :把数据清空了 或者换一个文件夹

 mv db db.bak

 mkdir db

 chmod -R 777 db

 然后启动

     再次执行上面的命令:rs.initiate(

        {

      _id: "rs0",

      version: 1,

      members: [

         { _id: 0, host : "123.57.8.252:27017", priority: 30},

         { _id: 1, host : "60.205.5.160:27017", priority: 20 },

         { _id: 2, host : "101.201.54.247:27017", priority: 10 }

      ]

   }

)

    然后使用命令:rs.status()

    然后去从节点看下logs日志

    然后使用命令:top  查看下负载

    然后在从节点看下同步进程:必须进入到logs目录下面 才能执行以下面的查看进程的命令

   使用命令:tail -f work.log

   然后进去到主节点使用命令:use test

   然后使用命令:find image_weibo.files.find()

    如果有数据,就去从节点的mongo执行命令:

   rs.slaveOk()

   两个从节点都要执行这个命令:

   然后使用命令use test

   然后使用命令db.image_weibo.files.find() 查看是否有数据 如果有数据就是同步成功了   OK!

   然后在主节点插入数据测试:

   db.image_weibo.insert({title: 'MongoDB 教程',

    description: 'MongoDB 是一个 Nosql 数据库',

    by: '菜鸟教程',

    url: 'http://www.runoob.com',

    tags: ['mongodb', 'database', 'NoSQL'],

    likes: 100

})

 

已经全部配置成功:当你进去到另外两台从服务器的mongo的时候:

每次都要首先输入:rs.slaveOK()才能往下面去进行:

 

代码连接主从方法:

$conn=new \MongoClient("mongodb://192.168.1.1:27017,192.168.1.2:27017, 192.168.1.3:27017");

最后插入数据测试:数据能正常同步:!!!!!

 

 

 

posted @ 2017-05-19 11:56  yuancr  阅读(89)  评论(0)    收藏  举报