首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongo ReplicaSet解释

Mongo ReplicaSet解释
EN

Stack Overflow用户
提问于 2014-06-10 16:52:42
回答 1查看 871关注 0票数 0

我是芒果复制的新手。

我有两个服务器,我在一个服务器上设置一个主服务器,另一个服务器设置次要服务器。

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

代码语言:javascript
复制
<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>

请有人解释一下,这套复制品上的流程是什么?

它会先写在主,然后自动写到次要?

框架是否将检查到每个数据库的成功连接,并在当前主数据库不可用时“选择”主数据库(因此选择次要主数据库)?如果是的话,当初选再次出现时会发生什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 21:00:02

复制的基本流程:

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

“它会先写在主上,然后自动写到第二级?”

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

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

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

当被击倒的主服务器返回时,它将成为一个辅助操作,未处理的操作(未应用于次要文件的操作)存储在“回滚”文件夹中,必须手动将其应用回数据库,或丢弃。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24146697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档