2015-09-19 3 views
0

Я новичок здесь, и я надеюсь, что разместил свой вопрос на правильном форуме. Я не видел, где выбрать нужную категорию форум для MongoDB ..Validate Replica Set Data

У меня есть 2 вопроса -

Я использую MongoDB 2.6, и я нахожусь в процессе миграции 2 наборов реплик RS0 & RS1 из центр обработки данных для AWS. У меня есть 3 сервера на каждом наборе реплик, в общей сложности 6 серверов. Опция, которую я использую для переноса данных на новые серверы, - это расширение наборов реплик на новом оборудовании, а затем их полностью догнать, прежде чем я смогу удалить узлы старого оборудования из набора реплик.

Вопрос-1> Как проверить данные на обоих наборах реплик (источник & адресата), чтобы убедиться, что данные синхронизированы на 100%, прежде чем я смогу удалить старый набор реплик из источника? Каковы правильные команды, которые я могу использовать для проверки количества коллекций и данных для всех коллекций для всех баз данных, которые я переношу?

Вопрос-2. Исправьте меня, если я ошибаюсь. Мое понимание заключается в использовании наборов реплик, мы должны сохранять нечетные числа членов внутри RS. Прямо сейчас у меня есть 3 сервера на RS, и это нормально, но когда я добавлю новый член к моему текущему RS, который будет указывать на новый сервер, у меня будет 4 члена - это не вызовет проблемы? Должен ли я добавить 2 члена в свой RS вместо этого, чтобы я мог сохранить 5 членов, что является нечетным числом?

Большое вам спасибо!

ответ

1

Вопрос 1: использовать rs.status() для любого из элементов набора реплик; Вы можете проверить статус каждого члена и поле OPTIME (сравните с первичным): http://docs.mongodb.org/manual/reference/method/rs.status/

Вопрос 2: Вам нужно нечетное число членов, потому что только один член может быть избран в качестве основного, и каждый член может голосовать для 1 члена, поэтому наличие четного числа членов могло бы во время выборов на первом уровне привести к равному числу голосов для двух или более членов. Для того, чтобы иметь нечетное число членов вы можете создать экземпляр arbitet: http://docs.mongodb.org/master/tutorial/add-replica-set-arbiter/

0

@Stefano дал вам answer.I просто хотел бы добавить несколько:

Вопрос 1:

You может использовать rs.status, чтобы проверить статус набора реплик. Это ясно видно из первичного и вторичного.

{ 
    "set" : "replset", 
    "date" : ISODate("2015-11-19T15:22:32.597Z"), 
    "myState" : 1, 
    "term": NumberLong(1), 
    "heartbeatIntervalMillis" : NumberLong(2000), 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "m1.example.net:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 269, 
      "optime" : { 
         "ts" : Timestamp(1447946550, 1), 
         "t" : NumberLong(1) 
        }, 
      "optimeDate" : ISODate("2015-11-19T15:22:30Z"), 
      "infoMessage" : "could not find member to sync from", 
      "electionTime" : Timestamp(1447946549, 1), 
      "electionDate" : ISODate("2015-11-19T15:22:29Z"), 
      "configVersion" : 1, 
      "self" : true 
     }, 
     { 
      "_id" : 1, 
      "name" : "m2.example.net:27017", 
      "health" : 1, 
      "state" : 2, 
      "stateStr" : "SECONDARY", 
      "uptime" : 13, 
        "optime" : { 
         "ts" : Timestamp(1447946539, 1), 
         "t" : NumberLong(-1) 
        }, 
      "optimeDate" : ISODate("2015-11-19T15:22:19Z"), 
      "lastHeartbeat" : ISODate("2015-11-19T15:22:31.323Z"), 
      "lastHeartbeatRecv" : ISODate("2015-11-19T15:22:32.045Z"), 
      "pingMs" : NumberLong(0), 
      "configVersion" : 1 
     }, 
     { 
      "_id" : 2, 
      "name" : "m3.example.net:27017", 
      "health" : 1, 
      "state" : 2, 
      "stateStr" : "SECONDARY", 
      "uptime" : 13, 
        "optime" : { 
         "ts" : Timestamp(1447946539, 1), 
         "t" : NumberLong(-1) 
        }, 
      "optimeDate" : ISODate("2015-11-19T15:22:19Z"), 
      "lastHeartbeat" : ISODate("2015-11-19T15:22:31.325Z"), 
      "lastHeartbeatRecv" : ISODate("2015-11-19T15:22:31.971Z"), 
      "pingMs" : NumberLong(0), 
      "configVersion" : 1 
     } 
    ], 
    "ok" : 1 
} 

Чтобы узнать задержки ведомое огонь rs.printSlaveReplicationInfo():

source: localhost.localdomain:27070 
     syncedTo: Mon May 02 2016 12:34:36 GMT+0530 (IST) 
     0 secs (0 hrs) behind the primary 
source: localhost.localdomain:27072 
     syncedTo: Mon May 02 2016 12:34:36 GMT+0530 (IST) 
     0 secs (0 hrs) behind the primary 
source: localhost.localdomain:27073 
     syncedTo: Mon May 02 2016 12:34:36 GMT+0530 (IST) 
     0 secs (0 hrs) behind the primary 

Чтобы узнать более подробно о репликации нагнать в oplog попробовать rs.printReplicationInfo():

configured oplog size: 700.0038909912109MB 
log length start to end: 261920secs (72.76hrs) 
oplog first event time: Fri Apr 29 2016 11:49:16 GMT+0530 (IST) 
oplog last event time: Mon May 02 2016 12:34:36 GMT+0530 (IST) 
now:      Mon May 02 2016 12:49:37 GMT+0530 (IST) 

Вопрос 2:

Od d количество реплик облегчает высокое голосование на выборах. Так что в случае, если у вас есть даже наборы реплик, вы можете добавить Arbiters. Они имеют небольшой вес и не содержат данных, они также могут находиться на любом другом текущем сервере.

Надеюсь, это поможет !!!