Mongodb集群主从复制master/slave配置
Mongodb集群的配置:
以下测试放于同一台机器进行配置,所以IP地址一样,如果是在不同的服务器上更换IP即可。
一、目录结构
拷贝两份mongodb到/home/scotte.ye/mongo1和/home/scotte.ye/mongo2
二、开启mongodb
1)、主机器:
#./mongod --master -port=10111 -dbpath=/home/data/10111 -nohttpinterface &
开启了主服务器就开启。
几个关键参数的说明(可以查看下帮助,./mongod --help):
--master:标识当前开启的mongodb是作为主服务器的
-port:当前服务器的监听服务端口。默认27017
-dbpath:批当前程序运行的日志保存路径。默认/data/db。注这个路径mongodb不人自己创建,所以一定要自己手工来创建,否则程序不能正常启动。
-nohttpinterface:不开启网页接口,也就是不能通过网页的形式查看服务器运行状态。默认是会在28017端口开启一个网页服务提供用户查看服务器状态。因为当前都在同一个机器上,所以如果开启这个两个会产生冲突,所以不能开启。
2)、从机器:
#./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是正常运行的)
关闭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选项:
启动shell,执行如下操作:
switched to db local
>db.sources.update({host:"192.168.356.106:10111"},{$set:{host:"192.168.35.106:10112"}})
然后,再重启服务器:
$ # or
$ ./mongod --slave
您可能感兴趣的文章: