запишите задержку ведомого потока ведущего

если у меня два хоста mysql указывают друг на друга: хост A и хост B:

------> hostA(write co-master) 
| 
| 
| 
-----> hostB (read-only co-master)

почему будет ли hostA когда-либо показывать задержку репликации, когда на hostB ничего не записывается? Иногда я вижу, что ведомое устройство запаздывает на моем ведущем устройстве записи, указывающем на ведомое устройство только для чтения:

[root@db17 ~]# mysql -e "show slave status \G" | egrep "(Exec_Master_Log_Pos|Master_Log_File|Read_Master_Log_Pos|Seconds)"
          Master_Log_File: binary.108913
      Read_Master_Log_Pos: 137400187
    Relay_Master_Log_File: binary.108913
      Exec_Master_Log_Pos: 137400187
    Seconds_Behind_Master: 0
[root@db17 ~]# mysql -e "show slave status \G" | egrep "(Exec_Master_Log_Pos|Master_Log_File|Read_Master_Log_Pos|Seconds)"
          Master_Log_File: binary.108913
      Read_Master_Log_Pos: 137960791
    Relay_Master_Log_File: binary.108913
      Exec_Master_Log_Pos: 137960616
    Seconds_Behind_Master: 70
[root@db17 ~]# mysql -e "show slave status \G" | egrep "(Exec_Master_Log_Pos|Master_Log_File|Read_Master_Log_Pos|Seconds)"
          Master_Log_File: binary.108913
      Read_Master_Log_Pos: 138609398
    Relay_Master_Log_File: binary.108913
      Exec_Master_Log_Pos: 138609398
    Seconds_Behind_Master: 0

https://gist.github.com/ethan-riskiq/11b88443450f3fc6e0f8003bda797824 для вывода полного состояния ведомого. Запуск Percona mysql 5.7.25 с включенными GTID.

0
задан 19 April 2019 в 00:13
1 ответ

зачем hostA показывать задержку репликации, когда ничего не происходит? записано на hostB

Скорее предположительно:

Данные записываются на hostA -> реплицируются на hostB (и, так как обновления ведомого журнала включены) -> реплицируются на hostA.

hostA видит, что транзакции имеют идентификатор сервера и знает, что применять их не нужно. Однако он все еще записывает данные в Relay_Master_Log_File (проверка идентификатора сервера выполняется в потоке sql).

Похоже, что hostA имеет конкуренцию ввода-вывода. Почему?

  1. Slave_IO_State: Создание очереди главного события в журнале реле
  2. Slave_SQL_Running_State: Slave прочитал весь журнал реле; ожидание дополнительных обновлений
1
ответ дан 4 December 2019 в 15:43

Теги

Похожие вопросы