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都需要用同样的方式设置用户名和秘密。
搜狗拼音害死人啊