一、安装
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中执行