Trabajo con réplicas de lectura de instancias de base de datos - Amazon Relational Database Service

Trabajo con réplicas de lectura de instancias de base de datos

Una réplica de lectura es una copia de solo lectura de una instancia de base de datos. Puede reducir la carga de la instancia de la base de datos principal enrutando las consultas de sus aplicaciones a la réplica de lectura. De este modo, puede ajustar la escala horizontalmente y de manera elástica por encima de las restricciones de capacidad de una instancia de base de datos para las cargas de trabajo de las bases de datos con operaciones intensivas de lectura.

Para crear una réplica de lectura a partir de una instancia de base de datos de origen, Amazon RDS usa las características de replicación integradas del motor de base de datos. Para obtener información sobre la utilización de las réplicas de lectura con un motor específico, consulte las secciones siguientes:

Tras crear una réplica de lectura a partir de una instancia de base de datos de origen, el origen se convierte en la instancia de base de datos principal. Al realizar actualizaciones en la instancia de base de datos principal, Amazon RDS las copia de forma asíncrona en la réplica de lectura. El siguiente diagrama muestra una instancia de base de datos de origen que se replica en una réplica de lectura en una zona de disponibilidad (AZ) diferente. El cliente tiene acceso de lectura/escritura a la instancia de base de datos principal y acceso de solo lectura a la réplica.


            Configuración de réplicas de lectura

Información general de las réplicas de lectura de Amazon RDS

En las siguientes secciones se describen las réplicas de lectura de instancia de base de datos. Para obtener más información acerca de las réplicas de lectura de clúster de base de datos multi-AZ, consulte Trabajo con réplicas de lectura de clústeres de base de datos Multi-AZ.

Casos de uso de réplicas de lectura

La implementación de una o varias réplicas de lectura para una instancia de base de datos de origen puede tener sentido en diversas situaciones, como las siguientes:

  • Aumentar la escala por encima de la capacidad de E/S o de computación de una instancia de base de datos para las cargas de trabajo de las bases de datos con operaciones intensivas de lectura. Puede dirigir este exceso del tráfico de lectura a una o varias réplicas de lectura.

  • Servir tráfico de lectura cuando la instancia de base de datos de origen no está disponible. En algunos casos, es posible que su instancia de base de datos de origen no pueda aceptar solicitudes de E/S, por ejemplo, debido a la suspensión de E/S para las copias de seguridad o el mantenimiento programado. En estos casos, puede dirigir el tráfico de lectura a sus réplicas de lectura. En este caso de uso, recuerde que los datos de la réplica de lectura pueden estar "obsoletos" porque la instancia de base de datos de origen no está disponible.

  • Las situaciones de informes de negocios o de almacenamiento de datos en las que se desea que las consultas de informes de negocios se ejecuten en una réplica de lectura y no en la instancia de base de datos de producción.

  • Implementación de recuperación de desastres Puede promocionar una réplica de lectura en la instancia independiente como solución de recuperación de desastres si la instancia de base de datos principal produce un error.

Cómo funcionan las réplicas de lectura

Cuando se crea una réplica de lectura, primero se especifica una instancia de base de datos existente como origen. A continuación, Amazon RDS realiza una instantánea de la instancia de origen y crea una instancia de solo lectura a partir de la instantánea. Luego, Amazon RDS utiliza el método de reproducción asíncrono para que el motor de base de datos actualice la réplica de lectura cuando se produzca un cambio en la instancia de base de datos primaria.

La réplica de lectura funciona como una instancia de base de datos que permite únicamente conexiones de solo lectura. Una excepción es el motor de base de datos RDS para Oracle, que admite bases de datos de réplica en modo montado. Una réplica montada no acepta conexiones de usuario y, por lo tanto, no puede servir una carga de trabajo de solo lectura. El uso principal de las réplicas montadas es la recuperación de desastres entre regiones. Para obtener más información, consulte Trabajo con las réplicas de lectura para Amazon RDS para Oracle.

Las aplicaciones se conectan a una réplica de lectura de la misma forma que a cualquier instancia de base de datos. Amazon RDS replica todas las bases de datos de la instancia de base de datos de origen.

Lectura de réplicas en una implementación multi-AZ

Se puede configurar una réplica de lectura para una instancia de base de datos que también tenga una réplica en espera configurada para alta disponibilidad en una implementación Multi-AZ. Una replicación con la réplica en espera es sincrónica. A diferencia de una réplica de lectura, una réplica en espera no puede servir tráfico de lectura.

En el siguiente escenario, los clientes tienen acceso de lectura/escritura a una instancia de base de datos principal en una AZ. La instancia principal copia las actualizaciones de forma asincrónica en una réplica de lectura en una segunda AZ y también las copia de forma sincrónica en una réplica en espera en una tercera AZ. Los clientes solo tienen acceso de lectura a la réplica de lectura.


                    Configuración de réplica de lectura y de réplica en espera

Para obtener más información acerca de las réplicas de alta disponibilidad y en espera, consulte Configuración y administración de una implementación multi-AZ.

Réplicas de lectura entre regiones

En algunos casos, una réplica de lectura reside en una Región de AWS distinta de la de su instancia de base de datos principal. En esos casos, Amazon RDS configura un canal de comunicaciones seguro entre la instancia de base de datos primaria y la réplica de lectura. Amazon RDS establece cualquier configuración de seguridad de AWS necesarias para habilitar el canal seguro, por ejemplo agregar entradas de grupo de seguridad. Para obtener información sobre las réplicas de lectura entre regiones, consulte Creación de una réplica de lectura en una Región de AWS distinta.

La información de este capítulo hace referencia a la creación de réplicas de lectura de Amazon RDS, ya sea en la misma Región de AWS que la instancia de base de datos de origen o en una Región de AWS diferente. La siguiente información no es válida para configurar la replicación con una instancia que se ejecute en una instancia de Amazon EC2 o que esté instalada localmente.

Diferencias entre las réplicas de lectura para motores de base de datos

Debido a que los motores de base de datos de Amazon RDS implementan la replicación de forma diferente, existen diferencias importantes que debe conocer, como se muestra en la siguiente tabla.

Característica o comportamiento MySQL y MariaDB Oracle PostgreSQL SQL Server

¿Qué es el método de replicación?

Replicación lógica.

Replicación física.

Replicación física.

Replicación física.

¿Cómo se purgan los registros de transacciones?

RDS para MySQL y RDS para MariaDB conservan registros binarios que no fueron aplicados.

Si una instancia de base de datos principal no tiene réplicas de lectura entre regiones, Amazon RDS para Oracle mantiene durante un mínimo de dos horas los registros de transacciones en la instancia de base de datos de origen. Los registros se purgan de la base de datos de origen después de dos horas o cuando hayan pasado las horas de retención del registro del archivo establecidas, lo que lleve más tiempo. Los registros se purgan de la réplica de lectura después de haber pasado las horas de retención del registro del archivo establecidas solo si se han aplicado correctamente a la base de datos.

