首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MongoDB装配、主从、复制集

2013-11-05 
MongoDB安装、主从、复制集一、安装1、Window环境下:?下载地址:http://www.mongodb.org/downloads???? 本人安

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文件。

?

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中执行

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

热点排行