Configuración de réplicas de lectura con PostgreSQL
RDS para PostgreSQL utiliza la replicación de streaming nativa de PostgreSQL para crear una copia de solo lectura de una instancia de base de datos de origen. La instancia de base de datos de réplica de lectura es una réplica física de la instancia de la base de datos de origen creada de forma asíncrona. Se crea mediante una conexión especial que transmite los datos de los registros de escritura previa (WAL) entre la instancia de base de datos de origen y la réplica de lectura. Para obtener más información, consulte Replicación de streaming
PostgreSQL transmite de forma asíncrona los cambios de la base de datos a esta conexión segura a medida que se realizan en la instancia de base de datos de origen. Puede cifrar las comunicaciones de las aplicaciones cliente a la instancia de base de datos de origen o cualquier réplica de lectura configurando el parámetro ssl en 1. Para obtener más información, consulte Uso de SSL con una instancia de base de datos PostgreSQL .
PostgreSQL usa un rol de replicación para realizar la replicación en streaming. El rol tiene privilegios, pero no se puede usar para modificar ningún dato. PostgreSQL usa un único proceso para gestionar la replicación.
Puede crear una réplica de lectura de PostgreSQL sin que afecte a las operaciones o usuarios de la instancia de base de datos de origen. Amazon RDS establece los parámetros y los permisos necesarios en la instancia de base de datos de origen y la réplica de lectura sin que afecte al servicio. Se toma una instantánea de la instancia de base de datos de origen, y esta instantánea se utiliza para crear la réplica de lectura. Si elimina la réplica de lectura en algún momento futuro, no se produce ninguna interrupción.
Puede crear hasta 15 réplicas de lectura a partir de una instancia de base de datos de origen dentro de la misma región. A partir de RDS para PostgreSQL 14.1, también puede crear hasta tres niveles de réplica de lectura en una cadena (cascada) a partir de una instancia de base de datos de origen. Para obtener más información, consulte Uso de réplicas de lectura en cascada con RDS para PostgreSQL. En todos los casos, la instancia de base de datos de origen debe tener configuradas copias de seguridad automatizadas. Para ello, debe establecer el periodo de retención de copia de seguridad en su instancia de base de datos en cualquier valor distinto de 0. Para obtener más información, consulte Creación de una réplica de lectura.
Puede crear réplicas de lectura para su instancia de base de datos de RDS para PostgreSQL en la misma Región de AWS que la instancia de base de datos de origen. Esto se denomina replicación dentro de la región. También puede crear réplicas de lectura en una Regiones de AWS diferente de la instancia de base de datos de origen. Esto se denomina replicación entre regiones. Para obtener información sobre la configuración de réplicas de lectura entre regiones, consulte Creación de una réplica de lectura en una distinta Región de AWS. Los diversos mecanismos que admiten el proceso de replicación para dentro de la región y entre regiones difieren ligeramente en función de la versión de RDS para PostgreSQL, como se explica en Cómo funciona la replicación de streaming en diferentes versiones de RDS para PostgreSQL.
Para que la replicación sea eficaz, cada réplica de lectura debe tener la misma cantidad de recursos de computación y de almacenamiento que la instancia de base de datos de origen. Si modifica la escala de la instancia de base de datos de origen, asegúrese de ajustar también la escala de las réplicas de lectura.
Amazon RDS anula los parámetros incompatibles de una réplica de lectura si impiden que la réplica de lectura se inicie. Por ejemplo, supongamos que el valor del parámetro max_connections es mayor en la instancia de base de datos de origen que en la réplica de lectura. En ese caso, Amazon RDS actualiza el parámetro en la réplica de lectura para que tenga el mismo valor que el de la instancia de base de datos de origen.
Las réplicas de lectura de RDS para PostgreSQL tienen acceso a bases de datos externas que están disponibles a través de foreign data wrappers (FDW, envoltorios de datos externos) en la instancia de base de datos de origen. Por ejemplo, suponga que su instancia de base de datos de RDS para PostgreSQL utiliza el envoltorio mysql_fdw para acceder a los datos de RDS para MySQL. Si es así, las réplicas de lectura también pueden acceder a esos datos. Otros FDW admitidos incluyen oracle_fdw, postgres_fdw y tds_fdw. Para obtener más información, consulte Uso de los contenedores de datos externos compatibles para Amazon RDS for PostgreSQL.
Uso de RDS para réplicas de lectura de PostgreSQL con configuraciones Multi-AZ
Puede crear una réplica de lectura a partir de una instancia de base de datos Single-AZ o Multi-AZ. Puede utilizar implementaciones Multi-AZ para mejorar la durabilidad y la disponibilidad de los datos críticos, con una réplica en espera. Una réplica en espera es una réplica de lectura dedicada que puede asumir la carga de trabajo si la base de datos de origen falla. No puede usar su réplica en espera para servir tráfico de lectura. Sin embargo, puede crear réplicas de lectura a partir de una instancia de base de datos Multi-AZ con un tráfico elevado para descargar las consultas de solo lectura. Para obtener más información sobre las implementaciones Multi-AZ, consulte Habilitación de implementaciones de instancias de bases de datos multi-AZ para Amazon RDS.
Si la instancia de base de datos de origen de una implementación Multi-AZ conmuta por error, las réplicas de lectura asociadas cambian para utilizar la instancia en espera (ahora principal) como origen de replicación. Es posible que las réplicas de lectura deban reiniciarse, según la versión de RDS para PostgreSQL, de la siguiente manera:
-
PostgreSQL 13 y versiones superiores: no es obligatorio reiniciar. Las réplicas de lectura se sincronizan automáticamente con el nuevo elemento principal. Sin embargo, en algunos casos, la aplicación cliente podría almacenar en caché los detalles del Domain Name Service (DNS, servicio de nombres de dominio) de las réplicas de lectura. Si es así, configure el valor de time-to-live (TTL, tiempo de vida) en menos de 30 segundos. Esto impide que la réplica de lectura se mantenga en una dirección IP obsoleta (y, por lo tanto, impide que se sincronice con el nuevo elemento principal). Para obtener más información sobre esta y otras prácticas recomendadas, consulte Directrices operativas básicas de Amazon RDS.
-
PostgreSQL 12 y todas las versiones anteriores: las réplicas de lectura se reinician automáticamente después de una conmutación por error en la réplica en espera porque la espera (ahora principal) tiene una dirección IP y un nombre de instancia diferente. El reinicio sincroniza la réplica de lectura con el nuevo elemento principal.
Para obtener más información sobre la conmutación por error, consulte Conmutación por error de una instancia de base de datos multi-AZ para Amazon RDS. Para obtener más información sobre cómo funcionan las réplicas de lectura en una implementación Multi-AZ, consulte Trabajo con réplicas de lectura de instancias de base de datos.
Para proporcionar soporte de conmutación por error para una réplica de lectura, puede crear la réplica de lectura como una instancia de base de datos Multi-AZ para que Amazon RDS cree una espera de su réplica en otra zona de disponibilidad (AZ). La creación de su réplica de lectura como instancia de base de datos Multi-AZ es independiente de si la base de datos de origen es una instancia de base de datos Multi-AZ.