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

Mongodb的装配、主从配置、replicaSet配置

2012-07-16 
Mongodb的安装、主从配置、replicaSet配置?? ? ? ?Mongodb的安装、主从配置、replicaSet配置?环境:linux 64bit

Mongodb的安装、主从配置、replicaSet配置

?


? ? ? ?Mongodb的安装、主从配置、replicaSet配置

?

环境:linux 64bit

版本:2.0.1

位置:/opt/mongodb

安装步骤:

tar –zxvf mongodb-linux-x86_64-2.0.1.tar –C /opt/mongodb

mkdir /opt/mongodb/data

touch /opt/mongodb/logs

?

安装是很简单的,关键是下面的启动的配置。启动配置有三种情况,分别是正常的单主机启动,主从启动,副本集启动三种方式。

启动

cd /opt/mongodb/bin

/opt/mongodb/bin/mongod –f mongodb.conf

#mongodb.conf是自定义的启动配置文件,其中参数auth表明需要认证才能登录,内容如下:

#start as daemon and need authentication

port=27017

fork=true

dbpath=/opt/mongodb/data/

logpath=/opt/mongodb/logs

auth=true

?

设置开机自动启动(可选)

echo "/opt/mongodb/bin/mongod –f /opt/mongodb/bin/mongodb.conf" >> /etc/rc.local

?

设置密码

#连接mongodb

cd /opt/mongodb/bin

./mongo

#默认进入到mongodb默认的test库

#为数据库设置用户名密码

#首先切换到admin库,先建立一个管理员账号

> use admin

> db.addUser("root","root");

#切换到test库

use test

#为test库添加用户名和密码

> db.addUser("testUser","123456");

#注:若此时显示

Tue May 22 16:16:29 uncaught exception: error {

??????? "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",

??????? "code" : 10057

}

说明设置密码已生效,此时要先转到admin库,输入认证再转回到test库设置用户名密码,如下:

use admin

db.auth(“root”,”root”);

use test

#下次再连接mongodb时需要使用如下方式:

./mongo –u testUser –p 123456

#删除用户

Db.system.users.remove({“user”:”testUser”});

#注:mongodb的用户名和密码都是针对每一个库的,所以不同的库可以设置不同的用户名和密码。

实际上现在这种方式已经不推荐使用了,推荐使用的是replicaset,下面会讲到

假设已经将mongodb安装在了两台主机上ip分别为192.168.0.1和192.168.0.2上,下面是启动配置

启动master(192.168.0.1)
cd /opt/mongodb/
./bin/mongod --dbpath=/opt/mongodb/data --logpath=/opt/mongodb/logs
--master --oplogSize 64 --logappend ?--port=27017 –fork

?

启动slave(192.168.0.2)
cd /opt/mongodb/
./bin/mongod --dbpath=/opt/mongodb/data --logpath=/opt/mongodb/logs
--slave --source 192.168.0.1 --only test --slavedelay 10
--logappend ?--port=27017 –fork

?

这样配置就完成了,当然也可以将这些启动参数像前面一样写在配置文件中,启动时使用配置文件启动。

配置完成后可以测试一下,如下:

在主机器上添加数据
cd /opt/mongodb/
./bin/mongo
db.foo.save({"id":123,"name":gongyong});
成功的话可以在从服务器看到数据:
cd /opt/mongodb/
./bin/mongo
db.foo.find({"id":123})

?

?

我们假设有三台服务器,分别已经安装好了mongodb,有如下三段配置

#10.127.65.92上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.95:27017

?

#10.127.65.95上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.92:27017

?

#10.11.154.91上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.92:27017,10.127.65.95:27017

分别将上面三段配置复制后放到每台mongodb的某个位置(推荐bin目录),三台服务器分别使用上面的配置启动后,要进行初始化

首先连接上65.92这台mongo

./mongo -port 27017

这样就连接上了mongodb的默认库test,然后输入如下指令:

> config_rs1={_id:'rs1',members:[

...{_id:0,host:'10.127.65.92:27017',priority:10},

...{_id:1,host:'10.127.65.95:27017',priority:9},

...{_id:2,host:'10.11.154.91:27017',priority:9}]

...}

> rs.initiate(config_rs1);

回车后出现下面的提示:

{

?? “info”:"Config now saved locallly. should come online in about a minute.",

?? " ok":1

}

说明初始化成功,注意只需要在其中任何一台上初始化就可以

?

运行如下指令查看是否成功

rs.status()

然后退出再重新连接,发现光标变成下面这种就对了:

rs1:PRIMARY

?

配置完成后可以进行秘密和用户名的设置,设置方式前面已经提到,需要注意的是,每台mongodb都需要用同样的方式设置用户名和秘密。

搜狗拼音害死人啊

热点排行