Cuando el tráfico de lectura y escritura comparte una única ruta de conexión, las cargas de trabajo con muchas escrituras pueden saturar las consultas analíticas e impedir el control directo sobre la distribución del tráfico de lectura entre las instancias de solo lectura. El endpoint de proxy de base de datos resuelve este problema al permitir asignar un atributo de lectura/escritura a cada endpoint y establecer pesos de lectura por instancia, de modo que pueda enrutar el tráfico con precisión y escalar la capacidad de lectura de forma independiente.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Tener habilitada la función de proxy de base de datos para su instancia RDS. Consulte Enable the database proxy feature
Contar con como mínimo una instancia de solo lectura vinculada a su instancia RDS, requisito obligatorio para la separación de lectura/escritura. Consulte Create a read-only ApsaraDB RDS for PostgreSQL instance
Atributos de lectura y escritura
Un endpoint de proxy opera en uno de dos modos:
|
Atributo |
Caso de uso típico |
Comportamiento del tráfico |
|
Read/Write |
Tráfico general de aplicaciones con separación de lectura/escritura |
Todas las solicitudes de escritura se dirigen a la instancia principal. Las solicitudes de lectura se distribuyen entre las instancias de solo lectura según el peso de lectura. El endpoint debe estar conectado a la instancia principal y a como mínimo una instancia de solo lectura. |
|
Read-only |
Informes, análisis y otras cargas de trabajo de solo lectura |
La instancia principal no recibe tráfico a través de este endpoint. Las nuevas conexiones se distribuyen entre las instancias de solo lectura conectadas en orden round-robin. Cada conexión de cliente se asigna a una instancia de solo lectura. La capacidad total de conexión equivale a la suma de las conexiones disponibles en todas las instancias de solo lectura conectadas. |
La lista de permitidos de direcciones IP del proxy de base de datos se sincroniza automáticamente con la lista de permitidos de direcciones IP de la instancia principal. Cualquier actualización en la lista de permitidos de la instancia principal se aplica de inmediato al proxy.
Comportamiento según atributo y peso
A continuación se describe cómo se gestiona el tráfico bajo cada combinación de atributo de lectura/escritura y configuración de peso.
| Atributo | Método de peso | Peso de la instancia principal | Operación normal | Después de eliminar la última instancia de solo lectura | Después de que todas las instancias de solo lectura presenten fallas |
|---|---|---|---|---|---|
| Solo lectura | Automático o personalizado | No configurable | Principal: sin tráfico. Proxy: solo solicitudes de lectura. | Principal: sin tráfico. Proxy: error de conexión. | Principal: sin tráfico. Proxy: error de conexión. |
| Lectura/Escritura | Automático | 0 (consulte Default read weights) | 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 | Peso > 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. | |
| Peso = 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. |
Notas sobre los términos de la tabla:
Sin tráfico hacia la principal: La instancia principal queda excluida del reenvío de solicitudes de solo lectura.
Error de conexión: Ocurre cuando un endpoint de proxy de solo lectura no tiene instancias de solo lectura disponibles para procesar solicitudes.
Modo Lectura/Escritura con peso de la principal = 0: En condiciones normales, las solicitudes de lectura no se reenvían a la instancia principal. Si todas las instancias de solo lectura presentan fallas, se especifica una sugerencia forzada o se habilita la separación de transacciones, el proxy reenvía las solicitudes de lectura a la instancia principal como alternativa.
Configure atributos de lectura/escritura y peso de lectura
Vaya a la página Instances. En la barra de navegación superior, seleccione la región donde reside su instancia RDS y haga clic en el ID de la instancia.
En el panel de navegación izquierdo, haga clic en Database Proxy.
En la sección Connection Information, localice el endpoint que desea modificar en la columna Proxy Endpoint (Terminal) ID y haga clic en Modify Configuration en la columna Actions.
-
Establezca Read/Write Attributes en una de las siguientes opciones:
Read/Write (Read/Write Splitting)
Read-only (Primary Instance Not Connected to Receive Write Requests)
-
Configure Read Weight Allocation como Automatic o Custom:
Automatic: El sistema asigna un peso de lectura a cada instancia según sus especificaciones. Al agregar una instancia de solo lectura, el sistema la incluye automáticamente en la separación de lectura/escritura con un peso adecuado, sin necesidad de actualización manual. Para consultar los valores de peso que asigna el sistema, consulte Default read weights.
Custom: Especifique un peso de lectura para cada instancia de solo lectura. Valores válidos: 0–10000. Al crear una nueva instancia de solo lectura, su peso inicial es 0; actualice el peso para incluirla en la distribución de tráfico.
NotaUn peso mayor implica que la instancia recibe proporcionalmente más solicitudes de lectura. Por ejemplo, si tres instancias de solo lectura tienen pesos de 100, 200 y 200, y el peso de la instancia principal es 0, la principal solo procesa escrituras y las instancias de solo lectura reciben tráfico en una proporción
1:2:2.
Los cambios de peso surten efecto de inmediato sin interrupciones de conexión. Las conexiones existentes no se ven afectadas; solo las nuevas conexiones utilizan los pesos actualizados.
Los pesos de lectura se invalidan automáticamente cuando se libera una instancia de solo lectura, o cuando la instancia principal falla o supera el umbral de latencia de replicación. Los pesos vuelven a ser válidos una vez que la instancia se recupera.
Enrutar solicitudes con sugerencias SQL
Para anular la decisión de enrutamiento del proxy para una consulta específica, agregue una sugerencia de enrutamiento a la sentencia SQL:
-
Forzar la consulta hacia la instancia principal:
/*FORCE_MASTER*/ SELECT * FROM table_name; -
Forzar la consulta hacia una instancia de solo lectura:
/*FORCE_SLAVE*/ SELECT * FROM table_name;
Referencia de API
|
Operación |
Descripción |
|
Consultar los detalles de un proxy de base de datos |
|
|
Consultar los detalles de un endpoint de proxy de base de datos |
|
|
Modificar el atributo de lectura/escritura y el peso de lectura de un endpoint de proxy de base de datos |