CREATE FAILOVER GROUP

Crée un nouveau groupe de basculement 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 basculement dans le compte source pour permettre la réplication et le basculement des objets spécifiés vers un compte cible dans la même organisation.

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

Voir aussi :

ALTER FAILOVER GROUP , DROP FAILOVER GROUP , SHOW FAILOVER GROUPS

Syntaxe

CREATE FAILOVER 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 basculement secondaire

CREATE FAILOVER 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 basculement. 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 et le basculement du compte source vers le compte cible.

Les types d’objets suivants sont pris en charge :

ACCOUNT PARAMETERS

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

Actuellement, seuls la sécurité, l’API, le stockage, l’accès externe 1 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

Toutes les politiques réseau dans le compte source.

RESOURCE MONITORS

Tous les moniteurs de ressources dans le compte source.

ROLES

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

Tous les utilisateurs du compte source.

WAREHOUSES

Tous les entrepôts du compte source.

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.

Pour modifier la liste des types d’objets répliqués sur un compte cible spécifié, utilisez ALTER FAILOVER 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 des bases de données pour lesquelles vous activez la réplication et le basculement 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 et le basculement 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.

ALLOWED_INTEGRATION_TYPES = integration_type_name [ , integration_type_name , ... ]

Type(s) d’intégrations pour lesquelles vous activez la réplication et le basculement 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.

ALLOWED_ACCOUNTS = org_name.target_account_name [ , org_name.target_account_name , ... ]

Spécifie le compte cible ou la liste des comptes cibles vers lesquels la réplication et le basculement des objets spécifiés du compte source sont activés. Les groupes de basculement secondaires dans les comptes cibles de cette liste peuvent être promus en tant que groupe de basculement principal en cas de basculement.

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 sur des comptes dans le scénario suivant :

Un groupe de basculement primaire se trouve dans un compte Business Critical (ou supérieur) et un accord d’associé commercial 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).

Ce scénario est interdit par défaut.

REPLICATION_SCHEDULE ...

Spécifie la planification de l’actualisation des groupes de basculement 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 basculement secondaire

secondary_name

Spécifie l’identificateur du groupe de basculement 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 basculement secondaire (secondary_name) et du groupe de basculement 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 basculement principal à partir duquel créer un groupe de basculement secondaire.

org_name

Nom de votre organisation Snowflake.

source_account_name

Compte source à partir duquel vous activez la réplication et le basculement des objets spécifiés.

name

Identificateur du groupe de basculement 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 FAILOVER 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 basculement, le rôle actif doit avoir le privilège MONITOR sur la base de données.

OWNERSHIP

Partager

Pour ajouter un partage à un groupe de basculement, 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.

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

  • Une base de données ne peut être ajoutée qu’à un seul groupe 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 basculement dans votre organisation, utilisez SHOW FAILOVER GROUPS.

  • 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 basculement.

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

  • Pour un compte qui vient d’être mis à niveau vers Business Critical Edition (ou une version supérieure), il peut s’écouler jusqu’à 12 heures avant que les fonctionnalités de basculement ne soient disponibles.

Exemples

Exécuter à partir du compte source

Créez un groupe de basculement nommé myfg dans le compte source et activez la réplication des utilisateurs, des rôles, des entrepôts, des moniteurs de ressources, de la base de données db1, et du partage s1, ainsi que le basculement du compte source vers le compte myaccount2 :

CREATE FAILOVER GROUP myfg
    OBJECT_TYPES = USERS, ROLES, WAREHOUSES, RESOURCE MONITORS, DATABASES, SHARES, INTEGRATIONS, NETWORK POLICIES
    ALLOWED_DATABASES = db1
    ALLOWED_SHARES = s1
    ALLOWED_INTEGRATION_TYPES = SECURITY INTEGRATIONS
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
Copy

Exécuté sur le compte cible

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

CREATE FAILOVER GROUP myfg
    AS REPLICA OF myorg.myaccount1.myfg;
Copy