En algunos casos, es posible que una instancia de base de datos principal tenga una o más réplicas de lectura entre regiones. Si esto ocurre, Amazon RDS para Oracle mantiene los registros de transacción en la instancia de base de datos de origen hasta que se hayan transmitido y aplicado a todas las réplicas de lectura entre regiones.

Para obtener información acerca de cómo configurar las horas de retención del registro de archivo, consulte Retención de los registros REDO archivados.

PostgreSQL cuenta con el parámetro wal_keep_segments, que establece cuántos archivos de registro de escritura previa (WAL) se conservan para proporcionar datos a las réplicas de lectura. El valor del parámetro especifica el número de registros que conservar.

El archivo de registro virtual (VLF) del archivo de registro de transacciones en la réplica principal se puede truncar después de que ya no sea necesario para las réplicas secundarias.

El VLF solo se puede marcar como inactivo cuando los registros se han reforzado en las réplicas. Independientemente de lo rápido que los subsistemas de disco estén en la réplica principal, el registro de transacciones mantendrá los VLF hasta que la réplica más lenta se haya reforzado.

¿Se puede hacer escribible una réplica?

Sí. Puede habilitar las réplicas de lectura de MySQL o de MariaDB para escritura.

No. Una réplica de lectura de Oracle es una copia física y Oracle no permite escribir en una réplica de lectura. Puede promocionar la réplica de lectura para que sea de escritura. La réplica de lectura promocionada tiene los datos replicados hasta el momento en el que se hizo la solicitud para promocionarla.

No. Una réplica de lectura de PostgreSQL es una copia física y PostgreSQL no permite que una réplica de lectura sea de escritura.

No. Una réplica de lectura de SQL Server es una copia física y SQL Server no permite escribir en una réplica de lectura. Puede promocionar la réplica de lectura para que sea de escritura. La réplica de lectura promocionada tiene los datos replicados hasta el momento en el que se hizo la solicitud para promocionarla.

¿Pueden hacerse copias de seguridad en la réplica?

Sí. Las réplicas de lectura de RDS para MySQL o RDS para MariaDB admiten copias de seguridad automáticas e instantáneas manuales.

Sí. Las réplicas de lectura de RDS para MySQL o RDS para MariaDB se admiten en réplicas de lectura de RDS para Oracle.

Sí, puede crear una instantánea manual de RDS para las réplicas de lectura de PostgreSQL. Las copias de seguridad automatizadas para réplicas de lectura se admiten únicamente para RDS para PostgreSQL 14.1 y versiones posteriores. No puede activar las copias de seguridad automatizadas para las réplicas de lectura de RDS para PostgreSQL de versiones anteriores a 14.1. Para RDS para PostgreSQL 13 y versiones anteriores, cree una instantánea a partir de una réplica de lectura si desea realizar una copia de seguridad de ella.

No. Las réplicas de lectura de RDS para MySQL o RDS para MariaDB no se admiten en réplicas de lectura de RDS para SQL Server.

¿Se puede usar la replicación paralela?

Sí. Todas las versiones de MariaDB y MySQL compatibles permiten subprocesos de replicación paralela.

Sí. Los datos de registro de REDO siempre se transmiten en paralelo desde la base de datos principal a todas sus réplicas de lectura.

No. PostgreSQL tiene un único proceso para gestionar la replicación.

Sí. Los datos de registro de REDO siempre se transmiten en paralelo desde la base de datos principal a todas sus réplicas de lectura.

¿Puede mantener una réplica en un estado montado en lugar de en un estado de solo lectura?

No.

Sí. El uso principal de las réplicas montadas es la recuperación de desastres entre regiones. No se requiere una licencia Active Data Guard para las réplicas montadas. Para obtener más información, consulte Trabajo con las réplicas de lectura para Amazon RDS para Oracle.

No.

No.

Tipos de almacenamiento de las réplicas de lectura

De forma predeterminada, una réplica de lectura se crea con el mismo tipo de almacenamiento que la instancia de base de datos de origen. Sin embargo, puede crear una réplica de lectura que tenga un tipo de almacenamiento distinto del de la instancia de base de datos de origen en función de las opciones que se muestran en la siguiente tabla.

Tipo de almacenamiento de la instancia de base de datos de origen Asignación de almacenamiento de la instancia de base de datos de origen Opciones del tipo de almacenamiento de las réplicas de lectura
Provisioned IOPS (IOPS aprovisionadas) 100 GiB–64 TiB IOPS aprovisionadas, uso general, magnético
Uso general 100 GiB–64 TiB IOPS aprovisionadas, uso general, magnético
Uso general <100 GiB Uso general, magnético
Magnético 100 GiB–6 TiB IOPS aprovisionadas, uso general, magnético
Magnético <100 GiB Uso general, magnético
nota

Cuando aumenta el almacenamiento asignado de una réplica de lectura, debe ser de al menos un 10 por ciento. Si intenta aumentar el valor en menos del 10 por ciento, obtendrá un error.

Restricciones para crear una réplica a partir de una réplica

Amazon RDS no admite la replicación circular. No puede configurar una instancia de base de datos para que sirva como origen de replicación para una instancia de base de datos existente. Solo puede crear una nueva réplica de lectura desde una instancia de base de datos existente. Por ejemplo, si MySourceDBInstance se replica en ReadReplica1, no puede configurar ReadReplica1 para volverse a replicar en MySourceDBInstance.

Para RDS para MariaDB y RDS para MySQL, y en determinadas versiones de RDS para PostgreSQL, puede crear una réplica de lectura a partir de una réplica de lectura existente. Por ejemplo, puede crear una réplica de lectura nueva ReadReplica2 a partir de una réplica ReadReplica1 existente. En RDS para Oracle y RDS para SQL Server, no puede crear una réplica de lectura a partir de una existente.

Consideraciones a la hora de borrar réplicas

Si ya no necesita réplicas de lectura, puede eliminarlas explícitamente utilizando los mismos mecanismos que emplea para eliminar una instancia de base de datos. Si elimina una instancia de base de datos de origen sin eliminar sus réplicas de lectura en la misma Región de AWS, cada réplica de lectura se convertirá en una instancia de base de datos independiente. Para obtener más información sobre la eliminación de instancias de base de datos, consulte Eliminación de una instancia de base de datos. Para obtener información sobre la promoción de réplicas de lectura, consulte Promoción de una réplica de lectura para convertirla en una instancia de base de datos independiente.

Si tiene réplicas de lectura entre regiones, consulte en Consideraciones relativas a la replicación entre regiones las consideraciones relacionadas con la eliminación de la instancia de base de datos de origen para una réplica de lectura entre regiones.

Creación de una réplica de lectura

Se puede crear una réplica de lectura a partir de una instancia de base de datos existente, utilizando AWS Management Console, AWS CLI, o la API de RDS. Para crear una réplica de lectura, debe especificar SourceDBInstanceIdentifier, que es el identificador de instancias de base de datos de la instancia de base de datos de origen desde la que desea replicar.

