Basculement d’objets de compte

Cette rubrique décrit les étapes nécessaires au basculement d’objets de compte répliqués sur plusieurs comptes appartenant à différentes régions pour la récupération après sinistre.

Pour plus d’informations sur l’objectif du mécanisme de basculement et sur l’opportunité de l’utiliser, voir Introduction à la continuité d’activité et à la récupération après sinistre.

Prerequisites

  1. Activez la réplication dans un ensemble de comptes au sein de la même organisation, dans plusieurs régions d’un fournisseur de services Cloud ou entre différents fournisseurs de services Cloud.

  2. Créez un groupe de basculement principal qui définit les types d’objets à répliquer et spécifie les comptes cibles vers lesquels effectuer la réplication. Vous pouvez éventuellement répartir les objets répliqués sur plusieurs groupes de basculement, par exemple si certaines bases de données doivent être répliquées plus fréquemment que d’autres.

  3. Create at least one secondary failover group (replica) of each primary failover group in one or more secondary accounts.

  4. Actualisez (synchronisez) chaque réplique avec les dernières mises à jour des objets du groupe de basculement. Effectuez une actualisation initiale et mettez en place un calendrier pour apporter régulièrement les dernières modifications à chaque compte secondaire.

For instructions, see Réplication d’objets de compte et de bases de données.

Promouvoir un compte cible pour qu’il serve de compte source

Vous pouvez promouvoir un compte cible pour qu’il serve de compte source (basculement) en utilisant l”Snowsight ou SQL.

For more information about the kinds of objects you can specify in a failover group, see Groupes de réplication et groupes de basculement.

Promote a target account to serve as the source account using Snowsight

Note

Only account administrators can edit a replication or failover group using Snowsight (see Limites de l’utilisation de Snowsight pour la configuration de la réplication).

Pour l’expérience de basculement la plus cohérente et plus fiable possible, sélectionnez tous les groupes et connexions de basculement applicables et promouvez-les tous en même temps. Nous appelons cette opération un basculement en masse.

To promote a target account to serve as the source account using Snowsight, follow these steps:

  1. Se connecter à Snowsight. Veillez à vous connecter en utilisant le compte cible.

  2. Dans le menu de navigation, sélectionnez Admin » Accounts.

  3. Sélectionnez Replication, puis sélectionnez Initiate failover. Une boîte de dialogue s’affiche où vous faites les choix restants.

  4. Sélectionnez les groupes de basculement à promouvoir. Après le basculement, les objets spécifiés dans ces groupes de basculement deviennent accessibles en écriture sur le compte principal nouvellement promu. Ces objets deviennent en lecture seule sur le compte qui était auparavant le compte principal et qui est maintenant un compte secondaire.

  5. Sélectionnez Next.

  6. Sélectionnez les connexions à promouvoir. Après le basculement, ces connexions se connectent au compte que vous promouvez en tant que nouveau compte principal.

  7. Sélectionnez Next.

  8. Select Fail over in the confirmation window.

  9. Si des opérations d’actualisation sont en cours pour les groupes de basculement que vous avez sélectionnés, vous pouvez attendre la fin de ces actualisations ou choisir une autre approche si votre basculement est urgent et doit être prioritaire.

    L’action par défaut consiste à attendre la fin des actualisations. De cette façon, les systèmes principal et secondaire sont tous dans un état cohérent lorsque le basculement en masse s’exécute. Snowflake utilise votre entrepôt actuellement sélectionné pour interroger le statut des actualisations en cours. Si vous n’avez pas d’entrepôt sélectionné, vous en sélectionnez un maintenant en utilisant l’option Select warehouse.

    Ou, vous pouvez procéder au basculement immédiatement en sélectionnant Show advanced options.

    • Pour basculer uniquement les groupes de basculement qui ne sont pas actuellement actualisés, sélectionnez Exit with current progress. Dans ce cas, vous effectuez ultérieurement des actualisations supplémentaires pour les groupes qui ont été ignorés lors du basculement en masse.

    • Pour annuler les opérations d’actualisation et poursuivre le basculement, sélectionnez Cancel refreshes and force failover. Dans ce cas, vous devrez peut-être nettoyer les incohérences du système secondaire à partir des actualisations interrompues.

Si l’opération de basculement n’est pas terminée pour tous les groupes de basculement, vous pouvez effectuer un autre basculement en masse. Ou vous pouvez basculer les groupes de basculement restants un par un, en utilisant la procédure dans Promote a single failover group to serve as the primary using Snowsight.

Promote a single failover group to serve as the primary using Snowsight

Note

Only account administrators can edit a replication or failover group using Snowsight (see Limites de l’utilisation de Snowsight pour la configuration de la réplication).

