Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-12-14 GMT+08:00

Introducción a los niveles de coherencia

GaussDB(for MySQL) proporciona tres niveles de coherencia para cumplir con los requisitos en diferentes escenarios.

  • Coherencia eventual (predeterminada)
  • Coherencia de la sesión
  • Coherencia global

Restricciones

  • Para configurar los niveles de coherencia, la versión de la instancia debe ser 8.0.22.28.1 o posterior.
  • Para utilizar la coherencia de la sesión, la versión del motor proxy de base de datos debe ser 2.7.4.0 o posterior.
  • Para utilizar la coherencia global, la versión del motor proxy de base de datos debe ser 2.23.02.000 o posterior.

Coherencia eventual

Después de habilitar el proxy de base de datos, las solicitudes para operaciones SELECT se encaminan a diferentes nodos basándose en sus ponderaciones de lectura. Debido a que hay un retardo de replicación entre el nodo principal y cada réplica de lectura y el retardo de replicación varía para diferentes réplicas de lectura, el resultado devuelto por cada sentencia SELECT puede ser diferente cuando se ejecuta repetidamente una sentencia SELECT dentro de una sesión. En este caso, solo se asegura una coherencia eventual.

Coherencia de la sesión

Para eliminar las incoherencias de datos causadas por una eventual coherencia, el proxy de base de datos proporciona coherencia de sesión. La coherencia de la sesión garantiza que el resultado devuelto por cada sentencia SELECT en una sesión sea los datos que se actualizaron después de la última solicitud de escritura.

El proxy de la base de datos registra el número de secuencia de registro (LSN) de cada nodo y sesión. Cuando se actualizan datos en una sesión, una instancia proxy de base de datos registra el LSN del nodo primario como un LSN de sesión. Cuando una solicitud de lectura llega posteriormente, el proxy de base de datos compara el LSN de sesión con el LSN de cada nodo y encamina la solicitud a un nodo cuyo LSN es al menos igual al LSN de sesión. Esto asegura la coherencia de la sesión.

Figura 1 Principio de coherencia de la sesión

En coherencia de sesión, si hay un retardo de replicación significativo entre el nodo primario y las réplicas leídas y el LSN de cada réplica leída es menor que el LSN de sesión, las solicitudes de operaciones SELECT se encaminarán al nodo primario. En este caso, las cargas en el nodo primario son pesadas y el rendimiento de la instancia se ve afectado.

Coherencia global

La coherencia global garantiza la coherencia de los datos en diferentes sesiones. Esto significa que después de escribir los datos, las operaciones de consulta se realizan inmediatamente para consultar con precisión los datos modificados.

Puede seleccionar la coherencia global cuando hay más operaciones de lectura que operaciones de escritura.

Hay dos parámetros relacionados con la coherencia global.

Tabla 1 Descripción de parámetro

Parámetro

Descripción

ConsistTimeout

El período de tiempo de espera para actualizar los LSN de réplicas de lectura al último LSN del nodo primario. Si el tiempo de espera de la operación de actualización, la instancia proxy realiza la operación especificada por el parámetro ConsistTimeoutPolicy.

Valor: de 0 a 300000 en milisegundos. El valor predeterminado es 30.

ConsistTimeoutPolicy

Si los LSN de réplicas de lectura no se pueden actualizar al LSN más reciente del nodo primario dentro del valor especificado del parámetro ConsistTimeout, la instancia proxy realiza la operación especificada por el parámetro ConsistTimeoutPolicy.

Valor:

  • routeMaster (valor predeterminado): las solicitudes de lectura se envían al nodo principal.
  • retry: El mensaje de error "wait replication complete timeout, please retry" se devuelve a su aplicación.
  • Para modificar los parámetros en Tabla 1, póngase en contacto con el servicio de atención al cliente para solicitar permisos.
  • Cuando se utiliza la coherencia global, el sistema supervisará el estado del nodo principal.
  • La coherencia global puede aumentar tanto la latencia promedio de la respuesta SQL como la presión sobre el nodo principal. Cuando la latencia entre el nodo principal y las réplicas de lectura es alta, la aplicación puede congelarse. De acuerdo con la política especificada por la ConsistTimeoutPolicy pueden encaminarse más solicitudes al nodo primario. Esto aumenta la presión sobre el nodo primario y puede aumentar la latencia del servicio.
  • Si se muestra el mensaje de error "Failed to obtain the LSN from the master node....."cuando se utiliza coherencia global, el nodo de base de datos primario puede sobrecargarse y el LSN no se obtiene. En este caso, póngase en contacto con el soporte técnico para obtener asistencia.