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
Categoría |
Precaución |
---|---|
Restricciones de versión |
|
Funciones no admitidas |
|
Restricciones de uso |
|
Análisis HTAP |
|