Cuando se crea una réplica de lectura, Amazon RDS realiza una instantánea de base de datos de la instancia de base de datos de origen y comienza la replicación. Como resultado, se experimenta una breve suspensión de E/S en la instancia de base de datos de origen mientras se realiza la instantánea de base de datos.

nota

La suspensión de E/S suele durar un minuto. Puede evitar la suspensión de E/S si la instancia de base de datos de origen es una implementación Multi-AZ, porque en ese caso la instantánea se toma de la instancia de base de datos secundaria.

Una transacción activa de ejecución prolongada puede ralentizar el proceso de creación de la réplica de lectura. Le recomendamos que espere a que se completen las transacciones de ejecución prolongada antes de crear una réplica de lectura. Si crea varias réplicas de lectura en paralelo a partir de la misma instancia de base de datos de origen, Amazon RDS solo realiza una instantánea cuando comienza la primera acción de creación.

Cuando se crea una réplica de lectura, hay varias cosas que se deben tener en cuenta. En primer lugar, debe habilitar las copias de seguridad automáticas en la instancia de base de datos de origen estableciendo el periodo de retención de copia de seguridad en un valor distinto de 0. Este requisito también es válido para una réplica de lectura que sea la instancia de base de datos de origen de otra réplica de lectura. Para habilitar las copias de seguridad automáticas en una réplica de lectura de RDS para My SQL, primero cree la réplica de lectura y modifíquela a continuación para habilitar las copias de seguridad automáticas.

nota

En una Región de AWS, recomendamos encarecidamente crear todas las réplicas de lectura en la misma nube privada virtual (VPC) basándose en Amazon VPC como instancia de base de datos de origen. Si crea una réplica de lectura en una VPC diferente de la instancia de base de datos de origen, los rangos de enrutamiento entre dominios sin clases (CIDR) pueden superponerse entre la réplica y el sistema RDS. La superposición de CIDR hace que la réplica sea inestable, lo que puede afectar negativamente a las aplicaciones que se conectan a ella. Si obtiene un error al crear la réplica de lectura, elija un grupo de subred de base de datos de destino diferente. Para obtener más información, consulte Uso de una instancia de base de datos en una VPC.

No existe una forma directa de crear una réplica de lectura en otra Cuenta de AWS mediante la consola o AWS CLI.

Para crear una réplica de lectura a partir de una instancia de base de datos de origen
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Databases (Bases de datos).

  3. Seleccione la instancia de base de datos que desea usar como origen de una réplica de lectura

  4. En Actions (Acciones), elija Create read replica (Crear réplica de lectura).

  5. En DB instance identifier (Identificador de instancias de bases de datos), escriba un nombre para la réplica de lectura.

  6. Elija la configuración de la instancia. Es recomendable usar la misma clase de instancia de base de datos y el mismo tipo de almacenamiento o mayores que la instancia de base de datos de origen para la réplica de lectura.

  7. Para la Región de AWS, especifique la región de destino de la réplica de lectura.

  8. En Almacenamiento, especifique el tamaño del almacenamiento asignado y si quiere utilizar el autoescalado de almacenamiento.

    Si la instancia de base de datos de origen no dispone de la última configuración de almacenamiento, la opción Actualizar la configuración del sistema de archivos de almacenamiento estará disponible. Puede habilitar esta opción para actualizar el sistema de archivos de almacenamiento de la réplica de lectura a la configuración preferida. Para obtener más información, consulte Actualización del sistema de archivos de almacenamiento para una instancia de base de datos.

  9. En Disponibilidad, elija si quiere crear una réplica en espera en otra zona de disponibilidad para permitir la conmutación por error de la réplica.

    nota

    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.

  10. Especifique otros ajustes de la instancia de base de datos. Para obtener información acerca de cada configuración disponible, consulte Configuración de instancias de base de datos.

  11. Para crear una réplica de lectura cifrada, expanda Configuración adicional y especifique la configuración siguiente:

    1. Elija Habilitar el cifrado.

    2. Para AWS KMS key, elija el identificador AWS KMS key de la clave de KMS.

    nota

    La instancia de base de datos de origen debe estar cifrada. Para obtener más información acerca del cifrado de la instancia de base de datos de origen, consulte Cifrado de recursos de Amazon RDS.

  12. Elija Create read replica (Crear réplica de lectura).

Después de crear la réplica de lectura, puede verla en la página Bases de datos de la consola de RDS. Muestra Réplica en la columna Rol .

Para crear una réplica de lectura a partir de una instancia de base de datos de origen, utilice el comando create-db-instance-read-replica de la AWS CLI. En este ejemplo, también se establece el tamaño de almacenamiento asignado, se habilita el autoescalado de almacenamiento y se actualiza el sistema de archivos a la configuración preferida.

Puede especificar otras opciones. Para obtener más información acerca de cada configuración, consulte Configuración de instancias de base de datos.

ejemplo

Para Linux, macOS o Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --allocated-storage 100 \ --max-allocated-storage 1000 \ --upgrade-storage-config

En Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --allocated-storage 100 ^ --max-allocated-storage 1000 ^ --upgrade-storage-config

Para crear una réplica de lectura a partir de una instancia de base de datos de origen MySQL, MariaDB, Oracle, PostgreSQL, o SQL Server, llame la operación Amazon RDS API CreateDBInstanceReadReplica con los siguientes parámetros requeridos:

  • DBInstanceIdentifier

  • SourceDBInstanceIdentifier

Promoción de una réplica de lectura para convertirla en una instancia de base de datos independiente

Puede promover una réplica de lectura a una instancia de base de datos independiente. Si una instancia de base de datos de origen tiene varias réplicas de lectura, promocionar una de las réplicas de lectura a instancia de base de datos no tiene ningún efecto en las otras réplicas.

Cuando se promociona una réplica de lectura, RDS reinicia la instancia de base de datos antes de que esté disponible. Este proceso de promoción puede tardar unos minutos o más, según el tamaño de la réplica de lectura.


            Promoción de una réplica de lectura

Casos de uso para promocionar una réplica de lectura

