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

Trabajo con réplicas de lectura

Amazon RDS usa la funcionalidad de replicación integrada de los motores de base de datos de MariaDB, MySQL, Oracle, PostgreSQL y Microsoft SQL Server para crear un tipo especial de instancia de base de datos, llamada réplica de lectura, a partir de una instancia de base de datos de origen. La instancia de base de datos de origen se convierte en la instancia de base de datos principal. Las actualizaciones realizadas en la instancia de base de datos principal se copian de forma asíncrona en la réplica de lectura. Puede reducir la carga de la instancia de la base de datos principal enrutando las consultas de lectura de sus aplicaciones a la réplica de lectura. Las réplicas de lectura le permiten ajustar la escala 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.

nota

La información siguiente permite crear réplicas de lectura de Amazon RDS en la misma región de AWS que la de la instancia de base de datos de origen o en una región de AWS diferente. Esta información no es válida para la configuración de la replicación con una instancia que se ejecute en una instancia Amazon EC2 o que esté instalada localmente.

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. Amazon RDS usa el método de replicació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 principal. La réplica de lectura funciona como una instancia de base de datos que permite únicamente conexiones de solo lectura. 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.

nota

El motor de base de datos Oracle 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 Oracle para Amazon RDS.

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 estos casos Amazon RDS configura un canal de comunicaciones seguro entre la instancia de base de datos principal y la réplica de lectura. Amazon RDS establece las configuraciones de seguridad de AWS necesarias para habilitar el canal seguro, por ejemplo agregar entradas de grupo de seguridad.

Las réplicas de lectura son compatibles con los motores de MariaDB, MySQL, Oracle, PostgreSQL y Microsoft SQL Server. En esta sección se ofrece información general sobre la utilización de las réplicas de lectura con todos estos motores. Para obtener información sobre la utilización de las réplicas de lectura con un motor específico, consulte las secciones siguientes:

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

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.

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
PIOPS 100 GiB–32 TiB PIOPS, GP2, Standard
GP2 100 GiB–32 TiB PIOPS, GP2, Standard
GP2 <100 GiB GP2, Standard
Standard 100 GiB–6 TiB PIOPS, GP2, Standard
Standard <100 GiB GP2, Standard

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 MyDBInstance se replica en ReadReplica1, no puede configurar ReadReplica1 para volverse a replicar en MyDBInstance. Para MariaDB y MySQL, puede crear una réplica de lectura a partir de una réplica de lectura existente. Por ejemplo, a partir de ReadReplica1, puede crear una nueva réplica de lectura, como ReadReplica2. En Oracle, PostgreSQL y SQL Server, no puede crear una réplica de lectura a partir de una existente.

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 del origen de una réplica de lectura entre regiones.

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

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?

MySQL y MariaDB de RDS conservan registros binarios que no se han aplicado.

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 for 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í. Puede habilitar copias de seguridad automáticas en una réplica de lectura de MySQL o MariaDB.

No. No puede crear instantáneas manuales de Amazon RDS para réplicas de lectura de Oracle ni habilitar copias de seguridad automáticas de ellas.

Sí, puede crear una instantánea manual de una réplica de lectura de PostgreSQL, pero no puede habilitar copias de seguridad automáticas.

No. No puede crear instantáneas manuales de Amazon RDS para réplicas de lectura de SQL Server ni habilitar copias de seguridad automáticas de ellas.

¿Se puede usar la replicación paralela?

Sí. MySQL versión 5.6 y posterior y todas las versiones de MariaDB 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 Oracle para Amazon RDS.

No.

No.

Creación de una réplica de lectura

Puede crear una réplica de lectura a partir de una instancia de base de datos de MySQL, MariaDB, Oracle, PostgreSQL o SQL Server que ya exista usando la Consola de administración de AWS, la 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. 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 instancias de base de datos de MySQL, las copias de seguridad automáticas solo se admiten para réplicas de lectura que ejecutan MySQL 5.6 y posteriores, pero no para MySQL versión 5.5. Para habilitar las copias de seguridad automáticas en una réplica de lectura para MySQL versión 5.6 y posteriores de Amazon RDS, 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 que cree todas las réplicas de lectura en la misma nube virtual privada (VPC) basada 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 puede crear una réplica de lectura en una cuenta de AWS diferente de la instancia de base de datos de origen.

