主从复制是生成环境中最基本的架构方式,能很好的完成热备份、故障切换等应用,另外也是读扩展的基础。
mongodb并没有限制从机的个数,但是,mongodb并不支持“菊花式”的复制,所有数据只能从master进行复制,所以,从服务器最好不要过多,推荐不超过12个。
下面以我本机的环境进行实验,目标搭建一主一从的最简单的复制架构。
操作系统:windows-xp 32位
mongdb version:2.4.6
解压mongodb的压缩包只有一个bin目录,如图1
第一步,创建如下目录,config、dbs(\master、slave)、logs(\master、slave)
第二步,在conf目录中创建两个配置文件,master.conf和slave.conf
第三步,编辑两个文件的配置
master.conf
master = true
port = 10000
logpath = logs\master\master.log
dbpath = dbs\master
slave.conf
slave = true
source = localhost:10000
port = 10001
logpath = logs\slave\slave.log
dbpath = dbs\slave
第四步,启动两个服务器进程
启动master:
bin\mongod.exe --config conf\master.conf
启动slave:
bin\mongod.exe --config conf\slave.conf
第五步,client登录到master进行一下数据插入操作,核对是否进行了主从复制
mongo localhost:10001
可以登录从服务器,查看对应的database和collection是否复制成功。
注,建议观察一下两个日志文件,里面会很清楚的记录,主从服务器的配置、复制操作等。
另外,从机的配置,其实是在local.sources集合中加入一条主机的记录。我们完全可以在一个已经启动的mongodb中动态的添加一个主机复制。
use local
db.sources.insert({"host":"localhost:10000"})
可以看到这是一个普通的collection,也能够正常的查询和删除。