Uso de réplicas de lectura para Microsoft SQL Server en Amazon RDS - Amazon Relational Database Service

Uso de réplicas de lectura para Microsoft SQL Server en Amazon RDS

Normalmente se utilizan réplicas de lectura para configurar la replicación entre instancias de base de datos de Amazon RDS. Para obtener información general acerca de las réplicas de lectura, consulte Trabajo con réplicas de lectura de instancias de base de datos.

Esta sección contiene información específica acerca de cómo utilizar las réplicas de lectura en Amazon RDS for SQL Server.

Configuración de réplicas de lectura para SQL Server

Para que una instancia de base de datos pueda servir como instancia de origen para la replicación, debe habilitar las copias de seguridad automáticas en la instancia de base de datos de origen. Para ello, debe establecer el periodo de retención de copia de seguridad en un valor distinto de 0. Al establecer este tipo de implementación también se exige que estén habilitadas las copias de seguridad automáticas.

Para crear una réplica de lectura de SQL Server no se requiere una interrupción de la instancia de base de datos primaria. Amazon RDS establece los parámetros y permisos necesarios para la instancia de base de datos de origen y la réplica de lectura sin interrupción del servicio. Se toma una instantánea de la instancia de base de datos de origen, y esta instantánea se convierte en la réplica de lectura. No se produce ninguna interrupción cuando se elimina una réplica de lectura.

Puede crear hasta 15 réplicas de lectura a partir de una instancia de base de datos de origen. Para que la replicación resulte eficaz, recomendamos que configure cada réplica de lectura con la misma cantidad de recursos de computación y de almacenamiento que la instancia de base de datos de origen. Si modifica la escala de la instancia de base de datos de origen, debe ajustar también la escala de las réplicas de lectura.

La versión del motor de base de datos de SQL Server de la instancia de base de datos de origen y todas sus réplicas de lectura deben ser iguales. Amazon RDS actualiza la primaria inmediatamente después de actualizar las réplicas de lectura, independientemente del periodo de mantenimiento. Para obtener más información acerca de cómo actualizar la versión del motor de base de datos, consulte Actualización del motor de base de datos Microsoft SQL Server.

Para que una réplica de lectura reciba y aplique los cambios desde el origen, debe tener suficientes recursos de almacenamiento e informáticos. Si una réplica de lectura llega a su capacidad en materia de recursos de almacenamiento, de red o informáticos, dejará de recibir o aplicar los cambios desde su origen. Puede modificar los recursos de CPU y almacenamiento de una réplica de lectura independientemente de su origen y otras réplicas de lectura.

Limitaciones de las réplicas de lectura con SQL Server

Se aplican las siguientes limitaciones a las réplicas de lectura de SQL Server en Amazon RDS:

  • Las réplicas de lectura solo están disponibles en el motor de SQL Server Enterprise Edition (EE).

  • Las réplicas de lectura están disponibles para las versiones 2016–2022 de SQL Server.

  • Puede crear hasta 15 réplicas de lectura a partir de una instancia de base de datos de origen. La replicación puede retrasarse si la instancia de base de datos de origen tiene más de 5 réplicas de lectura.

  • Además, solo están disponibles para las instancias de base de datos que se ejecutan en clases de instancia de base de datos con cuatro o más vCPU.

  • Una réplica de lectura admite hasta 100 bases de datos, según el tipo de clase de instancia y el modo de disponibilidad. Debe crear bases de datos en la instancia de base de datos de origen para replicarlas automáticamente en las réplicas de lectura. No puede elegir bases de datos individuales para replicar. Para obtener más información, consulte Limitaciones para instancias de base de datos de Microsoft SQL Server.

  • No se puede eliminar una base de datos de una réplica de lectura. Para eliminar una base de datos, elimínela de la instancia de base de datos de origen con el procedimiento almacenado rds_drop_database. Para obtener más información, consulte Eliminación con drop de una base de datos de Microsoft SQL Server.

  • Si la instancia de base de datos de origen utiliza Cifrado de datos transparente (TDE) para cifrar los datos, la réplica de lectura también configura el TDE de forma automática.

    Si la instancia de base de datos de origen utiliza una clave KMS para cifrar los datos, las réplicas de lectura de la misma región utilizan la misma clave KMS. Para las réplicas de lectura entre regiones, debe especificar una clave KMS de la región de la réplica de lectura al crear la réplica de lectura. No puede cambiar la clave KMS de una réplica de lectura.

  • Las réplicas de lectura tienen la misma zona horaria y la misma intercalación que la instancia de base de datos de origen, independientemente de la zona de disponibilidad en la que se hayan creado.

  • Además, solo están disponibles para las instancias de base de datos que se ejecutan en clases de instancia de base de datos con cuatro o más vCPU.

  • Lo siguiente no es compatible con Amazon RDS for SQL Server:

    • Retención de copias de seguridad de réplicas de lectura

    • Recuperación a un momento dado de réplicas de lectura

    • Instantáneas manuales de réplicas de lectura

    • Réplicas de lectura Multi-AZ

    • Creación de réplicas de lectura a partir de otras réplicas de lectura

    • Sincronización de inicios de sesión de usuario para leer réplicas

  • Amazon RDS for SQL Server no interviene para mitigar el retraso de réplica elevado entre una instancia de base de datos de origen y sus réplicas de lectura. Asegúrese de que la instancia de base de datos de origen y sus réplicas de lectura tienen el tamaño adecuado, en términos de potencia informática y almacenamiento, para adaptarse a su carga operativa.

  • Puede reproducir entre las regiones AWS GovCloud (EE. UU. Este) y AWS GovCloud (US-West), pero no dentro ni fuera de AWS GovCloud (US) Regions.

