Creación de un grupo de disponibilidad Always On con PowerShell

Se aplica a:SQL Server

En este tema se describe cómo usar los cmdlets de PowerShell para crear y configurar un grupo de disponibilidad de AlwaysOn con PowerShell en SQL Server. Un grupo de disponibilidad define un conjunto de bases de datos de usuario que realizarán la conmutación por error como una sola unidad y un conjunto de asociados de conmutación por error, conocido como réplicas de disponibilidad, que admiten la conmutación por error.

Nota

Para ver una introducción a los grupos de disponibilidad, consulte Introducción a los grupos de disponibilidad AlwaysOn (SQL Server).

Nota

Como alternativa al uso de cmdlets de PowerShell, puede usar el asistente Crear grupo de disponibilidad o Transact-SQL. Para obtener más información, vea Usar el cuadro de diálogo Nuevo grupo de disponibilidad (SQL Server Management Studio) o Crear un grupo de disponibilidad (Transact-SQL).

Antes de empezar

Requisitos previos, restricciones y recomendaciones

  • Antes de crear un grupo de disponibilidad, compruebe que cada una de las instancias host de SQL Server reside en un nodo de clúster de conmutación por error de Windows Server (WSFC) diferente en el mismo clúster de conmutación por error de WSFC. Además, compruebe que las instancias del servidor cumplen con los otros requisitos previos de la instancia del servidor, que se cumplen todos los demás requisitos de Grupos de disponibilidad AlwaysOn y que es consciente de las recomendaciones. Para más información, recomendamos encarecidamente que lea Requisitos previos, restricciones y recomendaciones para grupos de disponibilidad AlwaysOn (SQL Server).

Permisos

Se requiere la pertenencia al rol fijo de servidor sysadmin y el permiso de servidor CREATE AVAILABILITY GROUP, el permiso ALTER ANY AVAILABILITY GROUP o el permiso CONTROL SERVER.

Usar PowerShell para crear y configurar un grupo de disponibilidad

En la siguiente tabla se enumeran las tareas básicas relacionadas con la configuración de un grupo de disponibilidad y se indican las que son compatibles con cmdlets de PowerShell. Las tareas de Grupos de disponibilidad AlwaysOn se deben realizar en la secuencia en que se muestran en la tabla.

Tarea Cmdlets de PowerShell (si hay disponibles) o instrucción Transact-SQL Dónde realizar la tarea
Crear extremo de creación de reflejo de la base de datos (una vez por instancia de SQL Server ) New-SqlHadrEndPoint Se ejecuta en cada instancia del servidor que carece de extremo de creación de reflejo de la base de datos.

Para modificar un punto de conexión de creación de reflejo de la base de datos existente, use Set-SqlHadrEndpoint.
Crear grupo de disponibilidad Primero, use el cmdlet New-SqlAvailabilityReplica con el parámetro -AsTemplate para crear un objeto de réplica de disponibilidad en memoria para cada una de las dos réplicas de disponibilidad que va a incluir en el grupo de disponibilidad.

Después, cree el grupo de disponibilidad usando el cmdlet New-SqlAvailabilityGroup y haga referencia a los objetos de réplica de disponibilidad.
Se ejecuta en la instancia del servidor que va a hospedar la réplica principal inicial.
Unir la réplica secundaria al grupo de disponibilidad Join-SqlAvailabilityGroup Se ejecuta en cada una de las instancias del servidor que hospeda una réplica secundaria.
Preparar la base de datos secundaria Backup-SqlDatabase y Restore-SqlDatabase Se crean las copias de seguridad de la instancia del servidor que hospeda la réplica principal.

Se restauran las copias de seguridad de cada una de las instancias del servidor que hospedan una réplica de secundaria mediante el parámetro de restauración NoRecovery . Si las rutas de acceso de archivo difieren entre equipos que hospedan la réplica principal y la réplica secundaria de destino, utilice también el parámetro de restauración RelocateFile .
Iniciar la sincronización de datos uniendo cada base de datos secundaria al grupo de disponibilidad Add-SqlAvailabilityDatabase Se ejecuta en cada una de las instancias del servidor que hospedan una réplica secundaria.

Nota

Para realizar las tareas especificadas, cambie el directorio (cd) a la instancia o instancias del servidor indicadas.

