MongoDB Master-Slaver集群部署

一个是以主模式启动,另一个属于从模式启动。

1.主从结构配置

MongoDB Master-Slaver集群部署_第1张图片

主服务器:192.168.110.71
备服务器:192.168.100.90
2.安装mongodb
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.8.tgz
tar -zxvf mongodb-linux-x86_64-2.6.8.tgz 
mv mongodb-linux-x86_64-2.6.8 mongodb-2.6.8
cd mongodb-2.6.8/
mkdir data
mkdir logs
mkdir conf
两台机器相同。

3.配置mongodb
主服务器:conf/mongodb.conf
master=true
fork=true
bind_ip=192.168.110.71
port=10111
dbpath=/home/slim/mongodb-2.6.8/data/
logpath=/home/slim/mongodb-2.6.8/logs/master.log
pidfilepath=/home/slim/mongodb-2.6.8/data/master.pid
logappend=true
oplogSize=10000
备服务器:conf/mongodb.conf

slave=true
fork=true
source=192.168.110.71:10111
bind_ip=192.168.100.90
port=10111
dbpath=/home/slim/mongodb-2.6.8/data/
logpath=/home/slim/mongodb-2.6.8/logs/master.log
pidfilepath=/home/slim/mongodb-2.6.8/data/master.pid
logappend=true
oplogSize=10000
slavedelay=5
4.启动服务
./bin/mongod -f conf/mongodb.conf &

5.测试服务
在主节点使用客户端命令mongo登录,添加数据

./bin/mongo -host 192.168.110.71 -port 10111
> use testuse test
switched to db test
> db.user.insert({_id:1,name:'samlee',age:80});db.user.insert({_id:1,name:'samlee',age:80});
WriteResult({ "nInserted" : 1 })
> db.user.find();db.user.find();
{ "_id" : 1, "name" : "samlee", "age" : 80 }
登录从节点:

./bin/mongo -host 192.168.100.90 -port 10111
> use testuse test
switched to db test
> db.user.find();db.user.find();
{ "_id" : 1, "name" : "samlee", "age" : 80 }
可以看到数据已经同步。
在 slave 数据库服务器上执行如下操作:

> db.user.insert({_id:2,name:'Jack',age:23});
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })
提示 not master ,所以 slave 服务器只可以执行读操作,不可以执行写操作。

6.相关配置参数

Master
--master master 模式
--oplogSize arg size limit (in MB) for op log
Slave
--slave slave 模式
--source arg source 指定 master 位置
--only arg 单独指定备份某一 database
--slavedelay arg 指定与 Master 延迟时间(秒)
--autoresync 当 Slave 数据过时后自动重连
7.Slave 顶替 Master
如果上面的主服务器A宕了, 此时需要用B机器来顶替 master 服务,
步骤如下:

1)停止B 进程(mongod)
2)删除B 数据目录中的 local.*
3)以--master 模式启动 B
8.切换 Master/Slave 角色
a) 假设已经具备主机 A 和从机 B,此时想切换它们的角色,步骤如下:(假设 A 是健康的)
b) 用 fsync 命令暂停 A 上的写操作,
c) 确定 B 是从机,关闭 B 上的服务
d) 清空 B 上的 local.*文件
e) 用 -master 选项重启 B 服务
f) 在 B 上执行一次写操作,初始化 oplog,获得一个同步起始点
g) 关闭 B 服务,此时 B 已经有了新的 local.*文件
h) 关闭 A 服务,并且用 B 上新的 local.*文件来代替 A 上的 local.*文件(拷贝之前,记得先
压缩,因为文件可能很大)
i) 用 -master 选项重启 B 服务
j) 在平时的 slave 选项上加一个-fastsync 选项来重启 A 服务
如果 A 不是健康的,但是硬件是健康的,那么跳过上面的前两步,并且用 B 上所有文件去
替换 A 上的文件,重启服务。

9.更新主服务器位置
假设现有从机启动方式如下:
$ mongod --slave --source 192.168.110.71:10111
此时如果想更换主机的位置,可以通过以下的步骤来完成:
重启 mongod 服务,不要加-slave 和 –source 选项:
$ mongod
启动 shell,执行如下操作:
> use local
switched to db local
> db.sources.update({host : "192.168.110.71:10111"},{$set : {host : "192.168.110.100:10111"}})
接着重启从机上的服务:
$ ./mongod --slave --source 192.168.110.100:10111
$ # or
$ ./mongod --slave

你可能感兴趣的:(MongoDB,MongoDB学习与应用)