Para crear una réplica de lectura a partir de una instancia de base de datos de MySQL, MariaDB, Oracle, PostgreSQL o SQL Server de origen

  1. Inicie sesión en la Consola de administración de AWS 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 MySQL, MariaDB, Oracle, PostgreSQL o SQL Server que desea 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 las especificaciones de su instancia. Es recomendable usar la misma clase de instancia de base de datos y el mismo tipo de almacenamiento que la instancia de base de datos de origen para la réplica de lectura.

  7. Para Multi-AZ deployment, elija Yes para 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.

  8. Para crear una réplica de lectura cifrada:

    1. Elija Enable encryption (Habilitar cifrado).

    2. En Master key (Clave maestra), elija el identificador de clave AWS Key Management Service (AWS KMS) de la clave maestra del cliente (CMK).

    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.

  9. Elija los demás ajustes que desee usar.

  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, MariaDB, Oracle, PostgreSQL o SQL Server de origen, use el comando create-db-instance-read-replica de la AWS CLI.

ejemplo

Para Linux, macOS o Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance

Para crear una réplica de lectura a partir de una instancia de base de datos de MySQL, MariaDB, Oracle, PostgreSQL o SQL Server de origen, llame a la función CreateDBInstanceReadReplica de la API de Amazon RDS.

https://rds.amazonaws.com/ ?Action=CreateDBInstanceReadReplica &DBInstanceIdentifier=myreadreplica &SourceDBInstanceIdentifier=mydbinstance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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

Puede promocionar una réplica de lectura de MySQL, MariaDB, Oracle, PostgreSQL o SQL Server para convertirla en una instancia de base de datos independiente. Cuando se promociona una réplica de lectura, la instancia de base de datos se reinicia antes de que esté disponible.

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

  • 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.

  • 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.

  • 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.

