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> }' ]
Groupe de basculement secondaire
CREATE FAILOVER GROUP [ IF NOT EXISTS ] <secondary_name>
AS REPLICA OF <org_name>.<source_account_name>.<name>
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 [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:
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’objetUSERS
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.
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 inclureDATABASES
.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 inclureSHARES
.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
comprenneINTEGRATIONS
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
comprenneROLES
.- 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_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 valeurnum 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';
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;