La separación de lectura y escritura dirige las solicitudes de escritura a la instancia principal y las solicitudes de lectura a las instancias de solo lectura mediante un único endpoint database proxy. Utilice esta función cuando su carga de trabajo tenga muchas más lecturas que escrituras y la instancia principal ya no pueda manejar por sí sola el volumen de lecturas.
Conecte su aplicación a un solo endpoint del proxy de base de datos en lugar de gestionar endpoints separados para la instancia principal y cada instancia de solo lectura. El proxy se encarga de todo el enrutamiento automáticamente.
Cuándo usar la separación de lectura y escritura
La separación de lectura y escritura es adecuada si enfrenta alguna de las siguientes situaciones:
Cargas de trabajo con predominio de lecturas: Su aplicación ejecuta muchas más consultas SELECT que operaciones INSERT, UPDATE o DELETE.
Cuello de botella en la instancia principal: La CPU o el E/S de la instancia principal están saturados por el tráfico de lectura, aunque el volumen de escritura sea manejable.
Escalado de lectura sin cambios de conexión: Desea agregar capacidad de lectura sin modificar la lógica de conexión de su aplicación.
Beneficios
Un solo endpoint, sin código de enrutamiento: Conéctese una sola vez al endpoint del proxy de base de datos. El proxy reenvía las escrituras a la instancia principal y distribuye las lecturas entre las instancias de solo lectura automáticamente, sin necesidad de mantener cadenas de conexión separadas por instancia.
Menor latencia que un proxy autoconstruido: La separación de lectura y escritura está integrada en el ecosistema de ApsaraDB RDS. Los datos no pasan por capas intermedias adicionales, lo que reduce la latencia de respuesta en comparación con la creación de su propio proxy en la nube.
Pesos de lectura y umbral de latencia configurables: Especifique un peso de lectura para cada instancia y controle cómo se distribuyen las solicitudes de lectura. Establezca un umbral de latencia de replicación para que las instancias de solo lectura con retraso se excluyan automáticamente del pool de lectura.
Comprobación de estado y failover automáticos: El proxy supervisa continuamente cada instancia. Si una instancia de solo lectura falla o su latencia de replicación supera el umbral, el proxy deja de dirigirle lecturas y redistribuye esas solicitudes entre las instancias sanas. Una vez que la instancia se recupera, el enrutamiento se reanuda automáticamente.
Cree como mínimo dos instancias de solo lectura para evitar un punto único de fallo (SPOF).
Requisitos previos
Antes de habilitar la separación de lectura y escritura, asegúrese de contar con lo siguiente:
Una instancia de ApsaraDB RDS for MySQL que ejecute RDS High-availability Edition o RDS Cluster Edition
Para RDS High-availability Edition: haber creado como mínimo una read-only instance (se recomiendan dos o más)
Para RDS Cluster Edition: no se requieren instancias de solo lectura; el nodo secundario es accesible y procesa únicamente solicitudes de lectura
La separación de lectura y escritura no es compatible con RDS Basic Edition .
Cómo funciona
Después de enable the database proxy feature, la separación de lectura y escritura se activa automáticamente sin necesidad de configuración adicional. Vaya a Database Proxy en el panel de navegación izquierdo de la página de instance details para obtener el endpoint del proxy de base de datos (anteriormente llamado proxy terminal) y actualice la cadena de conexión de su aplicación para utilizarlo.
Enrutamiento de solicitudes
El proxy dedicado enruta cada solicitud según su tipo:
Instancia principal de RDS
Sentencias de escritura: INSERT, UPDATE, DELETE, SELECT FOR UPDATE
Todas las operaciones DDL (creación o eliminación de bases de datos o tablas, cambios de esquema y permisos)
Todas las solicitudes dentro de transacciones (a menos que esté habilitada la transaction splitting feature)
Transacciones no de solo lectura con nivel de aislamiento Repeatable Read (RR) o superior
Funciones definidas por el usuario y procedimientos almacenados
Tablas temporales creadas explícitamente
SELECT last_insert_id()Consultas y actualizaciones de variables de usuario
Sentencias
KILLen SQL (diferentes de los comandos KILL),LOCK TABLE,UNLOCK TABLESentencias
FLUSH, incluidaFLUSH TABLES WITH READ LOCK(FTWRL)SAVEPOINT
Instancia principal de RDS o instancia de solo lectura de RDS
Sentencias
SELECTfuera de transaccionesSTART TRANSACTION READ ONLY
Todas las instancias de RDS
Actualizaciones de variables del sistema
Sentencias
USESHOW PROCESSLIST— el proxy dedicado agrega y devuelve los procesos de todas las instanciasNAMED PREPARECOM_CHANGE_USER,COM_QUIT,COM_SET_OPTION
Comportamiento de los atributos de lectura y escritura
El endpoint del proxy de base de datos admite dos modos de atributos de lectura y escritura. La siguiente tabla muestra cómo se comporta cada modo en condiciones normales y cuando las instancias de solo lectura dejan de estar disponibles.
| Atributos de lectura y escritura | Método de peso de lectura | Peso de la instancia principal | Normal | Tras eliminar la última instancia de solo lectura | Tras fallar todas las instancias de solo lectura |
|---|---|---|---|---|---|
| Read-only | Automático o personalizado | No se puede especificar | Principal: sin solicitudes. Proxy: solo solicitudes de lectura. | Principal: sin solicitudes. Proxy: error de conexión. | Principal: sin solicitudes. Proxy: error de conexión. |
| Read and write | Automático | 0 (consulte Rules of read weight allocation by the system) | Principal: solo solicitudes de escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. |
| Personalizado | Mayor que 0 | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. | |
| 0 | Principal: solo solicitudes de escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. | Principal: solicitudes de lectura y escritura. Proxy: solicitudes de lectura y escritura. |
Sin solicitudes en la instancia principal : La instancia principal no participa en el reenvío de solicitudes de solo lectura.
Error de conexión : Se devuelve un error de conexión cuando el endpoint del proxy no tiene instancias disponibles para enrutar el tráfico.
En el modo Read and write con el peso de la instancia principal establecido en 0, las solicitudes de lectura se dirigen a las instancias de solo lectura de forma predeterminada. Excepciones: todas las instancias de solo lectura presentan fallos, se especifica un hint forzado o la separación de transacciones está habilitada.
Para obtener detalles sobre la configuración, consulte Configure the read/write attributes and read weights .
Pasos siguientes
Después de habilitar la separación de lectura y escritura, puede realizar lo siguiente:
Configure read/write attributes and read weights — ajuste qué instancias gestionan las lecturas y en qué proporción.
Verify read/write splitting — confirme que el tráfico se enruta correctamente.
Habilite SQL Explorer and Audit temporalmente para inspeccionar cómo se distribuyen las sentencias SQL entre las instancias (nota: esta función se factura por separado; puede deshabilitarla cuando ya no la necesite).