MongoDB安装、主从、复制集

一、安装

1、Window环境下:

下载地址:http://www.mongodb.org/downloads     本人安装:2.4.6版本64位(mongodb-win32-x86_64-2.4.6.zip),将ZIP包解压后放到任意盘符下,本人解压到D:盘下一个新建的一个MongoDB的文件夹下(以下配置都以D盘目录来进行配置)。

1)准备工作:

      在任意目录下新建一个文件夹用以存放MongoDB的数据库安装目录,本人安装在了D下新建的一个data的文件下(此data文件大概要3个G左右)。。

       在任意目录下新建一个文件夹用以存放MongoDB的数据库服务器日志文件,并且要在文件夹下新建一个日志文件,本人在D:/MongoDB/目录下新建了log文件夹,并在此文件夹下新建了mongodb.log文件。

扫描二维码关注公众号,回复: 1260436 查看本文章

2) 安装

a)命令安装 (数据库服务会随着命令窗体的关闭而关闭):

       在相应文件下新建一个任意名称的.bat文件,在.bat文件中写入下命令(当然此处不创建.bat在CMD中直接输入此命令也是即可的):

   D:\MongoDB\bin\mongod.exe --dbpath=D:\data     --logpath= D:\MongoDB/log/mongodb.log

运行此.bat文件就可以打开MongoDB数据库服务了。

常用指令说明:

--dbpath:用以指定数据库的安装目录,此目录随意设置

--port:可以在命令中加入--port=xxxxx指令用以指定mongoDB数据库服务所使用的端口,如果不指定默认为27017端口

--logpath:用以指定数据库的日志文件,此目录可随意设置,但前提mongodb.log日志文件要提前设置完成

--fork=true:可以在命令中加入此命令用以指定此数据库服务从后台执行(也就是说数据库服务不会随着.bat窗口的关闭而停止,需要自己手动杀进程来完成,一般本地自己Hellow world不推荐),如果指定了想关闭数据库只有自己找到相应的MongoDB进程杀掉即可。

b)配置文件安装(由于MongoDB启动命令过长,读写不方便可以使用命令指定配置文件形式安装)

准备工作:在任意目录下新建xxxx.config的配置文件,在配置文件中写上如下指示:

##安装目录

dbpath=D:\data

##日志目录
logpath=D:\MongoDB/log/mongodb.log

##是否后台运行 此时是注释掉的
##fork=true

##端口 不写默认为27017端口
port=27017

(本人将自己的配置文件新建在了D:/MongoDB/mongodb.config中)

 在相应文件下新建一个任意名称的.bat文件,在.bat文件中写入下命令(当然此处不创建.bat在CMD中直接输入此命令也是即可的):

     D:\MongoDB\bin\mongod.exe  -f   D:/MongoDB/mongodb.config

运行此.bat文件就可以打开MongoDB数据库服务了。

3)检测安装是否完成可以在IE地址中输入:http://localhost:27017/  或者 http://127.0.0.1:27017/ 来检测是否安装成功,如果成功可以正确看到此信息:

You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number

也可以输入:http://localhost:28017/ 此地址进入到MongoDB数据库管理页面(此端口28017实际就是比您设置的端口+1000,比如您设置的是7777那此端口就为8777)

4)客户端使用(使用客户端连接MongoDB数据库服务器简单测试,但前提条件是数据库服务已经开启):

 在相应文件下新建一个任意名称的.bat文件,在.bat文件中写入下命令(当然此处不创建.bat在CMD中直接输入此命令也是即可的):

   D:\MongoDB\bin\mongod.exe     localhost:27017

运行此.bat文件就可以打开MongoDB客户端服务了,看到以下信息表示连接完成,可以输入简单命令测试下了:

MongoDB shell version: 2.4.6
connecting to: localhost:27017/test

2、linux环境下安装

 下载地址:http://www.mongodb.org/downloads     本人安装:2.4.7版本64位(mongodb-linux-x86_64-2.4.7.tar),将tar包解压后放到任意盘符下,本人解压到/opt/目录下一个新建的一个MongoDB的文件夹下(以下配置都以/opt/目录来进行配置),命令如下所示:

