Mongodb主从架构

来源:互联网 发布:淘宝苏宁易购退笔记本 编辑:程序博客网 时间:2024/06/08 04:21

Mongodb主从架构

一、介绍:

主从复制是Mongodb最常用的复制方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等。


从上面的图形中我们可以分析出这种架构有如下的好处:

     <1> 数据备份。

     <2> 数据恢复。

     <3> 读写分离。

最基本的方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址。主节点服务器使用mongod --master方式启动,而从节点服务器则使用mongod --slave --sourcemaster_address方式启动。其中master_address指的是主节点服务器的地址。

二、工作原理:

总的来说,mongodb的复制至少需要两个服务器或者节点。其中一个是主节点,负责处理客户端请求,其他的都是从节点,负责映射主节点的数据。主节点记录在其上执行的所有操作(oplog)。从节点定期轮询主节点获得这些操作,然后对自己的数据副本执行这些操作。由于和主节点执行了相同的操作,从节点就能保持与主节点的数据同步。

2.1Oplog:

主节点的操作记录成为oplog(operation log)。Oplog存储在一个特殊的数据库中,叫做local。Oplog就在其中的oplog.$main集合里面。Oplog中的每个文档都代表主节点上执行的一个操作。文档包含的键如下:

Ts: 操作的时间戳。用于跟踪操作执行的时间。

Op:操作类型,(“i”代表插入)

Ns:执行操作的命名空间(集合名)

O:进一步指定要执行的操作的文档。对插入来说,就是要插入的文档。

需要强调的是oplog只记录改变数据库状态的操作。如查询就不存了。

另外,oplog存储在固定的集合中。由于新操作也会存储在oplog中,它们会自动替换旧的操作。这样就能保证oplog不超过预先设定的大小。可通过启动服务器时指定--oplogSize来设定大小,单位为MB。默认情况下,64位实例将使用oplog 5%的可用空间。这个空间将在local数据库中分配,并在服务器启动时预先分配。

2.2同步

从节点第一次启动时,会对主节点数据进行完成的同步。从节点复制主节点上的每个文档,比较耗时。同步完成后,从节点开始查询主节点的oplog并执行这些操作,以保证数据是最新的。

 

三、实例

准备:

两台服务器:

192.168.192.68:master


192.168.229.79:slave

 

 

开启主服务器:

 

开启从服务器:

 

主服务器分配完空间:可以看到预分配了local.ns,local.0.local.1.local.2,全部以0填充

 

68等待slave:


79等待master:

 

查看从库(79)初始值:只有一个local

 

主库(68)插入一条记录:

 

从库(79)开始了拷贝:


查看从库(79)的数据:可以看到,数据已经同步过来了

 

客户端可以通过指定读取secondary来做读写分离

ds.getMongo().setReadPreference(ReadPreference.SECONDARY);

原创粉丝点击