Hay varios motivos por los que promocionar una réplica de lectura a una instancia de base de datos independiente:

  • Implementación de recuperación de errores: puede utilizar la promoción de réplica de lectura como esquema de recuperación de datos si la instancia de base de datos principal produce un error. Este enfoque complementa la replicación sincrónica, la detección automática de errores y la conmutación por error.

    Si es consciente de las ramificaciones y limitaciones de la replicación asíncrona y a pesar de ello quiere usar la promoción de réplicas de lectura para la recuperación de datos, puede hacerlo. Para ello, cree primero una réplica de lectura y, a continuación, monitoree la instancia de base de datos principal para ver si se producen errores. En caso de error, haga lo siguiente:

    1. Promocione la réplica de lectura.

    2. Dirija el tráfico de la base de datos a la instancia de base de datos promocionada.

    3. Cree una réplica de lectura de reemplazo que tenga la instancia de base de datos promocionada como origen.

  • Actualización de la configuración de almacenamiento: si la instancia de base de datos de origen no tiene la configuración de almacenamiento preferida, puede crear una réplica de lectura de la instancia y actualizar la configuración del sistema de archivos de almacenamiento. Esta opción migra el sistema de archivos de la réplica de lectura a la configuración preferida. Luego, puede promover la réplica de lectura en una instancia independiente.

    Puede utilizar esta opción para superar las limitaciones de escalado de almacenamiento y tamaño de archivos de los sistemas de archivos de 32 bits más antiguos. Para obtener más información, consulte Actualización del sistema de archivos de almacenamiento para una instancia de base de datos.

    Esta opción solo está disponible si su instancia de base de datos de origen no tiene la configuración de almacenamiento más reciente o si va a cambiar la clase de instancia de base de datos en la misma solicitud.

  • Fragmentación: la fragmentación es un tipo de arquitectura en el que no se comparte nada y, en esencia, consiste en dividir una base de datos grande en varias bases de datos más pequeñas. Una forma habitual de partir una base de datos es dividir las tablas que no están unidas en la misma consulta entre diferentes hosts. Otro método es duplicar una tabla entre varios hosts y, a continuación, usar un algoritmo de hash para determinar qué host recibe una actualización determinada. Puede crear réplicas de lectura correspondientes a cada uno de sus particiones (bases de datos más pequeñas) y promocionarlas cuando decida convertirlas en particiones independientes. A continuación puede separar el espacio de claves (si va a dividir filas) o la distribución de las tablas para cada uno de los fragmentos dependiendo de sus necesidades.

  • Realización de operaciones DDL (solo MySQL y MariaDB): las operaciones DDL, como la creación o la reconstrucción de índices, pueden requerir tiempo y tener un impacto considerable en el desempeño de una instancia de base de datos. Puede realizar estas operaciones en una réplica de lectura de MySQL o MariaDB una vez que la réplica de lectura se haya sincronizado con la instancia de base de datos principal. A continuación, puede promocionar la réplica de lectura y dirigir sus aplicaciones para que usen la instancia promocionada.

nota

Si su réplica de lectura es una instancia de base de datos de RDS para Oracle, puede realizar una transición en lugar de una promoción. En una transición, la instancia de base de datos de origen pasa a ser la nueva réplica y la réplica pasa a ser la nueva instancia de base de datos de origen. Para obtener más información, consulte Realización de una conmutación de Oracle Data Guard.

Características de una réplica de lectura promocionada

Una vez que haya promocionado la réplica de lectura, dejará de funcionar como tal y pasará a ser una instancia de base de datos independiente. La nueva instancia de base de datos independiente tiene las siguientes características:

  • La instancia de base de datos independiente conserva el grupo de opciones y el grupo de parámetros de la réplica de lectura previa a la promoción.

  • Puede crear réplicas de lectura a partir de la instancia de base de datos independiente y realizar operaciones de restauración a un momento dado.

  • No puede usar la instancia de base de datos como déstino de la réplica, puesto que ya no es una réplica de lectura.

Requisitos previos para promocionar una réplica de lectura

Antes de promocionar una réplica de lectura, siga este procedimiento:

  • Revise su estrategia de copia de seguridad:

    • Le recomendamos que habilite las copias de seguridad y que complete al menos una de ellas. La duración de la copia de seguridad es una función del número de cambios en la base de datos desde la copia de seguridad anterior.

    • Si ha habilitado las copias de seguridad en la réplica de lectura, configure el intervalo de copia de seguridad automática para que las copias de seguridad diarias no interfieran en la promoción de la réplica de lectura.

    • Asegúrese de que la réplica de lectura no tenga el estado backing-up. No puede promocionar una réplica de lectura si se encuentra en ese estado.

  • Detenga la escritura de transacciones en la instancia de base de datos principal y, a continuación, espere hasta que RDS haya realizado todas las actualizaciones en la réplica de lectura.

    Las actualizaciones de la base de datos se producen en la réplica de lectura después de haberse producido en la instancia de la base de datos principal. Este retardo en la réplica puede variar considerablemente. Utilice la métrica Replica Lag para determinar cuándo se han completado todas las actualizaciones en la réplica de lectura.

  • (Solo para MySQL y MariaDB) Para realizar cambios en una réplica de lectura MySQL o MariaDB antes de promocionarla, establezca el parámetro read_only en 0 en el grupo de parámetros de base de datos para la réplica de lectura. A continuación, puede llevar a cabo todas las operaciones DDL necesarias, como la creación de índices, en la réplica de lectura. Las acciones realizadas en la réplica de lectura no afectan al rendimiento de la instancia de base de datos principal.

Promoción de una réplica de lectura: pasos básicos

Los siguientes pasos muestran el proceso general para promocionar una réplica de lectura a instancia de base de datos:

  1. Promueva la réplica de lectura mediante la opción Promote (Promover) de la consola de Amazon RDS, el comando de la AWS CLI promote-read-replica o la operación PromoteReadReplica de la API de Amazon RDS.

    nota

    El proceso de promoción tarda algunos minutos en completarse. Cuando se promociona una réplica de lectura, RDS detiene la réplica y la reinicia. Una vez completado el reinicio, la réplica de lectura pasa a estar disponible como nueva instancia de base de datos.

  2. (Opcional) Modifique la nueva instancia de base de datos para que sea una implementación Multi-AZ. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS y Configuración y administración de una implementación multi-AZ.

Para promover una réplica de lectura a una instancia de base de datos independiente
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En la consola de Amazon RDS, seleccione Databases (Bases de datos).

    Aparece el panel Databases (Bases de datos). Cada réplica de lectura muestra Replica (Réplica) en la columna Role (Rol).

  3. Elija la réplica de lectura que desea promocionar.

  4. En Actions (Acciones), seleccione Promote (Promover).

  5. En la página Promote Read Replica (Promocionar réplica de lectura), escriba el periodo de retención de copia de seguridad y el periodo de copia de seguridad para la instancia de base de datos recientemente promocionada.

  6. Cuando la configuración sea la que desea, elija Continue.

  7. En la página de confirmación, elija Promote Read Replica (Promocionar réplica de lectura).

Para promover una réplica de lectura a una instancia de base de datos independiente, use el comando AWS CLI promote-read-replica.

ejemplo

Para Linux, macOS o Unix:

aws rds promote-read-replica \ --db-instance-identifier myreadreplica

En Windows:

aws rds promote-read-replica ^ --db-instance-identifier myreadreplica

Para promover una réplica de lectura a una instancia de base de datos independiente, llame a la operación PromoteReadReplica de la API de Amazon RDS con el parámetro DBInstanceIdentifier requerido.