Pour promouvoir un groupe de basculement comme principal en utilisant Snowsight, suivez les étapes suivantes :

  1. Se connecter à Snowsight. Veillez à vous connecter en utilisant le compte cible.

  2. Dans le menu de navigation, sélectionnez Admin » Accounts.

  3. Sélectionnez Replication, puis sélectionnez Groups.

  4. Localisez le groupe de basculement que vous souhaitez promouvoir et sélectionnez le menu More () dans la dernière colonne de la ligne.

  5. Sélectionnez Fail over, puis Fail over dans la fenêtre de confirmation.

Astuce

Vous utilisez généralement cette procédure si vous rencontrez un problème de basculement sur un groupe et que vous devez réessayer le basculement uniquement pour ce groupe. Pour promouvoir un compte entier en tant que principal, sélectionnez plusieurs groupes de basculement et connexions et effectuez un basculement en masse. Pour plus d’informations, voir Promote a target account to serve as the source account using Snowsight.

Promouvoir un compte cible pour qu’il serve de compte source à l’aide de SQL

To promote a target account to serve as the source account using SQL, you sign in to the target account and execute the ALTER FAILOVER GROUP … PRIMARY command.

Promouvoir un groupe de basculement secondaire en groupe de basculement principal

Note

L’exemple de cette section doit être exécuté par un rôle doté du privilège FAILOVER.

L’exemple suivant promeut myaccount2 dans l’organisation myorg actuelle pour servir de compte source.

  1. Connectez-vous à votre compte cible myaccount2.

  2. Liste des groupes de basculement du compte :

    SHOW FAILOVER GROUPS;
    
    Copy
  3. Exécutez l’instruction suivante pour chaque groupe de basculement secondaire que vous souhaitez promouvoir pour qu’il serve de groupe de basculement principal :

    ALTER FAILOVER GROUP myfg PRIMARY;
    
    Copy

    Note

    Lors d’une panne partielle dans votre région source, le service de réplication peut continuer à être disponible et à actualiser les groupes de basculement secondaires dans les régions cibles.

    Pour garantir l’intégrité des données, Snowflake empêche le basculement si une opération d’actualisation est en cours. Cela signifie que vous ne pouvez pas promouvoir un groupe de basculement secondaire pour qu’il serve de groupe principal s’il est rafraîchi par une opération de réplication. La commande ALTER FAILOVER GROUP … PRIMARY renvoie une erreur dans ce cas.

Résolution de l’échec de l’instruction de basculement dû à une opération d’actualisation en cours

Si une opération d’actualisation est en cours pour le groupe de basculement secondaire que vous essayez de promouvoir, l’instruction de basculement entraîne l’erreur suivante :

Replication group "<GROUP_NAME>" cannot currently be set as primary because it is being
refreshed. Either wait for the refresh to finish or cancel the refresh and try again.

Pour réussir le basculement, vous devez suivre les étapes suivantes.

  1. Sélectionnez et complétez l’une des options suivantes :

    Important

    La suspension d’une opération d’actualisation au cours de la phase SECONDARY_DOWNLOADING_METADATA ou SECONDARY_DOWNLOADING_DATA peut entraîner un état incohérent sur le compte cible. Pour plus d’informations, voir Voir la phase actuelle d’une opération d’actualisation en cours.

    1. Suspendez les futures opérations d’actualisation pour le groupe de basculement. Si une opération d’actualisation est en cours, vous devez attendre qu’elle se termine avant de procéder au basculement :

      ALTER FAILOVER GROUP myfg SUSPEND;
      
      Copy
    2. Suspendez les futures opérations d’actualisation et annulez une opération d’actualisation planifiée en cours (s’il y en a une).

      Si l’opération d’actualisation en cours a été déclenchée manuellement, voir Annuler une opération d’actualisation en cours qui n’a pas été automatiquement planifiée.

      ALTER FAILOVER GROUP myfg SUSPEND IMMEDIATE;
      
      Copy

      Note

      Il se peut qu’il y ait un léger délai entre le moment où l’instruction est renvoyée et le moment où l’annulation de l’opération d’actualisation est terminée.

  2. Vérifiez qu’aucune opération d’actualisation n’est en cours pour le groupe de basculement myfg. La requête suivante ne devrait donner aucun résultat :

    SELECT phase_name, start_time, job_uuid
      FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg'))
      WHERE phase_name <> 'COMPLETED' and phase_name <> 'CANCELED';
    
    Copy

    Pour voir les opérations d’actualisation annulées pour le groupe de basculement myfg, vous pouvez exécuter l’instruction suivante :

    SELECT phase_name, start_time, job_uuid
      FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg'))
      WHERE phase_name = 'CANCELED';
    
    Copy
  3. Vous pouvez maintenant promouvoir le groupe de basculement secondaire myfg en groupe de basculement principal :

    ALTER FAILOVER GROUP myfg PRIMARY;
    
    Copy

Reprendre la réplication programmée dans les comptes cibles

Lors du basculement, les actualisations planifiées sur tous les groupes de basculement secondaires sont suspendues. ALTER FAILOVER GROUP … RESUME doit être exécuté sur chaque compte cible avec un groupe de basculement secondaire pour reprendre les actualisations automatiques.

