La Red de Conocimientos Pedagógicos - Currículum vitae - Cómo calcular el tiempo de retardo maestro-esclavo en el clúster mysql

Cómo calcular el tiempo de retardo maestro-esclavo en el clúster mysql

Para monitorear el retraso de replicación maestro-esclavo, mi enfoque anterior era comparar la diferencia entre las dos variables (Read_Master_Log_Pos, Exec_Master_Log_Pos) en show Slave StatusG y establecer la diferencia en un rango que creo que es razonable. Seconds_Behind_Master no se ha aplicado antes, hagamos un análisis hoy:

Seconds_Behind_Master determina el esclavo comparando la diferencia en segundos entre la marca de tiempo de los eventos recibidos por SQL THREAD (marca de tiempo) y la marca de tiempo de los eventos ejecutados por. HILO IO. Cuánto detrás del maestro. Si el tiempo de las máquinas maestra y esclava es diferente, el cálculo del tiempo no se verá afectado (si el tiempo es anormal, la cantidad de segundos no es muy confiable)

Si es un hilo SQL esclavo o esclavo Hilo de E/S o no está conectado al maestro, entonces el valor de esta variable es NULL.

0: Indica que no hay retraso en la replicación maestro-esclavo (este es el caso en la mayoría de los casos).

Valor positivo: indica el número de segundos que el esclavo va por detrás del maestro.

Cuando la red es rápida, el subproceso de E/S puede obtener rápidamente el registro de retransmisión del binlog al esclavo desde el maestro. En este caso, el valor de second_behind_master puede representar realmente la cantidad de segundos que el esclavo está detrás del maestro. Cuando la red es deficiente, la sincronización de subprocesos de E/S es muy lenta y SQL THREAD puede ejecutar rápidamente la información de registro binario recibida por el esclavo. En este momento, second_behind_master es 0. En este caso, el esclavo está muy por detrás del maestro.

Para eliminar la interferencia de la red, podemos consultar la herramienta pt-heartbeat de percona.

Esta herramienta puede calcular la replicación de MySQL o PostgreSQL, y puede actualizar la replicación maestra o monitorizada. También puede leer la configuración de my.cnf. Se implementa con la ayuda de la comparación timestmp. Primero, es necesario garantizar que los tiempos del servidor maestro y esclavo sean consistentes sincronizando los relojes con el mismo servidor NTP. Necesita crear una tabla de latidos en la biblioteca principal. La marca de tiempo ts que contiene es la marca de tiempo actual ahora (). Esta estructura también se copiará en la biblioteca esclava. Una vez creada la tabla, se ejecutará una fila de comandos de operación de actualización en el modo de proceso en segundo plano en la base de datos principal, y los datos se insertarán en la tabla regularmente. Este período predeterminado es 1 segundo, y la base de datos esclava también lo ejecutará. en el fondo