PolarDB for MySQL Los clústeres de PolarDB for MySQL incluyen una función integrada de división de lectura y escritura. Su aplicación solo necesita conectarse a un único endpoint de clúster en Read/Write (Automatic Read/Write Splitting). Las solicitudes de escritura se reenvían automáticamente al nodo principal. Las solicitudes de lectura se dirigen al nodo principal o a un nodo de solo lectura, según la carga de cada nodo (la cantidad de solicitudes actuales sin terminar).
Beneficios
-
Read Consistency
Cuando un cliente se conecta al backend mediante un endpoint de clúster, el middleware de división de lectura y escritura establece conexiones con el nodo principal y con cada nodo de solo lectura de forma automática. Dentro de una misma conexión (sesión), el middleware selecciona el nodo más adecuado al comprobar el estado de sincronización de datos de cada nodo de base de datos. Este método garantiza resultados correctos, ya que las lecturas posteriores a escrituras devuelven los datos esperados. Además, proporciona balanceo de carga para las solicitudes de lectura y escritura.

-
División nativa de lectura y escritura para un mejor rendimiento
Si usted construye su propia capa de proxy en la nube para implementar la división de lectura y escritura, las solicitudes deben pasar por varios componentes para el análisis sintáctico y el reenvío de SQL antes de llegar a la base de datos, lo cual aumenta la latencia. En cambio, la división de lectura y escritura de PolarDB está integrada directamente en el enlace de alta seguridad existente. No añade componentes adicionales ni sobrecarga, por lo que reduce la latencia y mejora el rendimiento.
-
Mantenimiento simplificado
En un modelo tradicional, debe configurar en su aplicación los endpoints de conexión del nodo principal y de cada nodo de solo lectura. También necesita dividir la lógica de negocio para asegurar que las solicitudes de escritura se envíen al nodo principal y las de lectura a todos los nodos.
PolarDB proporciona un único endpoint de clúster. Una vez que su aplicación se conecta a este endpoint, puede ejecutar operaciones de lectura y escritura en los nodos principales y de solo lectura. Las solicitudes se reenvían de manera automática y la lógica de enrutamiento es completamente transparente, lo que reduce los costos de mantenimiento.
También puede aumentar la capacidad de procesamiento si añade más nodos de solo lectura, sin modificar su aplicación.
-
Comprobaciones de estado de los nodos para alta disponibilidad
El módulo de división de lectura y escritura comprueba automáticamente el estado de todos los nodos del clúster. Si un nodo falla o su latencia supera un umbral especificado, PolarDB deja de enrutar solicitudes de lectura hacia ese nodo. Luego, las solicitudes se distribuyen entre los nodos sanos restantes. Esto garantiza que la falla de un solo nodo de solo lectura no afecte su aplicación. Cuando el nodo se recupera, PolarDB lo vuelve a añadir automáticamente al pool de enrutamiento.
-
Uso gratuito, con menores costos de recursos y mantenimiento
La función de división de lectura y escritura se ofrece sin costo adicional.
Lógica de enrutamiento de solicitudes
En el modo Read/Write, las solicitudes se enrutan de la siguiente manera:
-
Se reenvían únicamente al nodo principal:
Todas las operaciones DML (INSERT, UPDATE, DELETE y SELECT FOR UPDATE)
Todas las operaciones DDL (como crear o eliminar bases de datos y tablas, alterar esquemas de tablas y gestionar permisos)
-
Todas las solicitudes dentro de una transacción cuando la división de transacciones está deshabilitada
NotaPara conocer los detalles de enrutamiento cuando la división de transacciones está habilitada, consulte transaction splitting.
Funciones definidas por el usuario
Procedimientos almacenados
Instrucciones LOCK/UNLOCK TABLES
Consultas Multi-statement
Solicitudes que usan tablas temporales
SELECT last_insert_id()Todas las consultas y modificaciones de variables de usuario
Solicitudes binlog dump
-
Se reenvían a los nodos de solo lectura o al nodo principal:
NotaLas solicitudes se reenvían al nodo principal solo cuando Primary Node Accepts Read Requests está establecido en Yes.
Solicitudes de lectura fuera de una transacción
Transacciones de solo lectura (START TRANSACTION READ ONLY)
-
Siempre se reenvían a todos los nodos:
Todos los cambios en las variables del sistema
El comando USE
Los comandos PREPARE y DEALLOCATE PREPARE
Comandos como COM_CHANGE_USER, COM_RESET_CONNECTION, COM_QUIT y COM_SET_OPTION
-
SHOW PROCESSLISTNotaCuando ejecuta el comando
SHOW PROCESSLIST, PolarDB devuelve la información de la lista de procesos de todos los nodos. KILL (la instrucción KILL en SQL, no el comando KILL de la línea de comandos)
En Read Only, las solicitudes se enrutan de la siguiente manera:
No se permiten operaciones DDL ni DML.
Todas las solicitudes de lectura se reenvían a los nodos de solo lectura mediante balanceo de carga.
Las solicitudes de lectura nunca se reenvían al nodo principal, incluso si este se añadió a los nodos de servicio.
PolarDB fija un binlog dump a un nodo de solo lectura específico.
Funciones
La división de lectura y escritura de PolarDB incluye a continuación varias funciones: