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 2025-05-22 GMT+08:00

Qué es Database Proxy

Database Proxy es un servicio proxy de red que se encuentra entre TaurusDB y las aplicaciones. Se utiliza para manejar todas las solicitudes de las aplicaciones para acceder a instancias de TaurusDB.

La separación de lectura/escritura significa que las solicitudes de lectura y escritura se reenvían automáticamente con direcciones proxy de bases de datos. Después de crear una instancia de TaurusDB, puede crear una instancia proxy. Con la dirección proxy, las solicitudes de escritura se reenvían automáticamente al nodo primario y las solicitudes de lectura se reenvían a cada nodo según la política de enrutamiento de la instancia proxy, lo que descarga la presión de lectura del nodo primario.

Conceptos básicos

  • Dirección de proxy

    Después de comprar una instancia de proxy, puede ver la dirección de proxy en la página Database Proxy. La instancia de proxy envía solicitudes de escritura al nodo principal y solicitudes de lectura para leer réplicas con esta dirección.

  • Modo proxy

    Hay modos de proxy de lectura/escritura y de solo lectura.

    Read/Write: Todas las solicitudes de escritura se reenvían solo al nodo principal y todas las solicitudes de lectura se enrutan a los nodos seleccionados según las ponderaciones de lectura o las conexiones activas.

    Read-only: Todas las solicitudes de lectura se enrutan a las réplicas de lectura seleccionadas según las ponderaciones de lectura o las conexiones activas. Las solicitudes de lectura no se enrutarán al nodo primario.

  • Separación de transacciones

    Con la separación de transacciones habilitada para una instancia proxy, la instancia proxy puede enrutar solicitudes de lectura antes de las operaciones de escritura en una transacción para leer réplicas, lo que reduce la carga en el nodo primario.

    Para obtener más información sobre la separación de transacciones, consulte Habilitación de división de transacciones para una instancia proxy.

  • Grupo de conexiones

    Las instancias de proxy proporcionan grupos de conexiones de nivel de sesión, que ayudan a reducir la carga de la base de datos causada por el establecimiento frecuente de conexiones cortas.

    Para obtener más información acerca de los pools de conexiones, consulte Habilitación del grupo de conexión para una instancia de proxy.

  • Política de enrutamiento

    Las instancias de proxy admiten políticas de enrutamiento ponderadas y de equilibrio de carga.

    • Weighted: Las solicitudes de lectura se asignan a los nodos en función de las ponderaciones que especifique.
    • Load balancing: las solicitudes de lectura se asignan a nodos con menos conexiones activas. En la política de balanceo de carga, no es necesario configurar las ponderaciones de los nodos.

    Para obtener más información acerca de las políticas de enrutamiento, consulte Modificación de la política de enrutamiento de una instancia proxy.

Cómo funciona la división de lectura/escritura

Puede crear una o más instancias proxy para su instancia de TaurusDB para habilitar la separación de lectura/escritura.

  • Instancia de proxy única

    Si la instancia de TaurusDB solo tiene una instancia de proxy, las aplicaciones se conectan a la instancia de proxy con la dirección de proxy. Las solicitudes de escritura se reenvían al nodo primario y las solicitudes de lectura al nodo primario o réplicas de lectura basadas en la política de enrutamiento que especifique.

    Figura 1 División de lectura/escritura con una sola instancia proxy
  • Múltiples instancias proxy

    Para aislar cargas de trabajo entre sí, puede crear hasta cuatro instancias proxy para una instancia de TaurusDB. Diferentes aplicaciones pueden conectarse a diferentes instancias de proxy según sea necesario. Las réplicas de lectura asociadas de las instancias proxy procesan solicitudes de lectura de diferentes aplicaciones para aislar la carga de trabajo.

    Figura 2 División de lectura/escritura con varias instancias proxy

Escenarios de aplicación

  • El nodo primario está sobrecargado debido a una gran cantidad de solicitudes en una transacción.
  • El nodo primario está sobrecargado debido al exceso de conexiones.
  • Se requiere separación de lectura/escritura.

Ventajas de la división de lectura/escritura

  • En comparación con la separación manual de lectura/escritura en las aplicaciones, la separación de lectura/escritura usando direcciones proxy ofrece un escalamiento flexible y bajos costos de mantenimiento.
  • Las solicitudes de lectura se distribuyen a las réplicas de lectura según ponderaciones para equilibrar el tráfico de la base de datos y mejorar la utilización de los recursos.
  • Una instancia de proxy enruta las solicitudes de lectura de una aplicación solo a sus réplicas de lectura asociadas para aislar cargas de trabajo.
  • De forma predeterminada, las instancias proxy proporcionan protección contra sobrecargas para evitar la OOM (sin memoria) del servidor debido a una gran presión cuando se realizan operaciones en grandes conjuntos de resultados. Esta función está habilitada por defecto y no es necesario configurarla por separado. La presión causada por el núcleo lento depende del control de flujo.

Reglas de enrutamiento de solicitud

  • Solicitudes de escritura solo enviadas al nodo primario
    • INSERT, UPDATE y DELETE
    • Todas las operaciones DDL (como creación de tablas/bases de datos, eliminación de tablas/bases de datos, cambio de estructura de tablas y cambio de permisos)
    • Todas las solicitudes en las transacciones (Pero si la separación de transacciones está habilitada, algunas solicitudes de lectura en las transacciones se pueden enviar a réplicas de lectura. Para más detalles, véase Habilitación de división de transacciones para una instancia proxy.)
    • Funciones definidas por el usuario
    • Procedimientos almacenados
    • Sentencias EXECUTE
    • Solicitudes de instrucciones múltiples
    • Solicitudes que utilizan tablas temporales
    • Todos los cambios en las variables de usuario
    • KILL en sentencias SQL (no comando KILL)
  • Solicitudes de lectura enviadas solo al nodo principal
    • Si las sentencias de consulta están en transacciones, las solicitudes de transacción se enrutan al nodo primario. Si se agrega SET AUTOCOMMIT=0 antes de una sentencia de consulta, las solicitudes de transacción se enrutan al nodo primario.
    • Si todas las réplicas de lectura son anormales o los pesos de lectura asignados a las réplicas de lectura son 0, las solicitudes se enrutarán al nodo primario. Puede establecer ponderaciones de lectura para el nodo primario y réplicas de lectura después de habilitar la separación de lectura/escritura.
    • Al ejecutar sentencias SQL:
      • Si se ejecutan varias sentencias (por ejemplo, insert xxx;select xxx), todas las solicitudes posteriores se enrutarán al nodo primario. Para restaurar la separación de lectura/escritura, desconecte la aplicación de la instancia y vuelva a conectarla.
      • Las operaciones de lectura con bloqueos (por ejemplo, SELECT for UPDATE) se enrutarán al nodo primario.
      • Cuando se utiliza /*FORCE_MASTER*/, las solicitudes se enrutan al nodo primario.
      • Si se ejecuta la sentencia HANDLER, todas las solicitudes posteriores se enrutarán al nodo primario. Para restaurar la separación de lectura/escritura, desconecte la aplicación de la instancia y vuelva a conectarla.
    • SELECT last_insert_id()
    • Todas las consultas de variables de usuario
  • Solicitudes enviadas al nodo principal o a una réplica de lectura
    • SELECT no en una transacción
    • El comando COM_STMT_EXECUTE
  • Las solicitudes siempre se envían a todos los nodos
    • Cambios en todas las variables del sistema
    • El comando USE

Lógica de procesamiento de atributos de lectura/escritura

Hay modos de solo lectura y de lectura/escritura para las instancias de proxy. La lógica de procesamiento de atributos de lectura/escritura varía según el modo proxy.

Modo proxy

Política de enrutamiento

Ponderación del nodo primario

Caso normal

Fallas de todas las réplicas de lectura

Solo lectura

Ponderado

Equilibrio de carga

No configurable

El nodo principal no procesa las solicitudes de solo lectura.

Dirección proxy: legible pero no escribible

The primary node does not process read-only requests.

Proxy address: connection error

