CREATE REPLICATION GROUP

Crée un nouveau groupe de réplication des objets spécifiés dans le système.

Pour plus de détails, voir Présentation de la réplication et du basculement à travers plusieurs comptes.

Cette commande peut être utilisée pour :

  • Créez un groupe de réplication dans le compte source pour permettre la réplication des objets spécifiés vers un compte cible dans la même organisation.

  • Créez un groupe de réplication secondaire dans un compte cible en tant que réplica du groupe de réplication principal dans le compte source de la même organisation.

Voir aussi :

ALTER REPLICATION GROUP , DROP REPLICATION GROUP , SHOW REPLICATION GROUPS

Syntaxe

CREATE REPLICATION GROUP [ IF NOT EXISTS ] <name>
    OBJECT_TYPES = <object_type> [ , <object_type> , ... ]
    [ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
    [ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
    [ ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> , ... ] ]
    ALLOWED_ACCOUNTS = <org_name>.<target_account_name> [ , <org_name>.<target_account_name> , ... ]
    [ IGNORE EDITION CHECK ]
    [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
Copy

Groupe de réplication secondaire

CREATE REPLICATION GROUP [ IF NOT EXISTS ] <secondary_name>
    AS REPLICA OF <org_name>.<source_account_name>.<name>
Copy

Paramètres

name

Spécifie l’identificateur pour le groupe de réplication. L’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

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

OBJECT_TYPES = object_type [ , object_type , ... ]

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

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 sont inclus dans la liste des types d’objets spécifiés, le paramètre ALLOWED_DATABASES doit être défini.

INTEGRATIONS:

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

Actuellement, seuls la sécurité, l’API, le stockage [1], 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 les objets de partage sont inclus dans la liste des types d’objets spécifiés, le paramètre ALLOWED_SHARES doit être défini.

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.

Pour modifier la liste des types d’objets répliqués sur un compte cible spécifié, utilisez ALTER REPLICATION GROUP pour réinitialiser la liste des types d’objets.

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.

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.

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).

Note

L’accès externe n’est pas pris en charge dans la région Gov.

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.

ALLOWED_ACCOUNTS = org_name.target_account_name1 [ , org_name.target_account_name2 , ... ]

Spécifie le compte cible ou la liste des comptes cibles vers lesquels la réplication des objets spécifiés du compte source est activée.

org_name

Nom de votre organisation Snowflake.

target_account_name

Compte cible vers lequel vous activez 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.

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.

Paramètres du groupe de réplication secondaire

secondary_name

Spécifie l’identificateur du groupe de réplication secondaire. L’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse. Pour plus de détails, voir Exigences relatives à l’identificateur.

Les identificateurs du groupe de réplication secondaire (secondary_name) et du groupe de réplication principal (name) peuvent être identiques, mais ne sont pas tenus de l’être.

AS REPLICA OF org_name.source_account_name.name

Spécifie l’identificateur du groupe de réplication principal à partir duquel créer un groupe de réplication secondaire.

org_name

Nom de votre organisation Snowflake.

source_account_name

Compte source à partir duquel vous autorisez la réplication pour les objets spécifiés.

name

Identificateur du groupe de réplication principal dans le compte source.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE REPLICATION GROUP

Compte

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

MONITOR

Base de données

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.

OWNERSHIP

Partager

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

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

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

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

  • 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 l’ensemble des comptes de votre organisation qui sont activés pour la réplication, utilisez SHOW REPLICATION ACCOUNTS.

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

  • S’il y a des objets de compte (par exemple, des utilisateurs ou des rôles) dans un compte cible que vous ne voulez pas supprimer pendant la réplication, utilisez la fonction système SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME pour appliquer un identificateur global aux objets créés par d’autres moyens que la réplication. Pour plus d’informations, voir Appliquer des IDs globaux à des objets créés par des scripts dans des comptes cibles avant de créer un groupe de réplication.

  • 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écuter à partir du compte source

Créez un groupe de réplication nommé myrg dans le compte source et activez la réplication de la base de données db1, et partagez s1 du compte source vers le compte myaccount2 pour effectuer une actualisation automatique toutes les 10 minutes :

CREATE REPLICATION GROUP myrg
    OBJECT_TYPES = DATABASES, SHARES
    ALLOWED_DATABASES = db1
    ALLOWED_SHARES = s1
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
Copy

Exécuté sur le compte cible

Créez un groupe de réplication dans le compte cible en tant que réplica du groupe de réplication myrg dans le compte source :

CREATE REPLICATION GROUP myrg
    AS REPLICA OF myorg.myaccount1.myrg;
Copy