ALTER REPLICATION GROUP

Modifica as propriedades de um grupo de replicação existente.

A partir da conta de origem, você pode realizar as seguintes ações:

  • Renomear o grupo de replicação.

  • Redefinir a lista de tipos de objetos especificados habilitados para replicação.

  • Definir ou atualizar o cronograma de replicação para atualização automática de grupos de replicação secundários.

  • Adicionar ou remover objetos de conta dos seguintes tipos para ou de um grupo de replicação:

    • Bancos de dados

    • Compartilhamentos

    • Integrações de segurança

    • Integrações de API

    • Integrações de armazenamento

    • Integrações de acesso externo 1

    • Alguns tipos de integrações de notificação (consulte Replicação de integrações)

  • Adicionar ou remover contas alvo habilitadas para replicação.

  • Mover bancos de dados ou compartilhamentos de um grupo de replicação para outro grupo de replicação.

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.

A partir da conta de destino, você pode realizar as seguintes ações:

  • Atualizar os objetos na conta de destino a partir da conta de origem.

  • Suspender a replicação programada.

  • Retomar a replicação programada.

Consulte também:

CREATE REPLICATION GROUP, DROP REPLICATION GROUP, SHOW REPLICATION GROUPS

Sintaxe

Conta de origem

ALTER REPLICATION GROUP [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SET
  [ OBJECT_TYPES = <object_type> [ , <object_type> , ... ] ]
  [ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
  [ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
  [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
  [ ENABLE_ETL_REPLICATION = { TRUE | FALSE } ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SET
  OBJECT_TYPES = INTEGRATIONS [ , <object_type> , ... ]
  ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> ... ]
  [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <db_name> [ , <db_name> ,  ... ] TO ALLOWED_DATABASES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  MOVE DATABASES <db_name> [ , <db_name> ,  ... ] TO REPLICATION GROUP <move_to_rg_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <db_name> [ , <db_name> ,  ... ] FROM ALLOWED_DATABASES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <share_name> [ , <share_name> ,  ... ] TO ALLOWED_SHARES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  MOVE SHARES <share_name> [ , <share_name> ,  ... ] TO REPLICATION GROUP <move_to_rg_name>

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <share_name> [ , <share_name> ,  ... ] FROM ALLOWED_SHARES

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  ADD <org_name>.<target_account_name> [ , <org_name>.<target_account_name> ,  ... ] TO ALLOWED_ACCOUNTS
  [ IGNORE EDITION CHECK ]

ALTER REPLICATION GROUP [ IF EXISTS ] <name>
  REMOVE <org_name>.<target_account_name> [ , <org_name>.<target_account_name> ,  ... ] FROM ALLOWED_ACCOUNTS
Copy

Conta de destino

ALTER REPLICATION GROUP [ IF EXISTS ] <name> REFRESH

ALTER REPLICATION GROUP [ IF EXISTS ] <name> SUSPEND

ALTER REPLICATION GROUP [ IF EXISTS ] <name> RESUME
Copy

Parâmetros

Conta de origem

name

Especifica o identificador do grupo de replicação.

RENAME TO new_name

new_name

Especifica o novo identificador do grupo de replicação. O novo identificador não pode ser usado se o identificador já estiver sendo usado para uma replicação ou grupo de failover diferente.

Para obter mais detalhes, consulte Requisitos para identificadores.

SET ...

Especifica propriedades a serem definidas para o grupo de replicação (separadas por espaços em branco, vírgulas ou novas linhas).

OBJECT_TYPES = object_type [ , object_type , ... ]

Redefina a lista de tipos de objetos a serem replicados da conta de origem para a(s) conta(s) de destino.

Nota

Para banco de dados e objetos compartilhados:

  • Se DATABASES ou SHARES estiverem incluídos na lista OBJECT_TYPES e permanecerem na lista OBJECT_TYPES após a lista ser redefinida, a respectiva lista de objetos permitidos (ALLOWED_DATABASES ou ALLOWED_SHARES) permanecerá inalterada.

  • Se a lista OBJECT_TYPES for redefinida para adicionar ou remover DATABASES, a lista ALLOWED_DATABASES será definida como NULL.

  • Se a lista OBJECT_TYPES for redefinida para adicionar ou remover SHARES, a lista ALLOWED_SHARES será definida como NULL.

  • Use as cláusulas ADD, MOVE e REMOVE para modificar a lista de bancos de dados ou objetos de compartilhamento permitidos.

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 os objetos do banco de dados já tiverem sido incluídos na lista de tipos de objetos especificados, a lista ALLOWED_DATABASES permanecerá inalterada. Para modificar a lista de bancos de dados, use as cláusulas ADD, MOVE ou REMOVE.

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 os objetos do banco de compartilhamento já tiverem sido incluídos na lista de tipos de objetos especificados, a lista ALLOWED_SHARES permanecerá inalterada. Para modificar a lista de compartilhamentos, use as cláusulas ADD, MOVE ou REMOVE.

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.

2

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.

db_name

Especifica o identificador do banco de dados.

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.

share_name

Especifica o identificador do compartilhamento.

Nota

Se as listas ALLOWED_DATABASES ou ALLOWED_SHARES forem modificadas, todos os objetos que estavam anteriormente na lista e foram removidos serão descartados em qualquer conta de destino com um grupo de replicação secundário vinculado quando ocorrer a próxima operação de atualização.

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.

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.

ENABLE_ETL_REPLICATION = { TRUE | FALSE }

Especifica se a replicação de estágio, canal e histórico de carregamento deve ser ativada para esse grupo de replicação.

  • TRUE permite a replicação de estágios, canais e histórico de carregamento.

  • FALSE bloqueia a replicação de estágios, canais e histórico de carregamento.

Padrão: FALSE.

ADD db_name [ , db_name ,  ... ] TO ALLOWED_DATABASES

Especifica uma lista separada por vírgulas de bancos de dados a serem adicionados à lista de bancos de dados habilitados para replicação. Para adicionar um banco de dados, DATABASES deve ser incluído na lista de tipos de objetos especificados. Se a lista de tipos de objetos ainda não inclui DATABASES, você deve adicioná-lo.

db_name

Especifica o identificador do banco de dados.

MOVE DATABASES db_name [ , db_name ,  ... ] TO REPLICATION GROUP move_to_rg_name

Especifica uma lista separada por vírgulas de bancos de dados para passar de um grupo de replicação para outro grupo de replicação. O grupo de replicação para o qual os bancos de dados estão sendo movidos deve incluir DATABASES na lista de tipos de objetos especificados.

db_name

Especifica o identificador do banco de dados.

move_to_rg_name

Especifica o identificador do grupo de replicação para o qual os bancos de dados estão sendo movidos.

REMOVE db_name [ , db_name ,  ... ] FROM ALLOWED_DATABASES

Especifica uma lista separada por vírgulas de bancos de dados a serem removidos da lista de bancos de dados habilitados para replicação.

Nota

Quando você remove um banco de dados de um grupo de replicação primário, o banco de dados é descartado em qualquer conta de destino com um grupo de replicação secundário vinculado quando ocorre a próxima operação de atualização.

Para evitar a eliminação de bancos de dados na conta de destino, você pode eliminar o grupo de replicação secundário antes da próxima vez que o grupo de replicação primário modificado for replicado para a conta de destino. Quando você descarta o grupo de replicação secundário, os bancos de dados secundários somente leitura incluídos no grupo tornam-se bancos de dados autônomos de leitura e gravação na conta de destino.

ADD share_name [ , share_name ,  ... ] TO ALLOWED_SHARES

Especifica uma lista separada por vírgulas de compartilhamentos para a lista de compartilhamentos para replicação. Para adicionar uma ação, SHARES deve ser incluído na lista de tipos de objetos especificados. Se a lista de tipos de objetos ainda não inclui SHARES, você deve adicioná-lo.

share_name

Especifica o identificador do compartilhamento.

MOVE SHARES share_name [ , share_name ,  ... ] TO REPLICATION GROUP move_to_rg_name

Especifica uma lista separada por vírgulas de compartilhamentos para passar de um grupo de replicação para outro grupo de replicação. O grupo de replicação para o qual os compartilhamentos estão sendo movidos deve incluir SHARES na lista de tipos de objetos especificados.

share_name

Especifica o identificador do compartilhamento.

move_to_rg_name

Especifica o identificador do grupo de replicação para o qual os compartilhamentos estão sendo movidos.

REMOVE share_name [ , share_name ,  ... ] FROM ALLOWED_SHARES

Especifica uma lista separada por vírgulas de compartilhamentos a serem removidos da lista de compartilhamentos habilitados para replicação.

Nota

Quando você remove um compartilhamento de um grupo de replicação primário, o compartilhamento é descartado em qualquer conta de destino com um grupo de replicação secundário vinculado quando ocorre a próxima operação de atualização.

ADD org_name.target_account_name [ , org_name.target_account_name ,  ... ] TO ALLOWED_ACCOUNTS

Especifica uma lista separada por vírgulas de contas de destino a adicionar ao grupo de replicação primário para permitir a replicação e de objetos especificados na conta de origem para a conta de destino.

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.

REMOVE org_name.target_account_name [ , org_name.target_account_name ,  ... ] FROM ALLOWED_ACCOUNTS

Especifica uma lista separada por vírgulas de contas de destino a remover do grupo de replicação primário para desativar a replicação de objetos especificados na conta de origem para a conta de destino.

org_name

Nome de sua organização no Snowflake.

target_account_name

Conta de destino na qual você está desativando 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.

Conta de destino

name

Especifica o identificador do grupo de replicação.

REFRESH

Atualiza os objetos na conta de destino (atual) a partir da conta de origem.

SUSPEND

Suspender a atualização programada do grupo de replicação secundário (se o grupo de replicação primário tiver atualizações programadas definidas usando a propriedade REPLICATION_SCHEDULE).

Nota

Suspender a replicação programada não suspende uma operação de atualização que está atualmente em andamento. Isso suspende o cronograma para que nenhuma atualização adicional seja programada depois que a atual for concluída.

RESUME

Retomar a atualização programada do grupo de replicação secundário (se o grupo de replicação primário tiver atualizações programadas definidas usando a propriedade REPLICATION_SCHEDULE).

Notas de uso

  • Os seguintes privilégios mínimos são necessários:

    • Para atualizar um grupo de replicação secundário usando ALTER REPLICATION GROUP … REFRESH, a função principal ativa deve ter o privilégio OWNERSHIP ou REPLICATE no grupo de replicação.

    • Para fazer quaisquer outras mudanças no grupo de replicação, somente um usuário com uma função com o privilégio OWNERSHIP no grupo pode executar esse comando SQL.

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

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

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

  • Objetos que não sejam bancos de dados e compartilhamentos precisam estar no mesmo grupo de replicação.

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

  • Para mover bancos de dados ou compartilhamentos de um grupo de replicação (o grupo de origem) para outro grupo de replicação (o grupo de destino):

    • Ambos os grupos devem ser do mesmo tipo: REPLICATION GROUP.

    • Se o último banco de dados do grupo de origem for movido para outro grupo, a propriedade allowed_databases para o grupo de origem é definida como NULL. O mesmo comportamento se aplica aos compartilhamentos.

    • Se o grupo de destino não tiver o tipo de objeto que está sendo movido (databases ou shares) na lista object_types, ele deverá ser explicitamente adicionado ao grupo de destino antes de você mover os objetos.

  • Se os objetos de banco de dados ou de compartilhamento forem removidos de um grupo de replicação primário (usando o parâmetro REMOVE ou o parâmetro SET para modificar as listas ALLOWED_DATABASES ou ALLOWED_SHARES), esses objetos serão descartados em qualquer conta de destino com um grupo de replicação secundário vinculado quando ocorrer a próxima operação de atualização.

    Para evitar a eliminação desses objetos na conta de destino, você pode eliminar o grupo de replicação secundário antes da próxima vez que o grupo de replicação primário modificado for replicado para a conta de destino.

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

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

  • 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 a partir da conta de origem

Adicione myorg.myaccount3 à lista de contas de destino para as quais a replicação dos objetos especificados da conta de origem está habilitada:

ALTER REPLICATION GROUP myrg ADD myorg.myaccount3 TO ALLOWED_ACCOUNTS;
Copy

Redefina a lista de tipos de objetos para replicação na conta de origem:

ALTER REPLICATION GROUP myrg SET
  OBJECT_TYPES = DATABASES, SHARES;
Copy

Adicione o bancos de dados db1 à lista de bancos de dados habilitados para replicação:

ALTER REPLICATION GROUP myrg
  ADD db1 to ALLOWED_DATABASES;
Copy

Adicione o compartilhamento s2 à lista de compartilhamento habilitados para replicação:

ALTER REPLICATION GROUP myrg
  ADD s2 TO ALLOWED_SHARES;
Copy

Mova o banco de dados db1 para outro grupo de replicação, myrg2:

ALTER REPLICATION GROUP myrg
  MOVE DATABASES db1 TO REPLICATION GROUP myrg2;
Copy

Defina o tempo de atualização programado como 15 minutos:

ALTER REPLICATION GROUP myrg SET
  REPLICATION_SCHEDULE = '15 MINUTE';
Copy

Executado a partir da conta de destino

Atualize os objetos no grupo de replicação myrg na conta de destino:

ALTER REPLICATION GROUP myrg REFRESH;
Copy

Suspenda as atualizações automáticas:

ALTER REPLICATION GROUP myrg SUSPEND;
Copy