Al promocionar una réplica de lectura, la nueva instancia de base de datos que se crea conserva el periodo de retención de copia de seguridad, la ventana de copia de seguridad, el grupo de opciones y el grupo de parámetros del antiguo origen de réplica de lectura. Este proceso de promoción puede tardar unos minutos o más, según el tamaño de la réplica de lectura. Una vez que haya promocionada la réplica de lectura a una nueva instancia de base de datos, será como cualquier otra instancia de base de datos. Por ejemplo, podrá crear réplicas de lectura a partir de la nueva instancia de base de datos y realizar operaciones de restauración a un momento dado. Como la instancia de base de datos promocionada ya no es una réplica de lectura, no puede usarla como destino de la replicación. 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.

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 tiene previsto promocionar una réplica de lectura a una instancia autónoma, le recomendamos que habilite las copias de seguridad y complete al menos una copia de seguridad antes de la promoción. Además, no puede promocionar una réplica de lectura a una instancia independiente cuando tiene el estado backing-up. 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.

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

  1. Detenga la escritura de transacciones en la instancia de base de datos principal y, a continuación, espere hasta que se hayan 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 completarse en la instancia de base de datos principal, y el retraso de esta replicación 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.

  2. Solo para MySQL y MariaDB: si tiene que hacer cambios en la réplica de lectura de MySQL o MariaDB, debe definir el parámetro read_only como 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.

  3. Promocione la réplica de lectura usando la opción Promote Read Replica (Promocionar réplica de lectura)de la consola de Amazon RDS, el comando promote-read-replica de la AWS CLI 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, la replicación se detiene y la réplica de lectura se reinicia. Una vez completado el reinicio, la réplica de lectura pasa a estar disponible como nueva instancia de base de datos.

  4. (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 Alta disponibilidad (Multi-AZ) para Amazon RDS.

Para promocionar una réplica de lectura a instancia de base de datos

  1. Inicie sesión en la Consola de administración de AWS 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 promocionar una réplica de lectura a instancia de base de datos, use el comando promote-read-replica de la AWS CLI.

ejemplo

Para Linux, macOS o Unix:

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

Para Windows:

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

Para promocionar una réplica de lectura a instancia de base de datos, llame a PromoteReadReplica.

https://rds.amazonaws.com/ ?Action=PromoteReadReplica &DBInstanceIdentifier=myreadreplica &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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 de MariaDB, MySQL, Oracle o PostgreSQL en una región de AWS distinta que la de la instancia de base de datos de origen. Crear una réplica de lectura entre regiones no es compatible con SQL Server en Amazon RDS.

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 Consola de administración de AWS, ejecutar el comando create-db-instance-read-replica o llamar a la operación de la API CreateDBInstanceReadReplica.

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.

Las réplicas de lectura entre regiones no se admiten en las siguientes regiones de AWS registradas:

  • África (Ciudad del Cabo)

  • Asia Pacífico (Hong Kong)

  • Europa (Milán)

  • Medio Oriente (Baréin)

Los siguientes procedimientos muestran cómo crear una réplica de lectura a partir de una instancia de base de datos de MariaDB, 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 Consola de administración de AWS.

Para crear una réplica de lectura entre regiones de AWS con la consola

  1. Inicie sesión en la Consola de administración de AWS 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, MySQL, Oracle o PostgreSQL que desea 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. Es recomendable usar la misma clase de instancia de base de datos y el mismo tipo de almacenamiento para la réplica de lectura.

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

    1. Elija Enable encryption (Habilitar cifrado).

    2. En Master key (Clave maestra), elija un identificador de clave de AWS Key Management Service (AWS KMS) de la clave maestra de cliente (CMK) de 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 los demás ajustes que desee usar.

  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, 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 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:my-mysql-instance

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 create-db-instance-read-replica de la AWS CLI desde la región de AWS de destino. Los siguientes parámetros se usan para crear una réplica de lectura cifrada en otra región de AWS:

  • --source-region: la región de AWS en la que se crea la réplica de lectura cifrada. Si source-region no se ha definido, debe especificar un valor de pre-signed-url. Una pre-signed-url es una URL que contiene una solicitud firmada de Signature Version 4 para la operación CreateDBInstanceReadReplica a la que se llama en la región de AWS de origen desde la que se crea la réplica de lectura. Para obtener más información acerca de la pre-signed-url, consulte CreateDBInstanceReadReplica.

  • --source-db-instance-identifier: el identificador de instancias de bases de datos de la réplica de lectura cifrada que se crea. Este identificador debe estar en el formato del ARN para la región de AWS de origen. La región de AWS especificada en source-db-instance-identifier debe coincidir con la región de AWS especificada como source-region.

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

  • --kms-key-id: identificador de AWS KMS de la clave maestra de cliente (CMK) que se va a usar para cifrar la réplica de lectura en la región de AWS de destino.

El siguiente código crea una réplica de lectura en la región us-west-2.

ejemplo

Para Linux, macOS o Unix:

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

Para Windows:

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

El siguiente código crea una réplica de lectura en una región de AWS distinta de la de la instancia de base de datos de origen. La región de AWS desde la que se llama al comando create-db-instance-read-replica es la región de AWS de destino de la réplica de lectura cifrada.

ejemplo

Para Linux, macOS o Unix:

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

Para Windows:

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

Para crear una réplica de lectura a partir de una instancia de base de datos de MySQL, MariaDB, Oracle o PostgreSQL de origen en una región de AWS diferente, puede llamar a la función CreateDBInstanceReadReplica de la API de Amazon RDS. En este caso, debe llamar a CreateDBInstanceReadReplica desde la región de AWS en la que desee situar la réplica de lectura 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 distinta de la instancia de base de datos de origen, puede usar la operación CreateDBInstanceReadReplica de la API de Amazon RDS 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:my-mysql-instance

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%253D CreateDBInstanceReadReplica %2526DestinationRegion%253Dus-east-1 %2526KmsKeyId%253Dmy-us-east-1-key %2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%1234567890 12%25253Adb%25253Amy-mysql-instance %2526SignatureMethod%253DHmacSHA256 %2526SignatureVersion%253D4%2526SourceDBInstanceIdentifier%253Darn%25253Aaws%25253Ards%25253Aus-west-2%25253A123456789012%25253Ainstance%25253Amysql-instance1-instance-20161115 %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=arn:aws:rds:us-east-1:123456789012:db:my-mysql-instance &Version=2012-01-15 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2012-01-20T22%3A06%3A23.624Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

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:

  • Solo puede hacer replicar entre regiones de AWS al utilizar las siguientes instancias de base de datos de Amazon RDS:

    • MariaDB (todas las versiones).

    • Versión 5.6 de MySQL o posteriores.

    • Motor Oracle Enterprise Edition (EE) en la versión 12.1.0.2.v10 y versiones 12.1 posteriores, todas las versiones de 12.2 y todas las versiones de 18.0.

      Es necesario tener una licencia de Active Data Guard. Para obtener información sobre las limitaciones de las réplicas de lectura entre regiones de Oracle, consulte Requisitos de réplica para Oracle.

    • PostgreSQL (todas las versiones).

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

  • 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.

  • No puede configurar un canal de replicación de entrada o salida para la región AWS GovCloud (US-West).

  • 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.

  • Puede crear una réplica de lectura entre regiones:

    • En una VPC de una instancia de base de datos de origen que se encuentra en una VPC en otra región de AWS

    • En una VPC de una instancia de base de datos de origen que no está en una VPC

    • Eso no está en una VPC de una instancia de base de datos de origen que está en una VPC

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

  • La réplica de lectura utiliza el grupo de parámetros de base de datos predeterminado para el motor de base de datos especificado.

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

  • Para las instancias de base de datos de MariaDB, MySQL y Oracle, cuando se elimina el origen de 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 el origen de una réplica de lectura entre regiones, el estado de la replicación de la réplica de lectura se establece como terminated. Sin embargo, la réplica de lectura no se promociona.

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.

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. Dependiendo 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 (creando).

  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.

Ejemplos de replicación entre regiones

ejemplo Creación de una réplica de lectura entre regiones fuera de cualquier VPC

El siguiente ejemplo crea una réplica de lectura en la región us-west-2 a partir de una instancia de base de datos de origen de la región us-east-1. La réplica de lectura se crea fuera de una VPC:

Para Linux, macOS o Unix:

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

Para Windows:

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

ejemplo Creación de una réplica de lectura entre regiones en una VPC

Este ejemplo crea una réplica de lectura en la región us-west-2 a partir de una instancia de base de datos de origen de la región us-east-1. La réplica de lectura se crea en la VPC asociada con el grupo de subredes de base de datos especificado:

Para Linux, macOS o Unix:

aws rds create-db-instance-read-replica \ --db-instance-identifier SimCoProd01Replica01 \ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

Para Windows:

aws rds create-db-instance-read-replica ^ --db-instance-identifier SimCoProd01Replica01 ^ --region us-west-2 --db-subnet-group-name my-us-west-2-subnet --source-db-instance-identifier arn:aws:rds:us-east-1:123456789012:db:SimcoProd01

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 Availability and durability (Disponibilidad y durabilidad) de 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 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.

  • replication degraded (replicación degradada) (solo SQL Server): 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.

    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 replicación entre la instancia de base de datos principal y todas las réplicas de lectura. Amazon RDS hace esto con el fin de impedir que aumenten los requisitos de almacenamiento en la instancia de base de datos de origen y que se alarguen 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.

  • 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.

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 MySQL y MariaDB, la métrica ReplicaLag indica el valor del campo Seconds_Behind_Master del comando SHOW SLAVE 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.

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 ag.name name, MAX(hdrs.secondary_lag_seconds) max_lag from sys.dm_hadr_database_replica_state

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 slave_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 Monitorización con Amazon CloudWatch.