Mongo同步:减慢或停止同步?

时间:2017-06-06 15:14:40

标签: mongodb

所有

我有一个replicaset设置,我在同一台机器上运行两个mongo进程,端口28001上的M_pri和28002上的M_sec,具有以下配置:

    "_id" : "myReplSet",
    "version" : 1,
    "protocolVersion" : NumberLong(1),
    "members" : [
            {
                    "_id" : 0,
                    "host" : "localhost:28001",
                    "arbiterOnly" : false,
                    "buildIndexes" : true,
                    "hidden" : false,
                    "priority" : 1,
                    "slaveDelay" : NumberLong(0),
                    "votes" : 1
            },
            {
                    "_id" : 1,
                    "host" : "localhost:28002",
                    "arbiterOnly" : false,
                    "buildIndexes" : true,
                    "hidden" : true,
                    "priority" : 0,
                    "slaveDelay" : NumberLong(0),
                    "votes" : 1
            }
    ],
    "settings" : {
            "chainingAllowed" : true,
            "heartbeatIntervalMillis" : 2000,
            "heartbeatTimeoutSecs" : 10,
            "electionTimeoutMillis" : 10000,
            "catchUpTimeoutMillis" : 2000,
            "getLastErrorModes" : {

            },
            "replicaSetId" : ObjectId("593565b0ebd8ca36a07c6576")
    }

此设置的目的是每天从M_sec上取mongodump(gunzip)。在mongodump期间,整个系统都会变慢,因为我有这些进程可以写入和读取M_pri。

在我关闭m_sec的mongodump期间,有没有办法停止从Primary到Secondary mongo的同步?

由于

1 个答案:

答案 0 :(得分:1)

您可以将M_sec设置为延迟成员(https://docs.mongodb.com/manual/core/replica-set-delayed-member/#replica-set-delayed-members),因此它会在延迟时间内从M_pri复制。 要记住的事情:

  

要求

     

延迟成员:

     
      
  • 必须优先为0名成员。将优先级设置为0以防止延迟成员成为主要成员。
  •   
  • 应该是隐藏的成员。始终阻止应用程序查看和   查询推迟会员。   如果成员[n] .votes设置为1,则在主要选举中投票。
  •   
     

行为

     

延迟成员从a上的源oplog复制和应用操作   延迟。在选择延迟量时,请考虑数量   延迟:

     
      
  • 必须等于或大于预期的维护窗口持续时间。
  •   
  • 必须小于oplog的容量。有关oplog大小的更多信息,请参阅Oplog Size。
  •   

配置示例:

    {
   "_id" : <num>,
   "host" : <hostname:port>,
   "priority" : 0,
   "slaveDelay" : <seconds>,
   "hidden" : true
}