2017-06-06 59 views
0

所有,Mongo同步:减慢或停止同步?

我有一个replicaset设置,其中我在同一台机器上28002运行两个蒙戈过程,M_pri端口28001和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期间停止从主模块到辅助模块mongo的同步?

感谢

回答

1

您可以设置M_sec是一个被延迟的成员(https://docs.mongodb.com/manual/core/replica-set-delayed-member/#replica-set-delayed-members),所以它会从M_pri与复制的延迟。 事情要记住:

要求

延迟成员:

  • 必须优先级0成员。将优先级设置为0以防止延迟的成员成为主要成员。
  • 应该是隐藏成员。始终阻止应用程序查看并查询延迟的成员。 做选举的主要表决,如果会员[N] .votes设置为1

行为

延迟成员复制并从源头上OPLOG一个 延迟应用操作。在选择延迟量时,请考虑 延迟量:

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

配置例子:

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