Read/Write

Equilibrio de carga

Assigned by system

Nodo primario: legible y escribible

Dirección proxy: legible y escribible

Nodo primario: legible y escribible

Dirección proxy: legible y escribible

Ponderado

> 0

Nodo primario: legible y escribible

Dirección proxy: legible y escribible

Nodo primario: legible y escribible

Dirección proxy: legible y escribible

= 0

Nodo primario: no se puede leer pero se puede escribir

Dirección proxy: legible y escribible

Nodo primario: legible y escribible

Dirección proxy: legible y escribible

Facturación

Las instancias de proxy son gratuitas.

Precauciones

Tabla 1 Precauciones para instancias de proxy

Categoría

Precaución

Restricciones de versión

  • Si la versión del núcleo de su instancia de TaurusDB es una de las siguientes, no se pueden crear instancias proxy:
    • De 2.0.26.2 a 2.0.28.3
    • 2.0.29.1
  • Si la versión del núcleo de su instancia de TaurusDB es anterior a 2.0.42.230601, solo se puede crear una instancia proxy.
  • Si la versión del núcleo de su instancia de TaurusDB es 2.0.42.230601 o posterior, se pueden crear hasta cuatro instancias proxy.

Funciones no admitidas

  • Las instancias de proxy no admiten protocolos de compresión.
  • Las instancias de proxy no admiten el nivel de aislamiento de transacciones READ-UNCOMMITTED.
  • Las instancias de proxy no admiten lecturas y escrituras en columnas que contengan más de 16 MB de datos en una tabla.
  • Los proxys de base de datos no admiten el parámetro de modo SQL PAD_CHAR_TO_FULL_LENGTH.

Restricciones de uso

  • Para crear una instancia proxy, la instancia de TaurusDB debe tener al menos 8 vCPU.
  • La separación de lectura/escritura solo se puede habilitar cuando se crea al menos una réplica de lectura.
  • Después de habilitar la separación de lectura/escritura, el puerto de la base de datos y la dirección IP privada de su instancia de TaurusDB no se pueden cambiar.
  • Si se ejecutan estados múltiples, todas las solicitudes posteriores se encaminarán al nodo primario. Para restaurar la función de separación de lectura/escritura, desconecte la conexión de las aplicaciones y vuelva a establecer una conexión.
  • Cuando se utiliza una dirección proxy, todas las solicitudes de transacción se enrutan al nodo primario (puede utilizar la separación de transacciones para enrutamiento las solicitudes de lectura antes de las operaciones de escritura en una transacción para leer réplicas). No se garantiza la consistencia de lectura de no transacción. Para garantizar la coherencia de la lectura, encapsule las solicitudes de lectura en una transacción.
  • Cuando se utiliza una dirección proxy, puede ejecutar el comando show processlist en la instancia proxy o instancia de TaurusDB. Si se ejecuta show processlist en una instancia proxy, solo se muestran los servicios entregados con nodos proxy.
  • Si un nodo proxy es anormal, ejecute show processlist o Kill en la instancia proxy puede tardar mucho tiempo, pero los servicios no se ven afectados.
  • Después de eliminar un nodo proxy, los servicios en el nodo proxy eliminado pueden mostrarse cuando se ejecuta show processlist en la instancia proxy.
  • Si se ejecuta Kill en la instancia proxy, es posible que se muestre ocasionalmente información de error como el tiempo de espera. Puede ejecutar show processlist nuevamente para verificar si los servicios se han eliminado correctamente.
  • Si un nodo proxy es anormal, puede haber congelación de tramas durante 2 segundos cuando ejecute show processlist en la instancia proxy. Los resultados seguirán devolviéndose.
  • Cuando se utiliza una instancia proxy, el tamaño de una sentencia SQL concatenada no puede superar los 100 MB para evitar que el análisis de la sentencia consuma demasiados recursos.

Análisis HTAP

  • No se admiten los niveles de consistencia ni los pools de conexiones.
  • Solo se soporta la política de enrutamiento ponderada.
  • Solo se soporta el modo proxy de lectura/escritura.