Consideraciones relativas a opciones para réplicas de RDS para SQL Server

Antes de crear una réplica de RDS para SQL Server, tenga en cuenta los siguientes requisitos, restricciones y recomendaciones:

  • Si la réplica de SQL Server se encuentra en la misma región que su instancia de base de datos de origen, asegúrese de que pertenezca al mismo grupo de opciones que la instancia de base de datos de origen. Las modificaciones en el grupo de opciones de origen o en la suscripción a grupos de opciones de origen se propagan a las réplicas. Estos cambios se aplican a las réplicas inmediatamente después de su aplicación a la instancia de base de datos de origen, con independencia del periodo de mantenimiento de la réplica.

    Para obtener más información acerca de los grupos de opciones, consulte Trabajo con grupos de opciones.

  • Cuando crea una réplica entre regiones de SQL Server, Amazon RDS crea un grupo de opciones dedicado para ella.

    No puede eliminar una réplica entre regiones de SQL Server desde su grupo de opciones dedicado. Ninguna otra instancia de base de datos puede utilizar el grupo de opciones dedicado para una réplica entre regiones de SQL Server.

    Las siguientes opciones son opciones replicadas. Para agregar otras opciones a una réplica de lectura entre regiones de Oracle, agréguelas al grupo de opciones de la instancia de base de datos de origen. La opción también está instalada en todas las réplicas de la instancia de base de datos de origen.

    • TDE

    Las siguientes opciones son opciones no replicadas. Solo puede agregar o quitar opciones no replicadas de un grupo de opciones dedicado.

    • MSDTC

    • SQLSERVER_AUDIT

    • Para habilitar la opción SQLSERVER_AUDIT en la réplica de lectura entre regiones, añada la opción SQLSERVER_AUDIT al grupo de opciones dedicado de la réplica de lectura entre regiones y al grupo de opciones de la instancia de origen. Al agregar la opción SQLSERVER_AUDIT a la instancia de origen de la réplica de lectura entre regiones de SQL Server, puede crear un objeto de auditoría de nivel de servidor y especificaciones de auditoría de nivel de servidor en cada una de las réplicas de lectura entre regiones de la instancia de origen. Para permitir el acceso a las réplicas de lectura entre regiones para cargar los registros de auditoría completos en un bucket de Amazon S3, añada la opción SQLSERVER_AUDIT al grupo de opciones dedicado y configure los ajustes de las opciones. El bucket de Amazon S3 que usa como destino para los archivos de auditoría debe estar en la misma región que la réplica de lectura entre regiones. Puede modificar la configuración de la opción SQLSERVER_AUDIT para cada réplica de lectura entre regiones de forma independiente de manera que cada una pueda acceder a un bucket de Amazon S3 en su región respectiva.

    Las siguientes opciones no son compatibles con réplicas de lectura entre regiones.

    • SSRS

    • SSAS

    • SSIS

    Las siguientes opciones no compatibles parcialmente con réplicas de lectura entre regiones.

    • SQLSERVER_BACKUP_RESTORE

    • La instancia de base de datos de origen de una réplica entre regiones de SQL Server puede tener la opción SQLSERVER_BACKUP_RESTORE, pero no podrá realizar restauraciones nativas en la instancia de base de datos de origen hasta que elimine todas sus réplicas entre regiones. Todas las tareas de restauración nativas existentes se cancelarán durante la creación de una réplica entre regiones. No puedes añadir la opción SQLSERVER_BACKUP_RESTORE a un grupo de opciones dedicado.

      Para obtener más información acerca de la copia de seguridad y la restauración nativas, consulte Importación y exportación de bases de datos de SQL Server por copias de seguridad y restauración nativas.

    Al promocionar una réplica de lectura entre regiones de SQL Server, la réplica de lectura promocionada se comporta igual que las otras instancias de base de datos de SQL Server, incluida la administración de sus opciones. Para obtener más información sobre los grupos de opciones, consulte Trabajo con grupos de opciones.

