近年来,随着大数据愈来愈火,非关系型数据库的重要性被愈来愈多的人所认知,愈来愈多的开发者逐渐加入到NoSQL的阵营中。咱们知道NoSQL是Not Only SQL的意思,既然如此,不少关系型数据库所支持的特性在非关系型数据中也是一样适用,好比复制集。数据库
MongoDB是支持数据复制的,它在复制集方面的优点与其余数据复制集同样,它经过将数据部署在多个不一样的服务器上,防止因单机故障而形成数据的丢失,借助数据冗余来提升数据的可靠性和安全性。并且还能够经过复制技术构建分布式数据库,提升系统的访问性能和安全性。安全
MongoDB的复制集模式是主从复制。在全部的数据库服务的机器中,只有一台机器担当Primary角色,其他的机器均是Secondaries。担当Primary角色的机器接收全部来自客户端的写(Write)操做请求,并完成该操做,从而保证了数据的一致性。担当Primary角色的机器还可以把来自客户端的读(Read)操做分配给其余机器(Secondaries),减轻主数据库服务器的压力。服务器
那么MongoDB是如何完成各机器上数据的复制的呢?异步
原来,MongoDB的Primary数据库在每次对数据进行update操做时,都会将这些操做记录在oplog日志文件里。Secondaries数据库经过异步操做读取日志中的记录并在本地执行,生成数据来与Primary保持数据一致。分布式
当Primary数据库不可用时,复制集会从Secondaries中选择一个机器做为Primary机器。默认状况下,客户端都是从Primary机器读取数据,可是客户端也能够指定从哪台副本上读取数据。ide
咱们也能够配置一台仲裁机,仲裁并无论理复制集,它也不能成为Primary,它只是决定哪些副本集有权成为Primary。性能
以上就是MongoDB复制集(Replication Sets)的主要内容,若是您还有哪些地方不太理解,欢迎在评论中留言。大数据