Usar PowerShell

Configure y use el Proveedor de SQL Server PowerShell.

Nota

Para ver la sintaxis y un ejemplo de un cmdlet dado, use el cmdlet Get-Help en el entorno de SQL Server PowerShell. Para más información, consulte Get Help SQL Server PowerShell.

  1. Cambie el directorio (cd) a la instancia de servidor que va a hospedar la réplica principal.

  2. Cree un objeto de réplica de disponibilidad en memoria para la réplica principal.

  3. Cree un objeto de réplica de disponibilidad en memoria para cada réplica secundaria.

  4. Cree el grupo de disponibilidad.

    Nota

    La longitud máxima del nombre de un grupo de disponibilidad es 128 caracteres.

  5. Combine la nueva réplica secundaria con el grupo de disponibilidad. Vea Combinar una réplica secundaria con un grupo de disponibilidad (SQL Server).

  6. Para cada base de datos del grupo de disponibilidad, cree una base de datos secundaria restaurando las copias de seguridad recientes de la base de datos principal, utilizando RESTORE WITH NORECOVERY.

  7. Combine todas las bases de datos secundarias nuevas con el grupo de disponibilidad. Vea Combinar una réplica secundaria con un grupo de disponibilidad (SQL Server).

  8. Opcionalmente, use el comando dir de Windows para comprobar el contenido del nuevo grupo de disponibilidad.

Nota

Si las cuentas de servicio de las instancias del servidor de SQL Server se ejecutan en usuarios de dominio diferentes, cree en cada instancia del servidor un inicio de sesión para la otra instancia del servidor y conceda el permiso CONNECT de inicio de sesión para tener acceso al extremo de creación de reflejo de la base de datos local.

Ejemplo

En el siguiente ejemplo de PowerShell se crea y configura un grupo de disponibilidad simple denominado <myAvailabilityGroup> con dos réplicas de disponibilidad y una base de datos de disponibilidad. El ejemplo:

  1. Hace una copia de seguridad de <myDatabase> y su registro de transacciones.

  2. Restaura <myDatabase> y su registro de transacciones, con la opción -NoRecovery .

  3. Crea una representación de memoria de la réplica principal, que se hospedará en la instancia local de SQL Server (denominada PrimaryComputer\Instance).

  4. Crea una representación de memoria de la réplica secundaria, que se hospedará en una instancia de SQL Server (denominada SecondaryComputer\Instance).

  5. Crea un grupo de disponibilidad denominado <myAvailabilityGroup>.

  6. Combina la réplica secundaria con el grupo de disponibilidad.

  7. Combina la base de datos secundaria con el grupo de disponibilidad.

# Backup my database and its log on the primary  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "PrimaryComputer\Instance"  
  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "PrimaryComputer\Instance" `  
    -BackupAction Log   
  
# Restore the database and log on the secondary (using NO RECOVERY)  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -NoRecovery  
  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -RestoreAction Log `  
    -NoRecovery  
  
# Create an in-memory representation of the primary replica.  
$primaryReplica = New-SqlAvailabilityReplica `  
    -Name "PrimaryComputer\Instance" `  
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create an in-memory representation of the secondary replica.  
$secondaryReplica = New-SqlAvailabilityReplica `  
    -Name "SecondaryComputer\Instance" `  
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create the availability group  
New-SqlAvailabilityGroup `  
    -Name "<myAvailabilityGroup>" `  
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `  
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `  
    -Database "<myDatabase>"  
  
# Join the secondary replica to the availability group.  
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "<myAvailabilityGroup>"  
  
# Join the secondary database to the availability group.  
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\<myAvailabilityGroup>" -Database "<myDatabase>"  

Related Tasks

Para configurar una instancia del servidor para grupos de disponibilidad AlwaysOn

Para configurar el grupo de disponibilidad y las propiedades de réplica

Para completar la configuración del grupo de disponibilidad

Maneras alternativas de crear un grupo de disponibilidad

Para solucionar problemas de configuración de grupos de disponibilidad AlwaysOn

Contenido relacionado

Consulte también

El extremo de creación de reflejo de la base de datos (SQL Server)
Información general de los grupos de disponibilidad AlwaysOn (SQL Server)