Partager via


Utiliser un groupe de disponibilité distribué pour migrer des bases de données à partir d’une instance autonome

Utilisez un groupe de disponibilité distribué pour migrer une base de données (ou plusieurs) d’une instance autonome de SQL Server vers des machines virtuelles SQL Server sur Azure.

Une fois que vous avez confirmé que votre instance SQL Server source répond aux conditions préalables, suivez les étapes de cet article pour créer un groupe de disponibilité sur votre instance SQL Server autonome et migrer votre base de données (ou groupe de bases de données) vers votre machine virtuelle SQL Server dans Azure.

Cet article concerne les bases de données sur une instance autonome de SQL Server. Cette solution ne nécessite pas de cluster de basculement Windows Server (WSFC) ni d’écouteur de groupe de disponibilité. Il est également possible de migrer des bases de données dans un groupe de disponibilité.

Diagramme expliquant la migration d’une seule instance à l’aide d’un groupe de disponibilité distribué.

Configuration initiale

La première étape consiste à créer votre machine virtuelle SQL Server dans Azure. Pour ce faire, vous pouvez utiliser le portail Azure, Azure PowerShell ou un modèle ARM.

N’oubliez pas de configurer votre machine virtuelle SQL Server conformément aux conditions préalables.

Par souci de simplicité, joignez votre machine virtuelle SQL Server cible au même domaine que votre SQL Server source. Sinon, joignez votre machine virtuelle SQL Server cible à un domaine fédéré avec le domaine de votre SQL Server source.

Pour utiliser l’amorçage automatique pour créer votre groupe de disponibilité distribué (DAG), le nom d’instance pour l’instance principale (source) globale du DAG doit correspondre au nom d’instance du redirecteur (cible) du DAG. En cas de différence de nom d’instance entre l’instance principale globale et le redirecteur, vous devez utiliser l’amorçage manuel pour créer le DAG, et ajouter manuellement tout fichier de base de données supplémentaire à l’avenir.

Cet article utilise les exemples de paramètres suivants :

  • Nom de la base de données : Adventureworks2022
  • Nom de machine source (principal global dans le groupe de disponibilité distribué) : OnPremNode
  • Nom de l’instance SQL Server source : MSSQLSERVER
  • Nom du groupe de disponibilité source : OnPremAg
  • Nom de machine virtuelle SQL Server cible (redirecteur dans le groupe de disponibilité distribué) : SQLVM
  • Nom d’instance cible de machine virtuelle SQL Server sur Azure : MSSQLSERVER
  • Nom du groupe de disponibilité cible : AzureAG
  • Nom du point de terminaison : Hadr_endpoint
  • Nom du groupe de disponibilité distribué : DAG
  • Nom de domaine : Contoso

Créer des points de terminaison

Utilisez Transact-SQL (T-SQL) pour créer des points de terminaison sur vos instances SQL Server source (OnPremNode) et cible (SQLVM).

Pour créer vos points de terminaison, exécutez ce script de T-SQL sur les serveurs source et cible :

CREATE ENDPOINT [Hadr_endpoint] STATE = STARTED
AS TCP (
    LISTENER_PORT = 5022,
    LISTENER_IP = ALL
)
FOR DATA_MIRRORING(ROLE = ALL,
AUTHENTICATION = WINDOWS NEGOTIATE,
ENCRYPTION = REQUIRED ALGORITHM AES);
GO

Les comptes de domaine ont automatiquement accès aux points de terminaison, mais les comptes de service peuvent ne pas faire automatiquement partie du groupe d’administrateur système et ne pas avoir d’autorisation de connexion. Pour accorder manuellement compte de service SQL Server une autorisation de connexion au point de terminaison, exécutez le script de T-SQL suivant sur les deux serveurs :

GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<your account>];

Créer un groupe de disponibilité source

Étant donné qu’un groupe de disponibilité distribué est un groupe de disponibilité spécial qui s’étend sur deux groupes de disponibilité individuels, vous devez tout d’abord créer un groupe de disponibilité sur l’instance SQL Server source. Si vous avez déjà un groupe de disponibilité que vous souhaitez conserver dans Azure, migrez votre groupe de disponibilité à la place.