Monitoreo de la replicación de lectura

Puede monitorear el estado de una réplica de lectura de varias formas. La consola de Amazon RDS muestra el estado de una réplica de lectura en la sección Replicación de la pestaña Conectividad y seguridad, en los detalles de la réplica de lectura. Para ver los detalles de una réplica de lectura, elija el nombre de la réplica de lectura en la lista de instancias de base de datos en la consola de Amazon RDS.


            Estado de la réplica de lectura

También puede ver el estado de una réplica de lectura con el comando describe-db-instances de la AWS CLI o la operación DescribeDBInstances de la API de Amazon RDS.

El estado de una réplica de lectura puede ser uno de los siguientes:

  • replicating (replicando): la réplica de lectura se está replicando correctamente.

  • Replicación degradada (solo SQL Server y PostgreSQL): las réplicas reciben datos de la instancia principal, pero una o más bases de datos no están recibiendo actualizaciones. Esto puede ocurrir, por ejemplo, cuando una réplica se encuentra en el proceso de configuración de las bases de datos recién creadas. También puede ocurrir cuando se realizan cambios en objetos grandes o en DDL no compatibles en el entorno azul de una implementación azul/verde.

    El estado no pasa de replication degraded a error, a menos que se produzca un error durante el estado degradado.

  • error: se ha producido un error durante la replicación. Compruebe el campo Replication Error (Error de replicación) en la consola de Amazon RDS o el registro de eventos para determinar el error exacto. Para obtener más información acerca de resolución de problemas de replicación, consulte Solución de problemas de réplicas de lectura de MySQL.

  • terminated (terminada) (solo MariaDB, MySQL o PostgreSQL): la replicación se ha terminado. Esto sucede si la replicación se ha detenido durante más de 30 días consecutivos, ya sea manualmente o por un error de replicación. En ese caso, Amazon RDS termina la reproducción entre la instancia de base de datos primaria y todas las réplicas de lectura. Amazon RDS realiza ese procedimiento para impedir que aumenten los requisitos de almacenamiento en la instancia de base de datos de origen y que se incrementen los tiempos de conmutación por error.

    La replicación no completada puede afectar al almacenamiento, ya que los registros pueden aumentar en tamaño y en número debido al alto volumen de mensajes de error que se escriben en el registro. La replicación no completada puede afectar también a la recuperación de errores debido al tiempo que Amazon RDS necesita para mantener y procesar el elevado número de registros durante la recuperación.

  • terminated (terminado) (solo Oracle): la replicación ha terminado. Esto sucede si la replicación se ha detenido durante más de 8 horas por no haber suficiente espacio de almacenamiento en la réplica de lectura. En ese caso, Amazon RDS termina la replicación entre la instancia de base de datos primaria y la réplica de lectura afectada. Este estado es terminal y la réplica leída debe volver a crearse.

  • stopped (detenida) (solo MariaDB or MySQL): la replicación se ha detenido a petición de un cliente.

  • replication stop point set (punto de detención de replicación establecidoI) (solo MySQL): se ha establecido un punto de detención iniciado por el cliente con el procedimiento almacenado mysql.rds_start_replication_until y la replicación se encuentra en curso.

  • replication stop point reached (punto de detención de replicación alcanzado) (solo MySQL): se ha establecido un punto de detención iniciado por el cliente con el procedimiento almacenado mysql.rds_start_replication_until y la replicación se ha detenido porque se ha llegado al punto de detención.

Puede ver dónde se está replicando una instancia de base de datos y, si es así, comprobar su estado de replicación. En la página Bases de datos de la consola de RDS, muestra Principal en la columna Rol . Elija su nombre de instancia de base de datos. En su página de detalles, en la ficha Conectividad y seguridad , su estado de replicación se encuentra en Replicación.

Monitoreo de retraso de la replicación

Puede monitorizar el retardo de replicación en Amazon CloudWatch mediante la visualización de la métrica ReplicaLag de Amazon RDS.

Para MariaDB y MySQL, la métrica ReplicaLag indica el valor del campo de Seconds_Behind_Master del comando SHOW REPLICA STATUS. Los motivos comunes de retardo de la replicación para MySQL y MariaDB son los siguientes:

  • Una interrupción de la red.

  • Escritura en tablas con índices en una réplica de lectura. Si el parámetro read_only no se ha establecido en 0 en la réplica de lectura, puede interrumpirse la replicación.

  • Uso de un motor de almacenamiento no transaccional como MyISAM. La replicación solo se admite para el motor de almacenamiento InnoDB en MySQL y el motor de almacenamiento XtraDB en MariaDB.

nota

Versiones anteriores de MariaDB y MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MariaDB anterior a la 10.5 o una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.

Cuando la métrica ReplicaLag llegue a 0, la réplica estará funcionando al mismo ritmo que la instancia de base de datos principal. Si la métrica ReplicaLag devuelve -1, la replicación no está activa. ReplicaLag = -1 es equivalente a Seconds_Behind_Master = NULL.

En Oracle, la métrica ReplicaLag es la suma del valor Apply Lag y la diferencia entre la hora actual y el valor de DATUM_TIME del retraso de aplicación. El valor DATUM_TIME es la última hora en la que la réplica de lectura recibió datos de su instancia de base de datos de origen. Para obtener más información, consulte V$DATAGUARD_STATS en la documentación de Oracle.

Para SQL Server, la métrica ReplicaLag es el retraso máximo de las bases de datos que se han retrasado, en segundos. Por ejemplo, si tiene dos bases de datos que se retrasan 5 segundos y 10 segundos, respectivamente, entonces ReplicaLag son 10 segundos. La métrica ReplicaLag devuelve el valor de la siguiente consulta.

SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;

Para obtener más información, consulte secondary_lag_seconds en la documentación de Microsoft.

ReplicaLag devuelve -1 si RDS no puede determinar el retraso, como durante la configuración de la réplica, o cuando la réplica de lectura está en el estado error.

nota

Las nuevas bases de datos no se incluyen en el cálculo del retraso hasta que estén accesibles en la réplica de lectura.

Para PostgreSQL, la métrica ReplicaLag devuelve el valor de la siguiente consulta.

SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag

Las versiones 9.5.2 y más recientes de PostgreSQL utilizan ranuras de replicación física para administrar la retención del registro de escritura previa (WAL) en la instancia de origen. Para cada instancia de réplica de lectura entre regiones, Amazon RDS crea una ranura de replicación física y la asocia con la instancia. Dos métricas de Amazon CloudWatch, Oldest Replication Slot Lag y Transaction Logs Disk Usage, muestran el retardo de la réplica con más retraso en términos de datos de WAL recibidos y la cantidad de almacenamiento que se está usando para los datos de WAL. El valor de Transaction Logs Disk Usage puede aumentar sustancialmente cuando una réplica de lectura entre regiones tiene mucho retraso.

