Implementación de Instancia administrada de Azure SQL en un grupo de instancias

SE APLICA A: Azure SQL Managed Instance

En este artículo se proporcionan detalles sobre cómo crear un grupo de instancias y cómo implementar Instancia administrada de Azure SQL para ello.

Operaciones de grupos de instancias

En la tabla siguiente se muestran las operaciones disponibles relacionadas con los grupos de instancias y su disponibilidad en Azure Portal, PowerShell y la CLI de Azure.

Get-Help Azure portal PowerShell Azure CLI
Creación de un grupo de instancias No
Actualización de un grupo de instancias (número limitado de propiedades) No
Comprobación del uso de un grupo de instancias y sus propiedades No
Eliminación de un grupo de instancias No
Creación de una instancia administrada dentro de un grupo de instancias No No
Actualización del uso de un recurso para una instancia administrada No
Comprobación del uso y las propiedades de una instancia administrada No
Eliminación de una instancia administrada del grupo No
Creación de una base de datos en una instancia dentro del grupo No
Eliminación de una base de datos en Instancia administrada de SQL No

Para usar PowerShell, instale la versión más reciente de PowerShell Core y siga las instrucciones para instalar el módulo de Azure PowerShell.

Comandos de PowerShell disponibles:

Cmdlet Descripción
New-AzSqlInstancePool Crea un grupo de Instancia administrada de SQL.
Get-AzSqlInstancePool Devuelve información sobre un grupo de instancias.
Set-AzSqlInstancePool Establece las propiedades de un grupo de instancias en Instancia administrada de SQL.
Remove-AzSqlInstancePool Quita un grupo de instancias en Instancia administrada de SQL.
Get-AzSqlInstancePoolUsage Devuelve información sobre el uso de grupos de Instancia administrada de SQL.

En el caso de las operaciones relacionadas con instancias dentro de grupos e instancias únicas, use los comandos de instancia administrada estándar, pero la propiedad de nombre del grupo de instancias se debe rellenar al usar estos comandos para una instancia de un grupo.

Proceso de implementación

Para implementar una instancia administrada en un grupo de instancias, primero debe implementar el grupo, lo que supone una operación única de ejecución prolongada que dura lo mismo que la implementación de una instancia única creada en una subred vacía. Después, puede implementar una instancia administrada en el grupo; se trata de una operación relativamente rápida que normalmente tarda cinco minutos como máximo. El parámetro del grupo de instancias se debe especificar de manera explícita como parte de esta operación.

En la versión preliminar pública, ambas acciones solo son compatibles con las plantillas de Azure Resource Manager y PowerShell. La experiencia de Azure Portal no está disponible actualmente.

Una vez implementada una instancia administrada en un grupo, puede usar Azure Portal para cambiar sus propiedades en la página de planes de tarifa.

Creación de una red virtual con una subred

Para colocar varios grupos de instancias dentro de la misma red virtual, consulte los artículos siguientes:

Creación de un grupo de instancias

Después de completar los pasos anteriores, ya está preparado para crear un grupo de instancias.

Las restricciones siguientes se aplican a los grupos de instancias:

  • Solo los grupos de instancias de uso general y Gen5 están disponibles en la versión preliminar pública.
  • El nombre del grupo solo puede contener letras minúsculas, números y guiones, y no puede empezar con un guion.
  • Si quiere usar la Ventaja híbrida de Azure, se aplica en el nivel de grupo de instancias. Puede establecer el tipo de licencia durante la creación del grupo o actualizarlo en cualquier momento después de la creación.

Importante

La implementación de un grupo de instancias es una operación de larga duración que tarda aproximadamente 4,5 horas.

Para obtener parámetros de red:

$virtualNetwork = Get-AzVirtualNetwork -Name "miPoolVirtualNetwork" -ResourceGroupName "myResourceGroup"
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "miPoolSubnet" -VirtualNetwork $virtualNetwork

Para crear un grupo de instancias:

$instancePool = New-AzSqlInstancePool `
  -ResourceGroupName "myResourceGroup" `
  -Name "mi-pool-name" `
  -SubnetId $subnet.Id `
  -LicenseType "LicenseIncluded" `
  -VCore 8 `
  -Edition "GeneralPurpose" `
  -ComputeGeneration "Gen5" `
  -Location "westeurope"

Importante

Dado que la implementación de un grupo de instancias es una operación de larga duración, debe esperar hasta que se complete antes de ejecutar cualquiera de los pasos siguientes descritos en este artículo.

Creación de una instancia administrada

Después de implementar correctamente el grupo de instancias, es el momento de crear una instancia administrada dentro de él.

Para crear una instancia administrada, ejecute el comando siguiente:

$instanceOne = $instancePool | New-AzSqlInstance -Name "mi-one-name" -VCore 2 -StorageSizeInGB 256

La implementación de una instancia dentro de un grupo tarda un par de minutos. Una vez creada la primera instancia, se pueden crear instancias adicionales:

