Mongodb集群主从复制master/slave配置

发布时间:2020-10-08编辑:脚本学堂
本文介绍下,在Mongodb数据库集群中,实现master/slave主从复制的配置方法,有需要的朋友参考下。

Mongodb集群的配置:
以下测试放于同一台机器进行配置,所以IP地址一样,如果是在不同的服务器上更换IP即可。

一、目录结构
拷贝两份mongodb到/home/scotte.ye/mongo1和/home/scotte.ye/mongo2

二、开启mongodb
1)、主机器:
 

复制代码 代码示例:
#cd /home/scotte.ye/mongo1/bin
#./mongod --master -port=10111 -dbpath=/home/data/10111 -nohttpinterface &

开启了主服务器就开启。

几个关键参数的说明(可以查看下帮助,./mongod --help):
--master:标识当前开启的mongodb是作为主服务器的
-port:当前服务器的监听服务端口。默认27017
-dbpath:批当前程序运行的日志保存路径。默认/data/db。注这个路径mongodb不人自己创建,所以一定要自己手工来创建,否则程序不能正常启动。
-nohttpinterface:不开启网页接口,也就是不能通过网页的形式查看服务器运行状态。默认是会在28017端口开启一个网页服务提供用户查看服务器状态。因为当前都在同一个机器上,所以如果开启这个两个会产生冲突,所以不能开启。

2)、从机器:
 

复制代码 代码示例:
#cd /home/scotte.ye/mongo1/bin
#./mongod --slave --source=192.168.35.106:10111 -port=10112 -dbpath=/home/data/10112 -nohttpinterface &

开启一个从服务器,多个从也是按相同的方式来开启。

几个关键的参数说明:
--slave:指明当前开启的为从服务器。
--source:标明当前从服务器要连接的主服务器的端口和IP

其它参数同主,所以不再赘述。

三,集群特点
1、只有主服务器允许写入,其它从服务器只能读取。
2、从服务器启动的时候马上就会和主服务器进行数据同步,所以不要担心后起的从服务器不会和主服务器同步之前的数据,也不要我们自己手动操作。

四,集群的主从切换
1、主机宕机,slave顶替
停止slave的mongod进程
删除slave目录下的local.*文件
以--master的模式启动B

2、切换Master/Slave(原来的master是正常运行的)
 

用fsync命令暂停master的写操作 //确保切换的时候主从数据同步
关闭slave服务
清空slave目录下的local.*文件
用--master重启slave为master

在原来的slave,即现在的master上面执行一次写操作,生成oplog,获取第一个同步点,因为slave与master的数据同步是通过oplog来实现的。
说明:这一步很重要,一定要完成。
关闭现master服务,同时slave也会生成新的local.*文件
关闭原master,用现master上面的local.*文件替换原master上面的local.*.因为文件比较大,所以最好是压缩拷贝
再用--master选项重启新master服务
再用--slave的模式重启原master服务,注意还要加一个-fastsync选项。这个和用fsync来暂停master有关。

如果原来的master不是正常的,那么此时可以跳过第一步,拷贝新master的文件到原master机器,重启服务即可。

3、更新主服务器位置
假设原来从主机的启动方式如下:
 

复制代码 代码示例:
$ mongod --slave --source 192.168.35.106:10111

此时,如果想更换主服务器的地址,可以通过如下方式:
重启mongod服务,不要加-slave 和 -source选项:
 

复制代码 代码示例:
$ mongod

启动shell,执行如下操作:
 

复制代码 代码示例:
> use local
switched to db local
>db.sources.update({host:"192.168.356.106:10111"},{$set:{host:"192.168.35.106:10112"}})

然后,再重启服务器:
 

复制代码 代码示例:
$ ./mongod --slave --source=192.168.35.106:10112
$ # or
$ ./mongod --slave