Mongo ReplicaSet解释

时间:2014-06-10 16:52:42

标签: spring mongodb

我是mongo复制的新手。

我有两台服务器,我在一台服务器上设置了主服务器,在另一台服务器上设置了主服务器。

我正在使用springspring-data开发一个Web应用程序,我使用该xml配置来访问mongo:

<mongo:mongo id="mongoConnection" replica-set="IP-Primary:27017,IP-Secondary:27017">
        <mongo:options
            connections-per-host="100"
            threads-allowed-to-block-for-connection-multiplier="50"
            connect-timeout="10000"
            max-wait-time="50000"
            slave-ok="true"
            auto-connect-retry="true"
            write-number="1"
            write-timeout="0"
            write-fsync="false"/>
</mongo:mongo>
<beans:bean id="mongoWriteConcern" class="com.mongodb.WriteConcern">
    <beans:constructor-arg type="int" name="w" value="2"/></beans:bean> 
<beans:bean id="mongoCredentials"
    class="org.springframework.data.authentication.UserCredentials">
    <beans:constructor-arg name="username" value="xxx" />
    <beans:constructor-arg name="password" value="yyy" />
</beans:bean>
<beans:bean id="myTemplate"
    class="org.springframework.data.mongodb.core.MongoTemplate">
    <beans:constructor-arg ref="mongoConnection" />
    <beans:constructor-arg name="databaseName" value="dbName" />
    <beans:constructor-arg name="userCredentials" ref="mongoHotelCredentials" />
    <beans:property name="writeConcern" ref="mongoWriteConcern"/>
</beans:bean>

请有人解释一下副本集上的流量是什么?

它会首先写入主要文件并自动写入次要文件吗?

框架是否会检查每个数据库的成功连接,并且&#34;选择&#34;如果当前主节点不可用,则为主节点(因此选择辅助节点作为主节点)? 如果是的话,当主要人员再次回来时会发生什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

基本复制流程:

您的应用程序(客户端)写入副本集的主节点。写操作存储在日志文件(oplog)中,oplog通过'链式复制'(默认)复制到辅助节点,或从最近的成员复制,可配置,在此处读取http://docs.mongodb.org/manual/tutorial/manage-chained-replication/

“它会先写入主要内容,然后自动将主写入写入辅助内容吗?”

写入主数据库,存储在oplog中,oplog复制到辅助数据库,然后写入应用于辅助数据库。它是自动的,但您必须考虑网络延迟。延迟因素包括主节点和辅助节点之间的距离,以及防火墙等障碍。 MongoDB的复制有很多东西可以玩,例如更高的writeConcern设置,以提高一致性(以吞吐量为代价),配置延迟的辅助作为备份,每个辅助的选举优先级(对多数据中心有用)等。

“框架是否会检查每个数据库是否成功连接,如果当前主服务器不可用,则”选择“主服务器(因此选择辅助服务器作为主服务器)?如果是,当主服务器再次返回时会发生什么?”

副本集的成员之间存在“心跳”。如果成员发生故障,在10-30秒内其他成员将检测到心跳丢失并将该成员标记为不可用。如果down成员是主要成员,则将发生选举过程并选择新的主要成员。保持“奇数”成员数量很重要(3,5,7 ......最多12名成员,7名投票成员)http://docs.mongodb.org/manual/core/replica-set-architecture-four-members/

当被击落的主要回来时,它将成为辅助,其中存储在'rollback'文件夹中的未处理操作(不应用于辅助操作)必须手动应用回数据库或丢弃。