$instanceTwo = $instancePool | New-AzSqlInstance -Name "mi-two-name" -VCore 4 -StorageSizeInGB 512

Crear una base de datos

Para crear y administrar bases de datos en una instancia administrada que se encuentre dentro de un grupo, use los comandos de instancia única.

Para crear una base de datos dentro de una instancia administrada:

$poolinstancedb = New-AzSqlInstanceDatabase -Name "mipooldb1" -InstanceName "poolmi-001" -ResourceGroupName "myResourceGroup"

Obtención del uso del grupo

Para obtener una lista de instancias dentro de un grupo:

$instancePool | Get-AzSqlInstance

Para obtener el uso de los recursos de un grupo:

$instancePool | Get-AzSqlInstancePoolUsage

Para obtener información general detallada sobre el uso del grupo y las instancias que contiene:

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

Para enumerar las bases de datos de una instancia:

$databases = Get-AzSqlInstanceDatabase -InstanceName "pool-mi-001" -ResourceGroupName "resource-group-name"

Nota

Para comprobar los límites sobre el número de bases de datos por grupo de instancias e instancia administrada que se implementan dentro del grupo, consulte la sección Limitaciones de recursos.

Escala

Después de rellenar una instancia administrada con bases de datos, puede alcanzar los límites de instancias con respecto al almacenamiento o al rendimiento. En ese caso, si no se ha superado el uso del grupo, puede escalar la instancia. Escalar una instancia administrada dentro de un grupo es una operación que tarda un par de minutos. El requisito previo para el escalado son núcleos virtuales y almacenamiento disponibles en el nivel de grupo de instancias.

Para actualizar el número de núcleos virtuales y el tamaño de almacenamiento:

$instanceOne | Set-AzSqlInstance -VCore 8 -StorageSizeInGB 512 -InstancePoolName "mi-pool-name"

Para actualizar solo el tamaño de almacenamiento:

$instance | Set-AzSqlInstance -StorageSizeInGB 1024 -InstancePoolName "mi-pool-name"

Conectar

Para conectarse a una instancia administrada en un grupo, se necesitan los dos pasos siguientes:

  1. Habilite el punto de conexión público para la instancia.
  2. Agregue una regla de entrada al grupo de seguridad de red (NSG).

Una vez completados ambos pasos, puede conectarse a la instancia de mediante una dirección de punto de conexión pública, un puerto y las credenciales proporcionadas durante la creación de la instancia.

Habilitación del punto de conexión público

La habilitación del punto de conexión público para una instancia se puede realizar a través de Azure Portal o mediante el comando de PowerShell siguiente:

$instanceOne | Set-AzSqlInstance -InstancePoolName "pool-mi-001" -PublicDataEndpointEnabled $true

Este parámetro también se puede establecer durante la creación de la instancia.

Incorporación de una regla de entrada al grupo de seguridad de red

Este paso se puede realizar a través de Azure Portal o mediante comandos de PowerShell y se puede hacer en cualquier momento después de preparar la subred para la instancia administrada.

Para información detallada, consulte Permitir el tráfico del punto de conexión público en el grupo de seguridad de red.

Cómo mover una instancia única existente a un grupo

Mover instancias dentro y fuera de un grupo es una de las limitaciones de la versión preliminar pública. Una solución alternativa es la restauración a un momento dado de bases de datos desde una instancia fuera de un grupo a una instancia que ya está en un grupo.

Ambas instancias deben estar en la misma suscripción y región. Actualmente no se admite la restauración entre regiones y entre suscripciones.

Este proceso tiene un período de tiempo de inactividad.

Para mover bases de datos existentes:

  1. Pause las cargas de trabajo de la instancia administrada desde la cual se realizará la migración.

  2. Genere scripts para crear bases de datos del sistema y ejecútelos en la instancia que se encuentra dentro del grupo de instancias.

  3. Realice una restauración a un momento dado de cada base de datos desde la instancia única a la instancia del grupo.

    $resourceGroupName = "my resource group name"
    $managedInstanceName = "my managed instance name"
    $databaseName = "my source database name"
    $pointInTime = "2019-08-21T08:51:39.3882806Z"
    $targetDatabase = "name of the new database that will be created"
    $targetResourceGroupName = "resource group of instance pool"
    $targetInstanceName = "pool instance name"
    
    Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
      -ResourceGroupName $resourceGroupName `
      -InstanceName $managedInstanceName `
      -Name $databaseName `
      -PointInTime $pointInTime `
      -TargetInstanceDatabaseName $targetDatabase `
      -TargetResourceGroupName $targetResourceGroupName `
      -TargetInstanceName $targetInstanceName
    
  4. Dirija la aplicación a la nueva instancia y reanude sus cargas de trabajo.

Si hay varias bases de datos, repita el proceso para cada base de datos.

Pasos siguientes