ALTER REPLICATION GROUP

Modifie les propriétés d’un groupe de réplication existant.

À partir du compte source, vous pouvez effectuer les actions suivantes :

  • Renommer le groupe de réplication.

  • Réinitialiser la liste des types d’objets spécifiés activés pour la réplication.

  • Définir ou mettre à jour la planification de la réplication pour l’actualisation automatique des groupes de réplication secondaires.

  • Ajouter ou supprimer les objets de compte des types suivants à un groupe de réplication ou à partir de celui-ci :

    • Bases de données

    • Partages

    • Intégrations de sécurité

    • Intégrations API

    • Intégrations de stockage

    • Intégrations d’accès externes 1

    • Certains types d’intégrations de notification (voir Réplication d’intégration)

  • Ajouter ou supprimer des comptes cibles activés pour la réplication.

  • Déplacer des bases de données ou des partages d’un groupe de réplication vers un autre groupe de réplication.

1

La fonction d’intégration de l’accès externe est actuellement disponible en avant-première. La prise en charge de cette fonctionnalité est disponible pour les comptes sur AWS et Azure sauf la région gouvernementale.

À partir du compte cible, vous pouvez effectuer les actions suivantes :

  • Actualiser les objets du compte cible à partir du compte source.

  • Suspendre la réplication planifiée.

  • Reprendre la réplication planifiée.

Voir aussi :

CREATE REPLICATION GROUP , DROP REPLICATION GROUP , SHOW REPLICATION GROUPS

Syntaxe

Compte source