Utilisez Transact-SQL (T-SQL) pour créer un groupe de disponibilité (OnPremAg) sur l’instance source (OnPremNode) pour la base de données Adventureworks2022 de l’exemple.

Pour créer le groupe de disponibilité, exécutez ce script sur la source :

CREATE AVAILABILITY GROUP [OnPremAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE
)
FOR DATABASE [Adventureworks2022] REPLICA ON N'OnPremNode'
WITH (
    ENDPOINT_URL = N'TCP://OnPremNode.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

Créer un groupe de disponibilité cible

Vous devez également créer un groupe de disponibilité sur la machine virtuelle SQL Server cible.

Utilisez Transact-SQL (T-SQL) pour créer un groupe de disponibilité (AzureAG) sur l’instance cible (SQLVM).

Pour créer le groupe de disponibilité, exécutez ce script sur la cible :

CREATE AVAILABILITY GROUP [AzureAG]
WITH (
    AUTOMATED_BACKUP_PREFERENCE = PRIMARY,
    DB_FAILOVER = OFF,
    DTC_SUPPORT = NONE,
    CLUSTER_TYPE = NONE,
    REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0
)
FOR REPLICA ON N'SQLVM'
WITH (
    ENDPOINT_URL = N'TCP://SQLVM.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    SEEDING_MODE = AUTOMATIC,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO)
);
GO

Créer un groupe de disponibilité distribué

Après avoir configuré vos groupes de disponibilité source (OnPremAG) et cible (AzureAG), créez votre groupe de disponibilité distribué de sorte qu’il s’étende jusqu’aux deux groupes de disponibilité individuels.

Utilisez Transact-SQL sur l’instance SQL Server source (OnPremNode) et le groupe de disponibilité (OnPremAG) pour créer le groupe de disponibilité distribué (DAG).

Pour créer le groupe de disponibilité distribué, exécutez ce script sur la source :

CREATE AVAILABILITY GROUP [DAG]
WITH (DISTRIBUTED) AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

Le mode d’amorçage est défini sur AUTOMATIC, car la version de SQL Server est identique sur la source et la cible. Si votre SQL Server cible est une version supérieure, ou si votre instance principale globale et le redirecteur ont des noms d’instance différents, créez le groupe de disponibilité distribué, puis joignez le groupe de disponibilité secondaire au groupe de disponibilité distribué avec SEEDING_MODE défini sur MANUAL. Ensuite, restaurez manuellement vos bases de données de l’instance source vers l’instance cible de SQL Server. Pour plus d’informations, consultez Mise à niveau des versions pendant la migration.

Une fois votre groupe de disponibilité distribué créé, joignez le groupe de disponibilité cible (AzureAG) sur l’instance cible (SQLVM) au groupe de disponibilité distribué (DAG).

Pour joindre le groupe de disponibilité cible au groupe de disponibilité distribué, exécutez ce script sur la cible :

ALTER AVAILABILITY GROUP [DAG]
JOIN AVAILABILITY GROUP
ON 'OnPremAG' WITH (
    LISTENER_URL = 'tcp://OnPremNode.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
),
'AzureAG' WITH (
    LISTENER_URL = 'tcp://SQLVM.contoso.com:5022',
    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
    FAILOVER_MODE = MANUAL,
    SEEDING_MODE = AUTOMATIC
);
GO

Si vous devez annuler, mettre en pause ou retarder la synchronisation entre les groupes de disponibilité source et cible (par exemple, en cas de problèmes de performances), exécutez ce script sur l’instance primaire globale source (OnPremNode) :

ALTER AVAILABILITY GROUP [DAG]
MODIFY AVAILABILITY GROUP
ON 'AzureAG' WITH (SEEDING_MODE = MANUAL);

Pour plus d’informations, consultez Annuler l’amorçage automatique au redirecteur.