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.
Cambie el directorio (cd) a la instancia de servidor que va a hospedar la réplica principal.
Cree un objeto de réplica de disponibilidad en memoria para la réplica principal.
Cree un objeto de réplica de disponibilidad en memoria para cada réplica secundaria.
Cree el grupo de disponibilidad.
Nota
La longitud máxima del nombre de un grupo de disponibilidad es 128 caracteres.
Combine la nueva réplica secundaria con el grupo de disponibilidad. Vea Combinar una réplica secundaria con un grupo de disponibilidad (SQL Server).
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.
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).
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:
Hace una copia de seguridad de
<myDatabase>
y su registro de transacciones.Restaura
<myDatabase>
y su registro de transacciones, con la opción -NoRecovery .Crea una representación de memoria de la réplica principal, que se hospedará en la instancia local de SQL Server (denominada
PrimaryComputer\Instance
).Crea una representación de memoria de la réplica secundaria, que se hospedará en una instancia de SQL Server (denominada
SecondaryComputer\Instance
).Crea un grupo de disponibilidad denominado
<myAvailabilityGroup>
.Combina la réplica secundaria con el grupo de disponibilidad.
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
Cambiar el modo de disponibilidad de una réplica de disponibilidad (SQL Server)
Cambiar el modo de conmutación por error de una réplica de disponibilidad (SQL Server)
Configuración de un agente de escucha para un grupo de disponibilidad Always On (SQL Server)
Configurar la copia de seguridad en réplicas de disponibilidad (SQL Server)
Configurar el acceso de solo lectura en una réplica de disponibilidad (SQL Server)
Cambiar el tiempo de espera de la sesión en una réplica de disponibilidad (SQL Server)
Para completar la configuración del grupo de disponibilidad
Combinar una réplica secundaria con un grupo de disponibilidad (SQL Server)
Preparar manualmente una base de datos secundaria para un grupo de disponibilidad (SQL Server)
Combinar una base de datos secundaria con un grupo de disponibilidad (SQL Server)
Configuración de un agente de escucha para un grupo de disponibilidad Always On (SQL Server)
Maneras alternativas de crear un grupo de disponibilidad
Usar el Asistente para grupo de disponibilidad (SQL Server Management Studio)
Usar el cuadro de diálogo Nuevo grupo de disponibilidad (SQL Server Management Studio)
Para solucionar problemas de configuración de grupos de disponibilidad AlwaysOn
Contenido relacionado
Blogs:
Configurar AlwaysOn con SQL Server PowerShell
Blogs del equipo de AlwaysOn de SQL Server: blog oficial del equipo de AlwaysOn de SQL Server
Notas del producto:
Notas del producto del equipo de asesoramiento al cliente de SQL Server
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)