CREATE REPLICATION GROUP

Cria um novo grupo de replicação de objetos especificados no sistema.

Para obter mais detalhes, consulte Introdução à replicação e failover em várias contas.

Esse comando pode ser usado para:

  • Criar um grupo de replicação na conta de origem para permitir a replicação de objetos especificados para uma conta de destino na mesma organização.

  • Criar um grupo de replicação secundário em uma conta de destino como uma réplica do grupo de replicação primário na conta de origem na mesma organização.

Consulte também:

ALTER REPLICATION GROUP, DROP REPLICATION GROUP, SHOW REPLICATION GROUPS

Sintaxe

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

Grupo de replicação secundário

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

Parâmetros

name

Especifica o identificador do grupo de replicação. O identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais detalhes, consulte Requisitos para identificadores.

OBJECT_TYPES = object_type [ , object_type , ... ]

Tipo(s) de objetos para os quais você está permitindo replicação da conta de origem para a conta de destino.

Os seguintes tipos de objetos são suportados:

ACCOUNT PARAMETERS

Business Critical Edition (ou superior) obrigatório.

Todos os parâmetros no nível da conta. Isso inclui parâmetros da conta e parâmetros que podem ser configurados para sua conta.

DATABASES

Adicionar objetos de banco de dados à lista de tipos de objetos. Se objetos de banco de dados estiverem incluídos na lista de tipos de objetos especificados, o parâmetro ALLOWED_DATABASES deve ser definido.

INTEGRATIONS

Business Critical Edition (ou superior) obrigatório.