Sincronización de los usuarios y objetos de la base de datos con una réplica de lectura de SQL Server

Se espera que todos los inicios de sesión, los roles de servidor personalizados, las tareas del agente SQL u otros objetos de nivel de servidor que existan en la instancia de base de datos principal en el momento de crear una réplica de lectura estén presentes en la réplica de lectura recién creada. Sin embargo, los objetos de nivel de servidor que se creen en la instancia de base de datos principal tras la creación de la réplica de lectura no se replicarán automáticamente y deberá crearlos manualmente en la réplica de lectura.

Los usuarios de la base de datos se replican automáticamente de la instancia de base de datos principal a la réplica de lectura. Como la base de datos de réplica de lectura está en modo de solo lectura, el identificador de seguridad (SID) del usuario de la base de datos no se puede actualizar en la base de datos. Por lo tanto, al crear inicios de sesión de SQL en la réplica de lectura, es fundamental asegurarse de que el SID de ese inicio de sesión coincida con el SID del inicio de sesión de SQL correspondiente en la instancia de base de datos principal. Si no sincroniza los SID de los inicios de sesión de SQL, no podrán acceder a la base de datos en la réplica de lectura. Los inicios de sesión autenticados de Windows Active Directory (AD) no presentan este problema porque el SQL Server obtiene el SID de Active Directory.

Sincronización de un inicio de sesión de SQL de la instancia de base de datos principal con la réplica de lectura
  1. Conéctese a la instancia de base de datos principal.

  2. Cree un nuevo inicio de sesión de SQL en la instancia de base de datos principal.

    USE [master] GO CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD';
    nota

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

  3. Cree un nuevo usuario de base de datos para el inicio de sesión de SQL en la base de datos.

    USE [REPLACE WITH YOUR DB NAME] GO CREATE USER TestLogin1 FOR LOGIN TestLogin1; GO
  4. Compruebe el SID del inicio de sesión de SQL que se acaba de crear en la instancia de base de datos principal.

    SELECT name, sid FROM sys.server_principals WHERE name = TestLogin1;
  5. Conéctese a la réplica de lectura. Cree el nuevo inicio de sesión de SQL.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #4];
Como alternativa, si tiene acceso a la base de datos de réplica de lectura, puede corregir el usuario huérfano de la siguiente manera:
  1. Conéctese a la réplica de lectura.

  2. Identifique los usuarios huérfanos de la base de datos.

    USE [REPLACE WITH YOUR DB NAME] GO EXEC sp_change_users_login 'Report'; GO
  3. Cree un nuevo inicio de sesión de SQL para el usuario huérfano de la base de datos.

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'REPLACE WITH PASSWORD', SID=[REPLACE WITH sid FROM STEP #2];

    Ejemplo:

    CREATE LOGIN TestLogin1 WITH PASSWORD = 'TestPa$$word#1', SID=[0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P];
    nota

    Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

Solución de problemas de réplicas de lectura de SQL Server

Puede monitorizar el retardo de replicación en Amazon CloudWatch mediante la visualización de la métrica ReplicaLag de Amazon RDS. Para obtener información sobre el retardo de replicación, consulte Monitoreo de la replicación de lectura.

Si el retraso de replicación es demasiado largo, puede usar la siguiente consulta para obtener información acerca de este.

SELECT AR.replica_server_name , DB_NAME (ARS.database_id) 'database_name' , AR.availability_mode_desc , ARS.synchronization_health_desc , ARS.last_hardened_lsn , ARS.last_redone_lsn , ARS.secondary_lag_seconds FROM sys.dm_hadr_database_replica_states ARS INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id --WHERE DB_NAME(ARS.database_id) = 'database_name' ORDER BY AR.replica_server_name;