tar -xvf mongodb-linux-x86_64-2.4.7.tar   解压

mv  mongodb-linux-x86_64-2.4.7   mongodb-2.4.7 重命名

1)准备工作:

      在任意目录下新建一个文件夹用以存放MongoDB的数据库安装目录,本人安装在了/home/${userName}/目录下新建的一个data的文件下(此data文件大概要3个G左右),命令如下所示(${userName}表示你的用户名)。

mkdir data 新建data 文件件

       在任意目录下新建一个文件夹用以存放MongoDB的数据库服务器日志文件,并且要在文件夹下新建一个日志文件,本人在/home/${userName}/MongoDB/目录下新建了log文件夹,并在此文件夹下新建了mongodb.log文件,命令如下所示(${userName}表示你的用户名。

 mkdir MongoDB

touch mongodb.log

2) 安装

a)命令安装 (数据库服务会随着命令窗体的关闭而关闭):

       在相应文件下新建一个任意名称的.sh文件,在.sh文件中写入下命令(${userName}表示你的用户名:

   /opt/mongodb-2.4.7/bin/mongod --dbpath=/home/${userName}/data     --logpath= /home/${userName}/log/mongodb.log

运行此.sh文件就可以打开MongoDB数据库服务了。

sh xxxx.sh

常用指令说明:

--dbpath:用以指定数据库的安装目录,此目录随意设置

--port:可以在命令中加入--port=xxxxx指令用以指定mongoDB数据库服务所使用的端口,如果不指定默认为27017端口

--logpath:用以指定数据库的日志文件,此目录可随意设置,但前提mongodb.log日志文件要提前设置完成

--fork=true:可以在命令中加入此命令用以指定此数据库服务从后台执行(也就是说数据库服务不会随着.bat窗口的关闭而停止,需要自己手动杀进程来完成,一般本地自己Hellow world不推荐),如果指定了想关闭数据库只有自己找到相应的MongoDB进程杀掉即可。

b)配置文件安装(由于MongoDB启动命令过长,读写不方便可以使用命令指定配置文件形式安装)

准备工作:在任意目录下新建xxxx.config的配置文件,在配置文件中写上如下指示:

touch xxxx.config

##安装目录

dbpath=/home/${userName}/data

##日志目录
logpath=/home/${userName}//log/mongodb.log

##是否后台运行 此时是注释掉的
##fork=true

##端口 不写默认为27017端口
port=27017

##用于指定访问的IP地址

bind_ip=192.168.0.183

(本人将自己的配置文件新建在了/opt/mongodb-2.4.7/mongodb.config中)

 在相应文件下新建一个任意名称的.sh文件,在.sh文件中写入下命令:

     /opt/mongodb-2.4.7/bin/mongod   -f   /opt/mongodb-2.4.7/mongodb.config

运行此.sh文件就可以打开MongoDB数据库服务了。

sh xxx.sh

3)检测安装是否完成可以在IE地址中输入:http://192.168.0.183:27017/ 来检测是否安装成功,如果成功可以正确看到此信息:

You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number

也可以输入:http://192.168.0.183:28017/ 此地址进入到MongoDB数据库管理页面(此端口28017实际就是比您设置的端口+1000,比如您设置的是7777那此端口就为8777)

4)linux 中mongoDB数据库服务在后台启动时该如何关闭呢?关闭命令如下所以:

ps aux | grep mongod       可以查到mongoDB 的进程信息

##查询结果例子:
${username}   7516  0.7  1.5 354372 32748 ?        Sl   14:05   0:00 /opt/mongodb-2.4.7/bin/mongod -f /opt/mongodb-2.4.7/mongo.config
##停止mongoDB 命令kill -2 使用-2 不要使用-9
kill -2 7516

二、可视话的MongoDB客户端安装

Window系统下使用的话:推荐使用Robomongo工具

下载地址: http://www.robomongo.org

操作比较容易非常简单,不做多解释。

三、MongoDB配置复制集合

1、Master-slave(主从复制):从机会定时访问主机的oplog.js日志而实现与主机数据信息实时同步,用以主机损坏数据丢失。但主服务当机时,从机服务无法继续使用,系统会抛出错误信息

其中主机启动命令如下所示(window环境):

 D:\mongoDB\bin\mongod.exe --dbpath=D:\mongoDB\data --logpath= D:\mongoDB\log\mongodb.log --port=7777 --master

--master  用以表明是主机

其中从机启动命令如下所示:

E:\mongoDB\bin\mongod.exe --dbpath=E:\mongoDB\data --port=8888 --slave  --source=localhost:7777 

--slave 用以表明是从机 

--source=localhost:7777  用以表明是那台主机的从机,localhost可以指定为IP地址

此时请注意从机放在了E盘下(可包含多个从机配置信息)。

中从关系测试:可以使用以下向主机中插入数据,在从机中查看数据来进行对主从关系的测试。

   D:\mongoDB\bin\mongod.exe     localhost:7777

连接客户端连接到主机,在主机中对数据库执行插入数据操作

use test

db.user.insert({"name":"test1","age":17})

db.user.find()

此时可以查到刚插入的数据

然后继续使用

 E:\mongoDB\bin\mongod.exe     localhost:8888

连接从机

use test

db.user.find()  

此时就可以看到您刚刚在主机中插入的数据 已经同步到了从机数据库中。

2、Replica Sets(复制集):数据库集群中并没有强制的主从关系,主服务器是从多个服务器中投票选举出来的,每个服务器都有可能担当主服务器,如果主服务器当机,会从其他服务器中重新投票选举出一台服务器来担当主服务器。

以下三台服务器的启动名领如下所示:

D:\mongoDB\bin\mongod.exe --dbpath D:\mongoDB\data --port 7777 --replSet     rs1

E:\mongoDB\bin\mongod.exe --dbpath D:\mongoDB\data --port 8888 --replSet     rs1

 F:\mongoDB\bin\mongod.exe --dbpath D:\mongoDB\data --port 9999--replSet     rs1

--replSet:用以指明复制集的名称

rs1:为此次复制集合的名称,此名称自己随意定义

*初始化复制集合环境信息

config_rs1={_id:'rs1',members:[{_id:1,host:'localhost:7777'},{_id:2,host:'localhost:8888'},{_id:3,host:'localhost:9999'}]}
rs.initiate(config_rs1)

或者

db.runCommand({"replSetInitiate":{"_id":"rs1","members":[{"_id":1,"host":"localhost:7777"},{"_id":2,"host":"localhost:8888"},{"_id":3,"host":"localhost:9999"}]}})

这两种方式用以初始化复制集合信息

在复制集合使用测试时我们打出如下命令:

 E:\mongoDB\bin\mongod.exe     localhost:7777

如果我们看到的是:
connecting to: localhost:7777/test
rs1:SECONDARY>

这种信息,这表示此事 localhost:7777数据库是从机服务,此时localhost:7777客户端对存储的数据进行任何操作,连简单的查询都会提示出"not master and slaveOk=false"错误,此错误表示该服务器不可以对存储的数据进行读操作。但它具有rs.status()指令执行权限,用以查询当前复制集的状态信息。如果你想在这个服务器中具有读操作时需要执行以下命令:

db.getMongo().setSlaveOk()   或者rs.slaveOK() 都可以从而让这台服务器对存储的数据具有了读的权限(只有读的权限)

如果我们看到的是:

connecting to: localhost:7777/test
rs1:PRIMARY>

此时表示当前7777这台服务器为主服务器,它具有可操作的任何权限

常见的命令有:

rs.status() 这个命令不管是服务是PRIMARY,还是SECONDARY都可以执行此命令来查询当前复制集状态

rs.add("localhost:9899") 此命令可以向复制集中新增端口为9899的从机

rs.remove("localhost:9899")此命令可以删除复制集中端口为9899的从机

rs.freeze(30) 此命令可以让一台从机停止30秒不参加选举,处于冰冻状态。需要在Secondary从机中执行,不可以在主机中PRIMARY中执行
rs.stepDown(30)此命令可以让主机在30秒后降级为从机,只能在主机中PRIMARY中执行

猜你喜欢

转载自timerbin.iteye.com/blog/1963548