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> }' ]
Groupe de réplication secondaire
CREATE REPLICATION 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 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’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:
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 inclureDATABASES
.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 inclureSHARES
.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
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_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 valeurnum 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';
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;