ALTER FAILOVER GROUP myfg RESUME;
Copy

Voir la phase actuelle d’une opération d’actualisation en cours

Une opération d’actualisation peut être annulée en toute sécurité pendant la plupart des phases de l’opération d’actualisation. Toutefois, l’annulation d’une opération d’actualisation au cours de la phase SECONDARY_DOWNLOADING_METADATA ou SECONDARY_DOWNLOADING_DATA peut entraîner un état incohérent sur le compte cible. Si l’opération d’actualisation a démarré l’une de ces phases, elle se poursuit jusqu’à son terme, quelle que soit la disponibilité du compte source. En laissant la phase se terminer avant de basculer, vous vous assurez que les répliques sont dans un état cohérent. Une fois que les répliques sont dans un état cohérent, vous pouvez reprendre ou rejouer vos pipelines d’ingestion et de transformation pour mettre à jour les répliques à l’état actuel.

Pour voir la phase actuelle d’une opération d’actualisation en cours pour un groupe de basculement, utilisez la fonction de table Information Schema REPLICATION_GROUP_REFRESH_PROGRESS, REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB, REPLICATION_GROUP_REFRESH_PROGRESS_ALL.

Par exemple, pour voir la phase actuelle d’une opération d’actualisation en cours pour le groupe de basculement myfg, exécutez l’instruction suivante :

SELECT phase_name, start_time, end_time
  FROM TABLE(
    INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS('myfg')
  );
Copy

Pour obtenir la liste des phases des opérations d’actualisation, consultez les notes sur l’utilisation de la fonction.

Annuler une opération d’actualisation en cours qui n’a pas été automatiquement planifiée

Pour annuler une opération d’actualisation en cours qui n’a pas été déclenchée automatiquement par une planification de réplication, vous devez utiliser la fonction SYSTEM$CANCEL_QUERY :

  1. Recherchez l’ID ou l’JOB_UUID de requête pour exécuter les opérations d’actualisation en utilisant l’une des options suivantes :

    1. Recherchez les IDs de requête pour toutes les opérations d’actualisation en cours :

      SELECT query_id, query_text
        FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
        WHERE query_type = 'REFRESH REPLICATION GROUP'
        AND execution_status = 'RUNNING'
        ORDER BY start_time;
      
      Copy

      Utilisez la colonne QUERY_TEXT pour identifier dans l’QUERY_ID pour les opérations d’actualisation du groupe de basculement.

    2. Trouvez l’JOB_UUID pour une opération d’actualisation en cours pour un groupe de basculement spécifique myfg :

      SELECT phase_name, start_time, job_uuid
        FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg'))
        WHERE phase_name <> 'COMPLETED' and phase_name <> 'CANCELED';
      
      Copy
  2. Annulez l’opération d’actualisation en utilisant la fonction SYSTEM$CANCEL_QUERY et la fonction QUERY_ID ou JOB_UUID :

    SELECT SYSTEM$CANCEL_QUERY('<QUERY_ID | JOB_UUID>');
    
    Copy

    Renvoie les résultats suivants :

    query [<QUERY_ID>] terminated.
    
  3. Après avoir annulé l’opération d’actualisation en cours, passez aux étapes suivantes.

Rouvrir des canaux actifs pour Snowpipe Streaming dans le nouveau compte source promu

Les tables d’une base de données primaire qui sont alimentées par Snowpipe Streaming sont répliquées dans les bases de données secondaires. Après le basculement, rouvrez les canaux Snowpipe Streaming actifs pour les tables et réinsérez toutes les lignes de données manquantes pour les canaux :

  1. Rouvrez les canaux actifs de la table en appelant l’API openChannel.

  2. Récupérer les jetons de décalage :

    1. Appelez l’API getLatestCommittedOffsetToken ou

    2. Exécutez la commande SHOW CHANNELS pour récupérer la liste des canaux actifs de la table.

  3. Réinsérez les lignes de données pour le canal à partir des jetons de décalage récupérés.

Note

Ces étapes s’appliquent uniquement à Snowpipe Streaming avec le SDK Snowflake Ingest ; elles ne s’appliquent pas à Snowpipe Streaming avec le connecteur Kafka. Suivez les étapes ci-dessous pour redémarrer Kafka Connector après le basculement.

Snowpipe Streaming et le connecteur Kafka

Si vous utilisez le connecteur Kafka et Snowpipe Streaming, suivez ces étapes après le basculement :

  1. Mettez à jour la configuration du connecteur Kafka pour qu’il pointe vers le compte source qui vient d’être promu.

  2. Exécutez la commande SHOW CHANNELS pour récupérer la liste des canaux actifs et les jetons de décalage. Chaque canal appartient à une seule partition du sujet Kafka.

  3. Réinitialisez manuellement les décalages dans le thème Kafka pour chacune de ces partitions (canaux).

  4. Redémarrez le connecteur Kafka.

For more information, see: