Top.Mail.Ru
box.info.replication | Tarantool
Tarantool
Узнайте содержание релиза 2.8

box.info.replication

box.info.replication

Раздел replication (репликация) во вложенном модуле box.info() содержит статистику по всем экземплярам в наборе реплик относительно текущего экземпляра (см. также «Мониторинг набора реплик»):

Далее n – это индексный номер одного элемента таблицы, например, replication[1], который содержит данные о экземпляре сервера номер 1, который может быть или не быть тем же самым, что и текущий экземпляр («текущий экземпляр» – это тот, что отвечает на box.info).

  • replication[n].id – это короткий числовой идентификатор экземпляра в наборе реплик. Данное значение хранится в системном спейсе box.space._cluster.
  • replication[n].uuid – это глобально-уникальный идентификатор экземпляра. Данное значение хранится в системном спейсе box.space._cluster.
  • replication[n].lsn – это номер в журнале (LSN) для последней записи в журнале упреждающей записи (WAL) экземпляра n.
  • replication[n].upstream возникает (т.е. не nil), если текущий экземпляр принимает или готов принимать данные от экземпляра n, что обычно означает replication[n].upstream.status = follow, replication[n].upstream.peer = url экземпляра n, который отдает данные, replication[n].lag и idle = скорость экземпляра, описанная позже. По-другому можно сказать, что replication[n].upstream возникает, когда replication[n].upstream.peer не принадлежит текущему экземпляру, не является доступным только для чтения и был указан в box.cfg{replication={...}}, поэтому он показан в box.cfg.replication.
  • replication[n].upstream.status – это репликационный статус экземпляра:
    • auth означает, что экземпляр проходит аутентификацию.
    • connecting означает, что происходит подключение.
    • disconnected означает, что экземпляр не подключен к набору реплик (по причине проблем в сети, а не ошибок репликации).
    • follow означает, что текущий экземпляр является репликой (только для чтения, или не только для чтения, но ведет себя как реплика для этого удаленного URI в конфигурации master-master) и получает или может получать данные от мастера экземпляра n (upstream).
    • stopped означает, что репликация остановилась по причине ошибки репликации (например, повторяющийся ключ).
    • sync означает, что мастер и реплика в данный момент синхронизируются для получения одинакового набора данных.
  • replication[n].upstream.idle – это время (в секундах) с момента получения последнего события. Это основной индикатор работоспособности репликации. Подробности в Monitoring a replica set.
  • replication[n].upstream.lag – это разница во времени между локальным временем на экземпляре n, зарегистрированным при получении события, и локальное время на другом мастере, зарегистрированное при записи события в журнал упреждающей записи на этом мастере. Более подробную информацию см. в разделе Мониторинг набора реплик.

  • replication[n].upstream.message содержит сообщение об ошибке в случае системного сбоя, в противном случае – nil.

  • replication[n].downstream появляется (т.е. не nil), когда имеются данные об экземпляре, который принимает данные от экземпляра n или намеревается это делать,что обычно означает replication[n].downstream.status = follow,

  • replication[n].downstream.vclock содержит векторные часы, которые представляют собой таблицу из пар „id, lsn“, например vclock: {1: 3054773, 4: 8938827, 3: 285902018} (Обратите внимание, что таблица может иметь несколько пар, хотя vclock - это единственное имя).

    Даже если экземпляр удален, его значения все равно появятся здесь; однако, его значения будут переопределены, если позже экземпляр присоединится с тем же UUID. Пары векторных часов будут появляться только если lsn > 0.

    replication[n].downstream.vclock может быть таким же, как и vclock текущего экземпляра (box.info.vclock), потому что все значения vclock в кластере известны. Мастер будет знать, что находится в копии vclock реплики, потому что, когда мастер делает изменение данных, он посылает информацию об изменении на реплику (включая векторные часы мастера), и реплика отвечает тем, что находится в ее таблице векторных часов.

    Также реплика отправляет всю свою таблицу векторных часов в ответ на сообщение контрольного сигнала мастера (heartbeat message), их примеры можно найти в разделе Бинарный протокол – репликация.

  • replication[n].downstream.idle – это время (в секундах) с момента последней отправки событий экземпляром n через downstream-репликацию.

  • replication[n].downstream.status – это статус для downstream-репликации:

    • stopped означает, что downstream-репликация остановлена,
    • follow означает, что downstream-репликация находится в процессе (экземпляр n готов принимать данные от мастера или уже делает это).
  • replication[n].downstream.message and replication[n].downstream.system_message не появятся, пока не возникнет проблем с соединением. Например, если экземпляр n даст сбой, то можно будет увидеть status = 'stopped', message = 'unexpected EOF when read from socket', и system_message = 'broken pipe'. См. также «сбой».