ALTER REPLICATION GROUP [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SET
  [ OBJECT_TYPES = <object_type> [ , <object_type> , ... ] ]
  [ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
  [ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
  [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
  [ ENABLE_ETL_REPLICATION = { TRUE | FALSE } ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SET
  OBJECT_TYPES = INTEGRATIONS [ , <object_type> , ... ]
  ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> ... ]
  [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <db_name> [ , <db_name> ,  ... ] TO ALLOWED_DATABASES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  MOVE DATABASES <db_name> [ , <db_name> ,  ... ] TO REPLICATION GROUP <move_to_rg_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <db_name> [ , <db_name> ,  ... ] FROM ALLOWED_DATABASES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <share_name> [ , <share_name> ,  ... ] TO ALLOWED_SHARES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  MOVE SHARES <share_name> [ , <share_name> ,  ... ] TO REPLICATION GROUP <move_to_rg_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <share_name> [ , <share_name> ,  ... ] FROM ALLOWED_SHARES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <org_name>.<target_account_name> [ , <org_name>.<target_account_name> ,  ... ] TO ALLOWED_ACCOUNTS
  [ IGNORE EDITION CHECK ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <org_name>.<target_account_name> [ , <org_name>.<target_account_name> ,  ... ] FROM ALLOWED_ACCOUNTS
Copy

Compte cible

ALTER REPLICATION GROUP [ IF EXISTS ] <name> REFRESH

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SUSPEND

ALTER REPLICATION GROUP [ IF EXISTS ] <name> RESUME
Copy

Paramètres

Compte source

name

Spécifie l’identificateur pour le groupe de réplication.

RENAME TO new_name
new_name

Spécifie le nouvel identificateur pour le groupe de réplication. Le nouvel identificateur ne peut pas être utilisé si l’identificateur est déjà en place pour une réplication différente ou un groupe de basculement différent.

Pour plus de détails, voir Exigences relatives à l’identificateur.

SET ...

Spécifie des propriétés à définir pour le groupe de réplication (séparées par des espaces, des virgules ou de nouvelles lignes).

OBJECT_TYPES = object_type [ , object_type , ... ]

Réinitialisez la liste des types d’objets à répliquer du compte source vers le(s) compte(s) cible(s).

Note

Pour les objets de base de données et de partage :

  • Si des DATABASES ou des SHARES sont inclus dans la liste OBJECT_TYPES et restent dans la liste OBJECT_TYPES après la réinitialisation de la liste, la liste des objets autorisés (ALLOWED_DATABASES ou ALLOWED_SHARES) reste inchangée.

  • Si la liste OBJECT_TYPES est réinitialisée pour ajouter ou supprimer des DATABASES, la liste ALLOWED_DATABASES est définie sur NULL.

  • Si la liste OBJECT_TYPES est réinitialisée pour ajouter ou supprimer des SHARES, la liste ALLOWED_SHARES est définie sur NULL.

  • Utilisez les clauses ADD, MOVE et REMOVE pour modifier la liste des objets de base de données ou de partage autorisés.

Les types d’objets suivants sont pris en charge :

ACCOUNT PARAMETERS

Nécessite Business Critical Edition (ou une version supérieure).

Tous les paramètres au niveau du compte. Cela comprend les paramètres du compte et les paramètres qui peuvent être définis pour votre compte.

DATABASES

Ajoutez des objets de base de données à la liste des types d’objets. Si les objets de la base de données étaient déjà inclus dans la liste des types d’objets spécifiés, la liste ALLOWED_DATABASES reste inchangée. Pour modifier la liste des bases de données, utilisez les clauses ADD, MOVE ou REMOVE.

INTEGRATIONS

Nécessite Business Critical Edition (ou une version supérieure).

Actuellement, seuls la sécurité, l’API, le stockage, l’accès externe 2 et certains types d’intégrations de notification sont pris en charge. Pour plus de détails, voir Réplication d’intégration.

Si les objets d’intégration sont inclus dans la liste des types d’objets spécifiés, le paramètre ALLOWED_INTEGRATION_TYPES doit être défini.

NETWORK POLICIES

Nécessite Business Critical Edition (ou une version supérieure).

Toutes les politiques réseau dans le compte source.

RESOURCE MONITORS

Nécessite Business Critical Edition (ou une version supérieure).

Tous les moniteurs de ressources dans le compte source.

ROLES

Nécessite Business Critical Edition (ou une version supérieure).

Tous les rôles du compte source. La réplication des rôles inclut implicitement toutes les autorisations pour les types d’objets inclus dans le groupe de réplication. Par exemple, si ROLES est le seul type d’objet qui est répliqué, alors seules les hiérarchies de rôles (c’est-à-dire les rôles accordés à d’autres rôles) sont répliquées vers les comptes cibles. Si le type d’objet USERS est également inclus, les autorisations accordées aux rôles aux utilisateurs sont également répliquées.

SHARES

Ajoutez les objets de partage à la liste des types d’objets. Si des objets de partage étaient déjà inclus dans la liste des types d’objets spécifiés, la liste ALLOWED_SHARES reste inchangée. Pour modifier la liste des partages, utilisez les clauses ADD, MOVE ou REMOVE.

USERS

Nécessite Business Critical Edition (ou une version supérieure).

Tous les utilisateurs du compte source.

WAREHOUSES

Nécessite Business Critical Edition (ou une version supérieure).

Tous les entrepôts du compte source.

2

La fonction d’intégration de l’accès externe est actuellement disponible en avant-première. La prise en charge de cette fonctionnalité est disponible pour les comptes sur AWS et Azure sauf la région gouvernementale.

ALLOWED_DATABASES = db_name [ , db_name , ... ]

Spécifie la base de données ou la liste de bases de données pour laquelle vous activez la réplication du compte source vers le compte cible. Pour que vous puissiez définir ce paramètre, la liste OBJECT_TYPES doit inclure DATABASES.

db_name

Spécifie l’identificateur de la base de données.

ALLOWED_SHARES = share_name [ , share_name , ... ]

Spécifie le partage ou la liste de partages pour lesquels vous activez la réplication du compte source vers le compte cible. Pour que vous puissiez définir ce paramètre, la liste OBJECT_TYPES doit inclure SHARES.

share_name

Spécifie l’identificateur du partage.

Note

Si les listes ALLOWED_DATABASES ou ALLOWED_SHARES sont modifiées, tous les objets qui figuraient précédemment dans la liste et qui ont été supprimés seront supprimés dans tout compte cible avec un groupe de réplication secondaire lié lors de la prochaine opération d’actualisation.

ALLOWED_INTEGRATION_TYPES = integration_type_name [ , integration_type_name , ... ]

Nécessite Business Critical Edition (ou une version supérieure).

Type(s) d’intégrations pour lesquelles vous activez la réplication du compte source vers le compte cible.

Cette propriété exige que la liste OBJECT_TYPES comprenne INTEGRATIONS pour définir ce paramètre.

Les types d’intégration suivants sont pris en charge :

SECURITY INTEGRATIONS

Spécifie les intégrations de sécurité.

Cette propriété exige que la liste OBJECT_TYPES comprenne ROLES.

API INTEGRATIONS

Spécifie les intégrations API.

La réplication d’une intégration API nécessite une configuration supplémentaire après la réplication de l’intégration API vers le compte cible. Pour plus d’informations, voir Mise à jour du service distant pour les intégrations API.

STORAGE INTEGRATIONS

Spécifie les intégrations de stockage.

EXTERNAL ACCESS INTEGRATIONS

Spécifie les intégrations d’accès externes.

Pour plus d’informations, consultez Réplication de procédures stockées et de fonctions définies par l’utilisateur (UDFs).

NOTIFICATION INTEGRATIONS

Spécifie les intégrations de notification.

Seuls certains types d’intégrations de notification sont répliqués. Pour plus de détails, voir Réplication d’intégration.

REPLICATION_SCHEDULE ...

Spécifie la planification de l’actualisation des groupes de réplication secondaires.

  • USING CRON expr time_zone

    Spécifie une expression cron et un fuseau horaire pour l’actualisation du groupe secondaire. Prend en charge un sous-ensemble de la syntaxe standard de l’utilitaire cron.

    Pour obtenir une liste des fuseaux horaires, voir la liste des fuseaux horaires de la base de données tz (dans Wikipédia).

    L’expression cron comprend les champs suivants :

    # __________ minute (0-59)
    # | ________ hour (0-23)
    # | | ______ day of month (1-31, or L)
    # | | | ____ month (1-12, JAN-DEC)
    # | | | | __ day of week (0-6, SUN-SAT, or L)
    # | | | | |
    # | | | | |
      * * * * *
    

    Les caractères spéciaux suivants sont acceptés :

    *

    Caractère générique. Spécifie toute occurrence du champ.

    L

    Signifie « dernier ». Lorsqu’il est utilisé dans le champ du jour de la semaine, il vous permet de spécifier des constructions telles que « le dernier vendredi » (« 5L ») d’un mois donné. Dans le champ du mois, il spécifie le dernier jour du mois.

    /n

    Indique l’instance n d’une unité de temps donnée. Chaque quanta de temps est calculé indépendamment. Par exemple, si 4/3 est spécifié dans le champ du mois, l’actualisation est planifiée pour avril, juillet et octobre (c’est-à-dire tous les 3 mois, à partir du 4e mois de l’année). Le même calendrier est maintenu les années suivantes. En d’autres termes, la réactualisation n’est pas prévue en janvier (3 mois après l’exécution d’octobre).

    Note

    • L’expression cron est actuellement évaluée par rapport au fuseau horaire spécifié. La modification de la valeur du paramètre TIMEZONE pour le compte (ou la définition de la valeur au niveau de l’utilisateur ou de la session) ne modifie pas le fuseau horaire de l’actualisation.

    • L’expression cron définit toutes les heures d’exécution valides de l’actualisation. Snowflake tente d’actualisation des groupes secondaires en fonction de cette planification. Toutefois, toute heure d’exécution valide est ignorée si une exécution précédente n’a pas été terminée avant le début de la prochaine heure d’exécution valide.

    • Lorsqu’un jour de mois et un jour de semaine spécifiques sont inclus dans l’expression cron, l’actualisation est planifiée les jours satisfaisant le jour du mois ou le jour de la semaine. Par exemple, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' planifie une réactualisation à 0AM entre le 10e et le 20e jour du mois ainsi que le mardi ou le jeudi en dehors de ces dates.

  • num MINUTE

    Spécifie un intervalle (en minutes) de temps d’attente entre les actualisations. Accepte uniquement les entiers positifs.

    Prend également en charge la syntaxe num M.

    Pour éviter toute ambiguïté, un intervalle de base est défini :

    • Lorsque l’objet est créé (à l’aide de CREATE <objet>) ou

    • Lorsqu’un intervalle différent est défini (avec ALTER <objet> … SETREPLICATION_SCHEDULE)

    L’intervalle de base démarre le compteur d’intervalle à partir de l’heure actuelle. Par exemple, si une valeur INTERVAL de 10 est définie et que l’actualisation planifiée est activée à 9:03 AM, elle s’exécute à 9:13 AM, 9:23 AM, etc. Notez que nous faisons de notre mieux pour assurer une précision absolue, mais nous garantissons uniquement que les actualisations ne s’exécutent pas avant que leur intervalle défini ne soit exécuté (par exemple, dans cet exemple, l’actualisation pourrait d’abord être exécutée à 9:14 AM, mais ne fonctionnera certainement pas à 9:12 AM).

    Note

    La valeur maximale prise en charge est 11520 (8 jours). Si le calendrier de réplication a une valeur num MINUTE supérieure, l’opération d’actualisation n’est jamais exécutée.

ENABLE_ETL_REPLICATION = TRUE | FALSE
ADD db_name [ , db_name ,  ... ] TO ALLOWED_DATABASES

Spécifie une liste de bases de données, séparées par des virgules, à ajouter à la liste des bases de données pour lesquelles la réplication est activée. Pour ajouter une base de données, DATABASES doit être inclus dans la liste des types d’objets spécifiés. Si la liste des types d’objets ne comprend pas déjà DATABASES, vous devez l’ajouter.

db_name

Spécifie l’identificateur de la base de données.

MOVE DATABASES db_name [ , db_name ,  ... ] TO REPLICATION GROUP move_to_rg_name

Spécifie une liste de bases de données, séparées par des virgules, à déplacer d’un groupe de réplication vers un autre groupe de réplication. Le groupe de réplication vers lequel les bases de données sont déplacées doit inclure DATABASES dans la liste des types d’objets spécifiés.

db_name

Spécifie l’identificateur de la base de données.

move_to_rg_name

Spécifie l’identificateur du groupe de réplication vers lequel les bases de données sont déplacées.

REMOVE db_name [ , db_name ,  ... ] FROM ALLOWED_DATABASES

Spécifie une liste de bases de données, séparées par des virgules, à supprimer de la liste des bases de données pour lesquelles la réplication est activée.

Note

Lorsque vous supprimez une base de données d’un groupe de réplication principal, la base de données est supprimée dans tout compte cible ayant un groupe de réplication secondaire lié lors de la prochaine opération d’actualisation.

Pour éviter de supprimer des bases de données dans le compte cible, vous pouvez supprimer le groupe de réplication secondaire avant la prochaine réplication dans le compte cible du groupe de basculement principal modifié. Lorsque vous supprimez le groupe de réplication secondaire, les bases de données secondaires en lecture seule qui étaient incluses dans le groupe deviennent des bases de données autonomes en lecture-écriture dans le compte cible.

ADD share_name [ , share_name ,  ... ] TO ALLOWED_SHARES

Spécifie une liste de partages, séparés par des virgules, à ajouter à la liste des partages pour la réplication. Pour ajouter un partage, SHARES doit être inclus dans la liste des types d’objets spécifiés. Si la liste des types d’objets ne comprend pas déjà SHARES, vous devez l’ajouter.

share_name

Spécifie l’identificateur du partage.

MOVE SHARES share_name [ , share_name ,  ... ] TO REPLICATION GROUP move_to_rg_name

Spécifie une liste de partages, séparés par des virgules, à déplacer d’un groupe de réplication vers un autre groupe de réplication. Le groupe de réplication vers lequel les partages sont déplacés doit inclure SHARES dans la liste des types d’objets spécifiés.

share_name

Spécifie l’identificateur du partage.

move_to_rg_name

Spécifie l’identificateur du groupe de réplication vers lequel les partages sont déplacés.

REMOVE share_name [ , share_name ,  ... ] FROM ALLOWED_SHARES

Spécifie une liste de partages, séparés par des virgules, à supprimer de la liste des partages pour lesquels la réplication est activée.

Note

Lorsque vous supprimez un partage d’un groupe de réplication principal, le partage est supprimé dans tout compte cible ayant un groupe de réplication secondaire lié lors de la prochaine opération d’actualisation.

ADD org_name.target_account_name [ , org_name.target_account_name ,  ... ] TO ALLOWED_ACCOUNTS

Spécifie une liste de comptes cibles, séparés par des virgules, à ajouter au groupe de réplication principal pour activer la réplication des objets spécifiés dans le compte source vers le compte cible.

org_name

Nom de votre organisation Snowflake.

target_account_name

Compte cible vers lequel vous activez la réplication des objets spécifiés.

REMOVE org_name.target_account_name [ , org_name.target_account_name ,  ... ] FROM ALLOWED_ACCOUNTS

Spécifie une liste de comptes cibles, séparés par des virgules, à supprimer du groupe de réplication principal pour désactiver la réplication des objets spécifiés dans le compte source vers le compte cible.

org_name

Nom de votre organisation Snowflake.

target_account_name

Compte cible sur lequel vous désactivez la réplication des objets spécifiés.

IGNORE EDITION CHECK

Permet de répliquer des objets vers des comptes sur des éditions inférieures dans l’un des scénarios suivants :

  • Le groupe de réplication principal avec seulement des objets de partage et/ou de base de données se trouve dans un compte Business Critical (ou supérieur), mais un ou plusieurs des comptes approuvés pour la réplication se trouvent sur des éditions inférieures. Business Critical Edition est destiné aux comptes Snowflake contenant des données extrêmement sensibles.

  • Un groupe de réplication primaire avec tout type d’objet se trouve dans un compte Business Critical (ou supérieur) et un accord d’association signé est en place pour stocker les données PHI dans le compte conformément aux réglementations HIPAA et HITRUST. Cependant, aucun accord de ce type n’est en place pour un ou plusieurs des comptes approuvés pour la réplication, qu’il s’agisse de comptes Business Critical (ou supérieurs).

Les deux scénarios sont interdits par défaut dans le but d’empêcher les administrateurs de comptes Business Critical (ou supérieurs) de répliquer par inadvertance des données sensibles vers des comptes sur des éditions inférieures.

Compte cible

name

Spécifie l’identificateur pour le groupe de réplication.

REFRESH

Actualise les objets du compte cible (actuel) à partir du compte source.

SUSPEND

Suspendez l’actualisation planifiée du groupe de réplication secondaire (si le groupe de réplication principal a une planification planifiée automatique définie à l’aide de la propriété REPLICATION_SCHEDULE).

Note

La suspension de la réplication planifiée ne suspend pas une opération d’actualisation en cours. Elle suspend la planification de sorte qu’aucune actualisation supplémentaire ne soit prévue après la fin de l’actualisation en cours.

RESUME

Reprenez l’actualisation planifiée du groupe de réplication secondaire (si le groupe de réplication principal a une planification planifiée automatique définie à l’aide de la propriété REPLICATION_SCHEDULE).

Notes sur l’utilisation

  • Les privilèges minimaux suivants sont requis :

    • Pour actualiser un groupe de réplication secondaire à l’aide de ALTER REPLICATION GROUP … REFRESH, le rôle principal actif doit posséder le privilège OWNERSHIP ou REPLICATE sur le groupe de réplication.

    • Pour apporter d’autres modifications au groupe de réplication, seul un utilisateur avec un rôle doté du privilège OWNERSHIP sur le groupe peut exécuter cette commande SQL.

    • Pour ajouter une base de données à un groupe de réplication, le rôle actif doit disposer du privilège MONITOR sur la base de données.

    • Pour ajouter un partage à un groupe de réplication, le rôle actif doit avoir le privilège OWNERSHIP sur le partage.

  • Les identificateurs des groupes de basculement et des groupes de réplication d’un compte doivent être uniques.

  • Les objets autres que les bases de données et les partages doivent être dans le même groupe de réplication.

  • Une base de données ne peut être ajoutée qu’à un seul groupe de réplication ou de basculement.

  • Pour déplacer des bases de données ou des partages d’un groupe de réplication (le groupe d’origine) vers un autre groupe de réplication (le groupe de destination) :

    • Les deux groupes doivent être du même type : REPLICATION GROUP.

    • Si la dernière base de données du groupe d’origine est déplacée vers un autre groupe, la propriété allowed_databases du groupe d’origine prend la valeur NULL. Le même comportement s’applique aux partages.

    • Si le type d’objet à déplacer (databases ou shares) ne figure pas dans la liste object_types du groupe d’origine, il doit être explicitement ajouté au groupe de destination avant de déplacer les objets.

  • Si des objets de base de données ou de partage sont supprimés d’un groupe de réplication principal (en utilisant le paramètre REMOVE ou SET pour modifier les listes ALLOWED_DATABASES ou ALLOWED_SHARES), ces objets sont supprimés dans tout compte cible ayant un groupe de réplication secondaire lié lors de la prochaine opération d’actualisation.

    Pour éviter de supprimer ces objets dans le compte cible, vous pouvez supprimer le groupe de réplication secondaire avant la prochaine réplication dans le compte cible du groupe de basculement principal modifié.

  • Les partages entrants (partages provenant de fournisseurs) ne peuvent pas être ajoutés à un groupe de réplication ou de basculement.

  • Pour récupérer la liste des comptes de votre organisation qui sont activés pour la réplication, utilisez la commande SHOW REPLICATION ACCOUNTS.

  • Pour récupérer la liste des groupes de réplication de votre organisation, utilisez la commande SHOW REPLICATION GROUPS. La colonne allowed_accounts répertorie tous les comptes cibles activés pour la réplication à partir d’un compte source.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Exécution depuis le compte source

Ajoutez myorg.myaccount3 à la liste des comptes cibles vers lesquels la réplication des objets spécifiés depuis le compte source est activée :

ALTER REPLICATION GROUP myrg ADD myorg.myaccount3 TO ALLOWED_ACCOUNTS;
Copy

Réinitialisez la liste des types d’objets pour la réplication dans le compte source :

ALTER REPLICATION GROUP myrg SET
  OBJECT_TYPES = DATABASES, SHARES;
Copy

Ajoutez la base de données db1 à la liste des bases de données pour lesquelles la réplication est activée :

ALTER REPLICATION GROUP myrg
  ADD db1 to ALLOWED_DATABASES;
Copy

Ajoutez le partage s2 à la liste des partages pour lesquels la réplication est activée :

ALTER REPLICATION GROUP myrg
  ADD s2 TO ALLOWED_SHARES;
Copy

Déplacez la base de données db1 vers un autre groupe de réplication, myrg2 :

ALTER REPLICATION GROUP myrg
  MOVE DATABASES db1 TO REPLICATION GROUP myrg2;
Copy

Définissez l’intervalle d’actualisation planifiée à 15 minutes :

ALTER REPLICATION GROUP myrg SET
  REPLICATION_SCHEDULE = '15 MINUTE';
Copy

Exécution depuis le compte cible

Actualisez les objets du groupe de réplication myrg dans le compte cible :

ALTER REPLICATION GROUP myrg REFRESH;
Copy

Suspendez les actualisations automatiques :

ALTER REPLICATION GROUP myrg SUSPEND;
Copy