Para obtener más información acerca de la monitorización de una instancia de base de datos con CloudWatch, consulte Supervisión de métricas de Amazon RDS con Amazon CloudWatch.

Creación de una réplica de lectura en una Región de AWS distinta

Con Amazon RDS, puede crear una réplica de lectura en una región de Región de AWS diferente que la de la instancia de base de datos de origen.


                Configuración de réplica de lectura entre regiones

Cree una réplica de lectura en una Región de AWS diferente para lo siguiente:

  • Mejorar la capacidad de recuperación de desastres.

  • Escalar las operaciones de lectura en una Región de AWS más cercana a sus usuarios.

  • Facilitar la migración de un centro de datos de una Región de AWS a un centro de datos de otra Región de AWS.

Crear una réplica de lectura en una Región de AWS distinta a la de la instancia de origen es similar a crear una réplica en la misma Región de AWS. Puede utilizar la AWS Management Console, ejecutar el comando create-db-instance-read-replica o llamar a la operación CreateDBInstanceReadReplica de la API.

nota

Para crear una réplica de lectura cifrada en una Región de AWS distinta a la de la instancia de base de datos de origen, la instancia de base de datos de origen debe estar cifrada.

Disponibilidad en regiones y versiones

La disponibilidad de las características varía según las versiones específicas de cada motor de base de datos y entre Regiones de AWS. Para obtener más información sobre la disponibilidad en versiones y regiones de la replicación entre regiones, consulte Réplicas de lectura entre regiones.

Creación de una réplica de lectura entre regiones

Los siguientes procedimientos muestran cómo crear una réplica de lectura a partir de una instancia de base de datos de MariaDB, Microsoft SQL Server, MySQL, Oracle o PostgreSQL de origen en una Región de AWS diferente.

Puede crear una réplica de lectura entre Regiones de AWS usando la AWS Management Console.

Para crear una réplica de lectura entre Regiones de AWS con la consola
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Databases (Bases de datos).

  3. Seleccione la instancia de base de datos de MariaDB, Microsoft SQL Server, MySQL, Oracle o PostgreSQL que desee usar como origen para una réplica de lectura.

  4. En Actions (Acciones), elija Create read replica (Crear réplica de lectura).

  5. En DB instance identifier (Identificador de instancias de bases de datos), escriba un nombre para la réplica de lectura.

  6. Elija la Destination Region (Región de destino).

  7. Elija las especificaciones de la instancia que desee usar. Se recomienda usar la misma clase de instancia de base de datos y el mismo tipo de almacenamiento o mayores para la réplica de lectura.

  8. Para crear una réplica de lectura cifrada en otra Región de AWS:

    1. Elija Habilitar el cifrado.

    2. En AWS KMS key, elija el identificador AWS KMS key de la clave de KMS en la Región de AWS de destino.

    nota

    Para crear una réplica de lectura cifrada, la instancia de base de datos de origen debe estar cifrada. Para obtener más información acerca del cifrado de la instancia de base de datos de origen, consulte Cifrado de recursos de Amazon RDS.

  9. Elija otras opciones, como el escalado automático de almacenamiento.

  10. Elija Create read replica (Crear réplica de lectura).

Para crear una réplica de lectura a partir de una instancia de base de datos de MySQL, Microsoft SQL Server, MariaDB, Oracle o PostgreSQL de origen en una Región de AWS diferente, puede usar el comando create-db-instance-read-replica. En este caso, se usa create-db-instance-read-replica desde la Región de AWS en la que se desea situar la réplica de lectura (región de destino) y se especifica el nombre de recurso de Amazon (ARN) para la instancia de base de datos de origen. Un ARN identifica de forma única a un recurso creado en Amazon Web Services.

Por ejemplo, si la instancia de base de datos de origen está en la región US East (N. Virginia), el ARN tendrá un aspecto similar al siguiente.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Para obtener información acerca de los ARN, consulte Uso de nombres de recursos de Amazon (ARN) en Amazon RDS.

Para crear una réplica de lectura cifrada en una Región de AWS distinta de la instancia de base de datos de origen, puede usar el comando AWS CLIcreate-db-instance-read-replica desde la Región de AWS de destino. Los siguientes parámetros son necesarios para crear una réplica de lectura en otra Región de AWS:

  • --region: la Región de AWS de destino donde se crea la réplica de lectura.

  • --source-db-instance-identifier – Identificador de instancia de base de datos para la instancia de base de datos de origen. Este identificador debe estar en el formato del ARN para la Región de AWS de origen.

  • --db-instance-identifier: el identificador de la réplica de lectura en la Región de AWS de destino.

ejemplo de una réplica de lectura entre regiones

El siguiente código crea una réplica de lectura en la región EE.UU. Oeste (Oregón) desde una instancia de base de datos de origen en la regiónUS East (N. Virginia).

Para Linux, macOS o Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

En Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Los siguientes parámetros también son necesarios para crear una réplica de lectura cifrada en otra Región de AWS:

  • --kms-key-id: identificador de AWS KMS key de la clave de KMS que se va a utilizar para cifrar la réplica de lectura en Región de AWS de destino.

ejemplo de una réplica de lectura cifrada entre regiones

El siguiente código crea una réplica de lectura cifrada en la región EE.UU. Oeste (Oregón) de una instancia de base de datos de origen en la región US East (N. Virginia).

Para Linux, macOS o Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --region us-west-2 \ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance \ --kms-key-id my-us-west-2-key

En Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --region us-west-2 ^ --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:mydbinstance ^ --kms-key-id my-us-west-2-key

La opción --source-region es necesaria cuando se crea una réplica de lectura cifrada entre las AWS GovCloud (Este de EE. UU.) y AWS GovCloud (EE. UU. Oeste). Para --source-region, especifique la Región de AWS de la instancia de base de datos de origen.

Si no se ha especificado --source-region, especifique un valor de --pre-signed-url. Una URL prefirmada es una URL que contiene una solicitud firmada de Signature Version 4 para el comando create-db-instance-read-replica que se llama en la Región de AWS de origen. Para obtener más información acerca de la opción pre-signed-url, consulte create-db-instance-read-replica en la Referencia de los comandos de AWS CLI.

Para crear una réplica de lectura a partir de una instancia de base de datos de MySQL, Microsoft SQL Server, MariaDB, Oracle o PostgreSQL de origen en una Región de AWS diferente, puede llamar a la operación CreateDBInstanceReadReplica de la API de Amazon RDS. En este caso, debe llamar a CreateDBInstanceReadReplica desde la Región de AWS en la que se desea colocar la réplica de lectura (región de destino) y especificar el nombre de recurso de Amazon (ARN) de la instancia de base de datos de origen. Un ARN identifica de forma única a un recurso creado en Amazon Web Services.

Para crear una réplica de lectura cifrada en una Región de AWS diferente que la instancia de base de datos de origen, puede usar la operación de la API de Amazon RDS CreateDBInstanceReadReplica desde la Región de AWS de destino. Para crear una réplica de lectura cifrada en otra Región de AWS, debe especificar un valor para PreSignedURL. PreSignedURL debe contener una solicitud para llamar a la operación CreateDBInstanceReadReplica en la Región de AWS de origen en la que se crea la réplica de lectura. Para obtener más información acerca de la PreSignedUrl, consulte CreateDBInstanceReadReplica.

Por ejemplo, si la instancia de base de datos de origen está en la región US East (N. Virginia), el ARN tendrá un aspecto similar al siguiente.

arn:aws:rds:us-east-1:123456789012:db:mydbinstance

Para obtener información acerca de los ARN, consulte Uso de nombres de recursos de Amazon (ARN) en Amazon RDS.

ejemplo
https://us-west-2.rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &KmsKeyId=my-us-east-1-key &PreSignedUrl=https%253A%252F%252Frds.us-west-2.amazonaws.com%252F %253FAction%253DCreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%123456789012%25253Adb%25253Amydbinstance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amydbinstance %2526Version%253D2014-10-31 %2526X-Amz-Algorithm%253DAWS4-HMAC-SHA256 %2526X-Amz-Credential%253DAKIADQKE4SARGYLE%252F20161117%252Fus-west-2%252Frds%252Faws4_request %2526X-Amz-Date%253D20161117T215409Z %2526X-Amz-Expires%253D3600 %2526X-Amz-SignedHeaders%253Dcontent-type%253Bhost%253Buser-agent%253Bx-amz-content-sha256%253Bx-amz-date %2526X-Amz-Signature%253D255a0f17b4e717d3b67fad163c3ec26573b882c03a65523522cf890a67fca613 &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=&region-arn;rds:us-east-1:123456789012:db:mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<&AWS; Access Key ID> &Signature=<Signature>

Cómo realiza Amazon RDS la replicación entre regiones

Amazon RDS usa el siguiente proceso para crear una réplica de lectura entre regiones. En función de las Regiones de AWS implicadas y de la cantidad de datos de la base de datos, este proceso puede tardar horas en completarse. Puede usar esta información para determinar cuánto ha avanzado el proceso cuando cree una réplica de lectura entre regiones:

  1. Amazon RDS comienza a configurar la instancia de base de datos de origen como origen de la replicación y define el estado como modifying.

  2. Amazon RDS comienza a configurar la réplica de lectura especificada en la Región de AWS de destino y define el estado como creating.

  3. Amazon RDS crea una instantánea de base de datos automatizada de la instancia de base de datos de origen en la Región de AWS de origen. El formato del nombre de la instantánea de base de datos es rds:<InstanceID>-<timestamp>, donde <InstanceID> es el identificador de la instancia de origen y <timestamp> corresponde a la fecha y la hora en las que se inició la copia. Por ejemplo, rds:mysourceinstance-2013-11-14-09-24 se creó a partir de la instancia mysourceinstance en 2013-11-14-09-24. Durante la creación de una instantánea de base de datos automatizada, el estado de la instancia de base de datos de origen sigue siendo modifying (modificando), el estado de las réplicas de lectura sigue siendo creating (creando) y el estado de la instantánea de base de datos es creating (creando). La columna de progreso de la página de la instantánea de base de datos de la consola indica cuánto ha avanzado la creación de la instantánea de base de datos. Cuando la instantánea de base de datos se haya completado, el estado tanto de la instantánea de base de datos como de la instancia de base de datos de origen se definirá como available.

  4. Amazon RDS comienza una copia de la instantánea entre regiones para la transferencia de datos inicial. La copia de la instantánea aparece como instantánea automatizada en la Región de AWS de destino con el estado creating. Tiene el mismo nombre que la instantánea de base de datos de origen. La columna de progreso de la página de la instantánea de base de datos indica cuánto ha avanzado la copia. Cuando la copia se haya completado, el estado de la copia de la instantánea de base de datos se definirá como available.

  5. A continuación, Amazon RDS usa la instantánea de base de datos copiada para la carga de datos inicial en la réplica de lectura. Durante esta fase, la réplica de lectura está en la lista de instancias de base de datos del destino con el estado creating (creando). Cuando la carga se haya completado, el estado de la réplica de lectura se definirá como available (disponible) y se eliminará la copia de la instantánea de base de datos.

  6. Cuando la réplica de lectura llega al estado disponible, Amazon RDS comienza a replicar los cambios realizados en la instancia de origen desde el comienzo de la operación de creación de la réplica de lectura. Durante esta fase, el retraso de replicación para la réplica de lectura es mayor que 0.

    Para obtener información sobre el retardo de replicación, consulte Monitoreo de la replicación de lectura.

Consideraciones relativas a la replicación entre regiones

Todas las consideraciones relativas a la realización de la replicación dentro de una Región de AWS son válidas para la replicación entre regiones. Las siguientes consideraciones adicionales se deben tener en cuenta al replicar entre Regiones de AWS:

  • Una instancia de base de datos de origen puede tener réplicas de lectura entre regiones en en varias Regiones de AWS.

  • Puede replicar entre las regiones GovCloud (Este de EE. UU.) y GovCloud (Oeste de EE. UU.), pero no dentro o fuera de GovCloud (EE. UU.).

  • En el caso de las instancias de base de datos de Microsoft SQL Server, Oracle y PostgreSQL, solo puede crear una réplica de lectura de Amazon RDS entre regiones a partir de una instancia de base de datos de origen de Amazon RDS que no sea una réplica de lectura de otra instancia de base de datos de Amazon RDS. Esta limitación no se aplica a las instancias de base de datos de MariaDB y MySQL.

  • Puede esperar ver un nivel superior de retraso para cualquier réplica de lectura que esté en una Región de AWS diferente que la instancia de origen. Este retardo procede de los canales de red más largos entre los centros de datos regionales.

  • En las réplicas de lectura entre regiones, cualquiera de los comandos para crear réplicas de lectura que definan el parámetro --db-subnet-group-name debe especificar un grupo de subredes de base de datos de la misma VPC.

  • Debido al límite del número de entradas de la lista de control de acceso (ACL) de una VPC de origen, no podemos garantizar más de cinco instancias de réplica de lectura entre regiones.

  • En la mayoría de los casos, la réplica de lectura utiliza el grupo de parámetros de base de datos predeterminado y el grupo de opción de base de datos para el motor de base de datos especificado.

    Para los motores de base de datos MySQL y Oracle, puede especificar un grupo de parámetros personalizado para la réplica de lectura en la opción --db-parameter-group-name de la AWS CLI, comando create-db-instance-read-replica. No puede especificar un grupo de parámetros personalizado cuando utiliza la AWS Management Console.

  • La réplica de lectura utiliza el grupo de seguridad predeterminado.

  • Para las instancias de base de datos de MariaDB, Microsoft SQL Server, MySQL y Oracle, cuando se elimina la instancia de base de datos de origen para una réplica de lectura entre regiones, la réplica de lectura se promociona.

  • Para instancias de base de datos de PostgreSQL, cuando se elimina la instancia de base de datos de origen de una réplica de lectura entre regiones, el estado de la reproducción de la réplica de lectura se establece como terminated. Sin embargo, la réplica de lectura no se promociona.

    Debe promocionar la réplica de lectura de forma manual o eliminarla.

Solicitud de una réplica de lectura entre regiones

Para comunicarse con la región de origen y solicitar la creación de una réplica de lectura entre regiones, el solicitante (rol de IAM o usuario de IAM) debe tener acceso a la instancia de base de datos de origen y a la región de origen.

Ciertas condiciones en la política de IAM del solicitante pueden generar un error en la solicitud. En los siguientes ejemplos se supone que la instancia de base de datos de origen está en EE.UU. Este (Ohio) y que la réplica de lectura se crea en US East (N. Virginia). Estos ejemplos muestran condiciones en la política de IAM del solicitante que generan un error en la solicitud:

  • La política del solicitante tiene una condición para la aws:RequestedRegion.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "us-east-1" } }

    La solicitud falla porque la política no permite el acceso a la región de origen. Para que una solicitud sea correcta, se deben especificar las regiones de origen y destino.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } }
  • La política del solicitante no permite el acceso a la instancia de base de datos de origen.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "arn:aws:rds:us-east-1:123456789012:db:myreadreplica" ...

    Para que una solicitud sea correcta, se deben especificar la instancia de origen y la réplica.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": [ "arn:aws:rds:us-east-1:123456789012:db:myreadreplica", "arn:aws:rds:us-east-2:123456789012:db:mydbinstance" ] ...
  • La política del solicitante niega aws:ViaAWSService.

    ... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Bool": {"aws:ViaAWSService": "false"} }

    La comunicación con la región de origen la efectúa RDS en nombre del solicitante. Para que una solicitud sea correcta, no deniegue las llamadas realizadas por los servicios de AWS.

  • La política del solicitante tiene una condición para aws:SourceVpc o aws:SourceVpce.

    Estas solicitudes pueden fallar porque cuando RDS realiza la llamada a la región remota, esta no procede del punto de conexión de la VPC o la VPC especificada.

Si es necesario utilizar una de las condiciones anteriores que generarían un error en una solicitud, se puede incluir una segunda instrucción con aws:CalledVia en la política para que la solicitud se realice correctamente. Por ejemplo, se puede usar aws:CalledVia con aws:SourceVpce, como se muestra aquí:

... "Effect": "Allow", "Action": "rds:CreateDBInstanceReadReplica", "Resource": "*", "Condition": { "Condition" : { "ForAnyValue:StringEquals" : { "aws:SourceVpce": "vpce-1a2b3c4d" } } }, { "Effect": "Allow", "Action": [ "rds:CreateDBInstanceReadReplica" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "rds.amazonaws.com" ] } } }

Para obtener más información, consulte Políticas y permisos en IAM en la Guía del usuario de IAM.

Autorización de la réplica de lectura

Luego de que una solicitud de creación de réplica de lectura de base de datos en varias regiones devuelva success, RDS iniciará la creación de la réplica en segundo plano. Se crea una autorización para que RDS acceda a la instancia de base de datos de origen. Esta autorización vincula la instancia de base de datos de origen a la réplica de lectura y permite que RDS copie solo en la réplica de lectura especificada.

La autorización es verificada por RDS mediante el permiso rds:CrossRegionCommunication en el rol de IAM vinculado al servicio. Si la réplica es autorizada, RDS se comunica con la región de origen y completa la creación de la réplica.

RDS no tiene acceso a instancias de base de datos que no hayan sido autorizadas previamente por una solicitud CreateDBInstanceReadReplica. La autorización se revoca cuando se completa la creación de la réplica de lectura.

RDS utiliza el rol vinculado a servicios para verificar la autorización en la región de origen. Si se elimina el rol vinculado a servicios durante el proceso de creación de replicación, se produce un error en la creación.

Para obtener más información, consulte Usar roles vinculados a servicios en la Guía del usuario de IAM.

Uso de credenciales de AWS Security Token Service

Los tokens de sesión del punto de conexión global de AWS Security Token Service (AWS STS) son válidos únicamente en Regiones de AWS que están habilitadas de forma predeterminada (regiones comerciales). Si utiliza credenciales de la operación de la API assumeRole en AWS STS, utilice el punto de conexión regional si la región de origen es una región registrada. De lo contrario, la solicitud devuelve un error. Esto ocurre porque las credenciales deben ser válidas en ambas regiones, lo cual se cumple para las regiones registradas solo cuando se utiliza el punto de conexión regional de AWS STS.

Para utilizar el punto de conexión global, asegúrese de que está habilitado para operaciones en ambas regiones. Establezca el punto de conexión global en Valid in all Regiones de AWS en la configuración de la cuenta de AWS STS.

La misma regla se aplica a las credenciales del parámetro URL prefirmado.

Para obtener más información, consulte Administración de AWS STS en una Región de AWS en la guía del usuario de IAM.

Costos de la replicación entre regiones

Los datos transferidos para la replicación entre regiones incurren en cargos por transferencia de datos de Amazon RDS. Las siguientes acciones de replicación entre regiones generan cargos para los datos transferidos fuera de la Región de AWS de origen:

  • Cuando se crea una réplica de lectura, Amazon RDS realiza una instantánea de la instancia de origen y transfiere la instantánea a la Región de AWS de la réplica de lectura.

  • Para cada modificación de datos realizada en las bases de datos de origen, Amazon RDS transfiere los datos de la Región de AWS de origen a la Región de AWS de la réplica de lectura.

Para obtener más información acerca de los precios de las transferencias de datos, consulte Precios de Amazon RDS.

Para las instancias de MySQL y MariaDB, puede limitar los costos de transferencia de datos reduciendo el número de réplicas de lectura entre regiones que crea. Por ejemplo, imagine que tiene una instancia de base de datos de origen en una Región de AWS y que quiere tres réplicas de lectura en otra Región de AWS. En ese caso, cree solo una de las réplicas de lectura de la instancia de base de datos de origen. Cree las otras dos réplicas a partir de la primera réplica de lectura en lugar de la instancia de base de datos de origen.

Por ejemplo, si tiene source-instance-1 en una Región de AWS, puede hacer lo siguiente:

  • Cree read-replica-1 en la nueva Región de AWS especificando source-instance-1 como origen.

  • Cree read-replica-2 a partir de read-replica-1.

  • Cree read-replica-3 a partir de read-replica-1.

En este ejemplo, solo se le cobrará por los datos transferidos desde source-instance-1 a read-replica-1. No se le cobrará por los datos transferidos desde read-replica-1 a las otras dos réplicas porque todas están en la misma Región de AWS. Si crea las tres réplicas directamente desde source-instance-1, se le cobrará por las transferencias de datos a las tres réplicas.