Atualmente, somente segurança, API, armazenamento, acesso externo [#] e certos tipos de integrações de notificação são suportadas. Para obter mais detalhes, consulte Replicação de integrações.

Se objetos de integração estiverem incluídos na lista de tipos de objetos especificados, o parâmetro ALLOWED_INTEGRATION_TYPES deve ser definido.

NETWORK POLICIES

Business Critical Edition (ou superior) obrigatório.

Todas as políticas de rede na conta de origem.

RESOURCE MONITORS

Business Critical Edition (ou superior) obrigatório.

Todos os monitores de recursos na conta de origem.

ROLES

Business Critical Edition (ou superior) obrigatório.

Todas as funções na conta de origem. A replicação de funções inclui implicitamente todas as concessões para os tipos de objetos incluídos no grupo de replicação. Por exemplo, se ROLES é o único tipo de objeto que é replicado, apenas hierarquias de funções (ou seja, funções concedidas a outras funções) são replicadas para contas de destino. Se o tipo de objeto USERS também estiver incluído, concessões de funções aos usuários também serão replicadas.

SHARES

Adicionar objetos de compartilhamento à lista de tipos de objetos. Se objetos compartilhados estiverem incluídos na lista de tipos de objetos especificados, o parâmetro ALLOWED_SHARES deve ser definido.

USERS

Business Critical Edition (ou superior) obrigatório.

Todos os usuários na conta de origem.

WAREHOUSES

Business Critical Edition (ou superior) obrigatório.

Todos os warehouses na conta de origem.

Para modificar a lista de tipos de objetos replicados para uma conta de destino especificada, use ALTER REPLICATION GROUP para redefinir a lista de tipos de objetos.

1

O recurso de integração de acesso externo está atualmente em versão preliminar. O suporte para esse recurso está disponível para contas no AWS e Azure, exceto a região Gov.

ALLOWED_DATABASES = db_name [ , db_name , ... ]

Especifica o banco de dados ou lista de bancos de dados para os quais você está permitindo replicação da conta de origem para a conta de destino. Para que você possa definir esse parâmetro, a lista OBJECT_TYPES deve incluir DATABASES.

ALLOWED_SHARES = share_name [ , share_name , ... ]

Especifica o compartilhamento ou a lista de compartilhamentos para os quais você está permitindo replicação da conta de origem para a conta de destino. Para que você possa definir esse parâmetro, a lista OBJECT_TYPES deve incluir SHARES.

ALLOWED_INTEGRATION_TYPES = integration_type_name [ , integration_type_name , ... ]

Business Critical Edition (ou superior) obrigatório.

Tipo(s) de integrações para os quais você está permitindo replicação da conta de origem para a conta de destino.

Essa propriedade requer que a lista OBJECT_TYPES inclua INTEGRATIONS para definir este parâmetro.

Os seguintes tipos de integração são suportados:

SECURITY INTEGRATIONS

Especifica as integrações de segurança.

Essa propriedade requer que a lista OBJECT_TYPES inclua ROLES.

API INTEGRATIONS

Especifica as integrações de API.

A integração de API requer uma configuração adicional depois que a integração de API for replicada para a conta de destino. Para obter mais informações, consulte Atualização do serviço remoto para integrações de API.

STORAGE INTEGRATIONS

Especifica as integrações de armazenamento.

EXTERNAL ACCESS INTEGRATIONS

Especifica integrações de acesso externo.

Para obter mais informações, consulte Replicação de procedimentos armazenados e funções definidas pelo usuário (UDFs).

NOTIFICATION INTEGRATIONS

Especifica as integrações de notificação.

Apenas alguns tipos de integrações de notificação são replicados. Para obter mais detalhes, consulte Replicação de integrações.

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

Especifica a conta de destino ou lista de contas de destino para a qual a replicação e de objetos especificados da conta de origem estão habilitados.

org_name

Nome de sua organização no Snowflake.

target_account_name

Conta de destino na qual você está habilitando a replicação dos objetos especificados.

IGNORE EDITION CHECK

Permite replicar objetos para contas em edições inferiores em um dos seguintes cenários:

  • O grupo de replicação primário apenas com objetos e/ou bancos de dados de compartilhamento está em uma conta Business Critical (ou superior), mas uma ou mais contas aprovadas para replicação estão em edições inferiores. O Business Critical Edition é destinado a contas Snowflake com dados extremamente confidenciais.

  • Um grupo de replicação primária com qualquer tipo de objeto está em uma conta Business Critical (ou superior) e um acordo assinado de associado comercial está em vigor para armazenar dados PHI na conta por regulamentos HIPAA e HITRUST. No entanto, nenhum contrato desse tipo está em vigor para uma ou mais contas aprovadas para replicação, independentemente de serem contas Business Critical (ou superiores).

Ambos os cenários são proibidos por padrão em um esforço para ajudar a evitar que os administradores de contas Business Critical (ou superiores) repliquem inadvertidamente dados confidenciais para contas em edições anteriores.

REPLICATION_SCHEDULE ...

Especifica o cronograma para refrescar os grupos de réplicas secundárias.

  • USING CRON expr time_zone

    Especifica uma expressão cron e um fuso horário para a atualização do grupo secundário. Oferece suporte a um subconjunto de sintaxe de utilitário cron padrão.

    Para uma lista de fusos horários, consulte a lista de fusos horários do banco de dados tz (no Wikipedia).

    A expressão cron consiste nos seguintes campos:

    # __________ 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)
    # | | | | |
    # | | | | |
      * * * * *
    

    Os seguintes caracteres especiais são suportados:

    *

    Curinga. Especifica qualquer ocorrência do campo.

    L

    Significa “último”. Quando usado no campo do dia da semana, permite especificar construções como “a última sexta-feira” (“5L”) de um determinado mês. No campo do dia do mês, ele especifica o último dia do mês.

    /n

    Indica a enésima instância de uma determinada unidade de tempo. Cada quanta de tempo é computada independentemente. Por exemplo, se 4/3 estiver especificado no campo do mês, a atualização está programada para abril, julho e outubro (ou seja, a cada 3 meses, começando com o quarto mês do ano). O mesmo cronograma é mantido nos anos seguintes. Ou seja, a atualização não está programada para ser executada em janeiro (3 meses após a execução de outubro).

    Nota

    • Atualmente, a expressão cron avalia apenas em relação ao fuso horário especificado. Alterar o valor do parâmetro TIMEZONE para a conta (ou definir o valor no nível do usuário ou da sessão) não altera o fuso horário para a atualização.

    • A expressão cron define todos os tempos de execução válidos para a atualização. O Snowflake tenta atualizar grupos secundários com base nesse cronograma; no entanto, qualquer tempo de execução válido é ignorado se uma execução anterior não tiver sido concluída antes do próximo tempo de execução válido começar.

    • Quando tanto um dia específico do mês como um dia da semana são incluídos na expressão cron, a atualização é programada em dias que satisfaçam o dia do mês ou o dia da semana. Por exemplo, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' programa uma atualização no horário 0AM em qualquer dia de 10 a 20 e também em qualquer terça-feira ou quinta-feira fora dessas datas.

  • num MINUTE

    Especifica um intervalo (em minutos) de tempo de espera entre as atualizações. Aceita apenas números inteiros positivos.

    Também oferece suporte à sintaxe num M.

    Para evitar ambiguidade, um tempo de intervalo base é definido:

    • Quando o objeto é criado (usando CREATE <objeto>) ou

    • Quando um intervalo diferente é definido (usando ALTER <objeto> … SET REPLICATION_SCHEDULE)

    O tempo de intervalo base inicia o contador de intervalo a partir da hora atual do relógio. Por exemplo, se um valor INTERVAL de 10 estiver definido e a atualização for habilitada às 9:03h AM, a atualização será executada às 9:13h AM, 9:23h AM e assim por diante. Note que fazemos o melhor para assegurar precisão absoluta, mas apenas garantimos que as atualização não sejam executadas antes que seu intervalo definido ocorra (por exemplo, no exemplo atual, a tarefa poderia ser executada primeiro às 9:14h AM, mas definitivamente não será executada às 9:12h AM).

    Nota

    O valor máximo suportado é 11520 (8 dias). Se o cronograma de replicação tiver um valor num MINUTE maior, a operação de atualização nunca será executada.

Parâmetros do grupo de replicação secundário

secondary_name

Especifica o identificador do grupo de replicação secundário. O identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas. Para obter mais detalhes, consulte Requisitos para identificadores.

Os identificadores do grupo de replicação secundário (secondary_name) e do grupo de replicação primário (name) podem ser idênticos, mas isso não é obrigatório.

AS REPLICA OF org_name.source_account_name.name

Especifica o identificador do grupo de replicação primário a partir do qual será criado um grupo de replicação secundário.

org_name

Nome de sua organização no Snowflake.

source_account_name

Conta de origem da qual você está permitindo a replicação e dos objetos especificados.

name

Identificador do grupo de failover primário na conta de origem.

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

CREATE REPLICATION GROUP

Conta

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

MONITOR

Banco de dados

Para adicionar um banco de dados a um grupo de replicação, a função ativa deve ter o privilégio MONITOR sobre o banco de dados.

OWNERSHIP

Compartilhamento

Para adicionar um compartilhamento a um grupo de replicação, a função ativa deve ter o privilégio OWNERSHIP sobre a ação.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Identificadores de grupos de failover e grupos de replicação em uma conta devem ser únicos.

  • Um banco de dados só pode ser adicionado a um grupo de replicação ou failover.

  • Compartilhamentos de entrada (compartilhamentos de provedores) não podem ser adicionados a um grupo de replicação ou failover.

  • Para obter o conjunto de contas em sua organização que estão habilitadas para replicação, use SHOW REPLICATION ACCOUNTS.

  • Para obter a lista de grupos de replicação e failover em sua organização, use SHOW REPLICATION GROUPS. A coluna allowed_accounts lista todas as contas de destino habilitadas para replicação de objetos a partir de uma conta de origem.

  • Se houver objetos de conta (por exemplo, usuários ou funções) em uma conta de destino que você não deseja descartar durante a replicação, use a função de sistema SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME para aplicar um identificador global a objetos criados por outros meios que não sejam a replicação. Para obter mais informações, consulte Aplicação de IDs globais a objetos criados por scripts em contas de destino antes de criar um grupo de replicação.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Executado na conta de origem

Criar um grupo de replicação chamado myrg na conta de origem e permitir a replicação do banco de dados db1 e compartilhar s1 da conta de origem para a conta myaccount2 para atualizar automaticamente a cada 10 minutos:

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

Executado na conta de destino

Criar um grupo de replicação na conta de destino como uma réplica do grupo de replicação myrg na conta de origem:

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