Introdução à replicação de banco de dados em múltiplas contas

Este recurso permite replicar bancos de dados entre contas Snowflake (dentro da mesma organização) e manter os objetos de banco de dados e os dados armazenados sincronizados. Há suporte para a replicação de banco de dados em várias regiões e plataformas de nuvem.

Nota

A Snowflake recomenda o uso do Introdução à replicação e failover em várias contas para replicar bancos de dados. Os grupos de replicação e failover permitem a replicação de vários bancos de dados e outros objetos de conta com consistência pontual para os objetos no grupo. Para obter uma lista completa da disponibilidade do recurso e objetos suportados, consulte Introdução à replicação e failover em várias contas.

Neste tópico:

O que é um banco de dados primário?

A replicação pode ser habilitada para qualquer banco de dados permanente ou transitório existente. A ativação da replicação designa o banco de dados como um banco de dados primário. Qualquer número de bancos de dados em uma conta pode ser designado como banco de dados primário. Da mesma forma, um banco de dados primário pode ser replicado para qualquer número de contas em sua organização. Isso envolve a criação de um banco de dados secundário como uma réplica de um banco de dados primário especificado em cada uma das contas de destino. Essas contas estão normalmente localizadas em outras regiões, na mesma plataforma ou em uma plataforma de nuvem diferente, ou podem estar na mesma região que a conta de origem.

Todas as operações DML/DDL são executadas no banco de dados primário. Cada banco de dados secundário somente leitura pode ser atualizado periodicamente com um instantâneo do banco de dados primário, replicando todos os dados, bem como as operações DDL nos objetos de banco de dados (ou seja, esquemas, tabelas, exibições etc.).

Visão geral da replicação de banco de dados

Para obter a lista completa de objetos de banco de dados replicados, consulte Objetos de banco de dados replicados.

Outros objetos em uma conta

A replicação de banco de dados tem suporte somente para bancos de dados. Outros tipos de objetos em uma conta podem ser replicados com a replicação de contas. Para obter a lista completa dos objetos compatíveis com a replicação de contas, consulte Objetos replicados.

Controle de acesso

Os privilégios concedidos sobre objetos de banco de dados não são replicados em um banco de dados secundário. Isso inclui concessões de privilégios sobre objetos de banco de dados existentes, bem como concessões sobre objetos futuros (ou seja, concessões futuras).

As concessões de privilégios podem ser replicadas com a replicação de contas.

Parâmetros

Os parâmetros de conta não são replicados com a replicação de banco de dados. Os parâmetros de conta podem ser replicados com a replicação de contas.

Os parâmetros dos objetos que são definidos no nível do esquema ou do objeto do esquema são replicados:

Parâmetro

Objetos

DATA_RETENTION_TIME_IN_DAYS

esquema, tabela

DEFAULT_DDL_COLLATION

esquema, tabela

MAX_DATA_EXTENSION_TIME_IN_DAYS

esquema, tabela

PIPE_EXECUTION_PAUSED [1]

esquema, canal

QUOTED_IDENTIFIERS_IGNORE_CASE

esquema, tabela

A replicação de parâmetros só será aplicável a objetos no banco de dados (esquema, tabela) e somente se o parâmetro for explicitamente definido usando CREATE <objeto> <parâmetro> ou ALTER <objeto> … SET <parâmetro>. Os parâmetros de nível do banco de dados não são replicados.

Os parâmetros definidos explicitamente nos objetos do banco de dados primário substituem os parâmetros definidos nos objetos do banco de dados secundário. Por exemplo, se o banco de dados primário tiver um esquema s1 com DATA_RETENTION_TIME_IN_DAYS definido como 10 e o banco de dados secundário tiver DATA_RETENTION_TIME_IN_DAYS definido como 1 no nível do banco de dados, DATA_RETENTION_TIME_IN_DAYS para o esquema s1 no banco de dados secundário será definido como 10 após a replicação.

Os parâmetros explicitamente definidos no nível do banco de dados em bancos de dados secundários não serão substituídos. Por exemplo, se o parâmetro do banco de dados secundário DATA_RETENTION_TIME_IN_DAYS for explicitamente definido como 1 e o parâmetro do banco de dados primário DATA_RETENTION_TIME_IN_DAYS for explicitamente definido como 10, DATA_RETENTION_TIME_IN_DAYS para o banco de dados secundário permanecerá definido como 1 após a replicação.

[1] Note que objetos PIPE não são replicados. Se o parâmetro PIPE_EXECUTION_PAUSED for definido no nível do esquema no banco de dados primário, ele será replicado para o banco de dados secundário. Quando o banco de dados secundário for promovido a banco de dados primário no caso de um failover e um canal for criado, a configuração dos parâmetros entrará em vigor.

Replicação do banco de dados para contas de edições anteriores

Se uma das seguintes condições for verdadeira, o Snowflake exibirá uma mensagem de erro quando um banco de dados local for promovido para servir como um banco de dados primário:

  • O banco de dados primário está em uma conta Business Critical (ou superior), mas uma ou mais contas aprovadas para replicação estão em edições anteriores. O Business Critical Edition é destinado a contas Snowflake com dados extremamente confidenciais.

  • O banco de dados primário está em uma conta Business Critical (ou superior) e um contrato de parceiro comercial assinado está em vigor para armazenar dados PHI na conta segundo as regulamentações HIPAA e HITRUST CSF, mas nenhum contrato desse tipo está em vigor para uma ou mais contas aprovadas para replicação, independentemente de serem contas Business Critical (ou superiores).

Esse comportamento é implementado 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.

Um administrador de conta pode substituir este comportamento padrão incluindo a cláusula IGNORE EDITION CHECK ao executar a instrução ALTER DATABASE … ENABLE REPLICATION TO ACCOUNTS. Se IGNORE EDITION CHECK estiver definido, o banco de dados primário poderá ser replicado para as contas especificadas em qualquer edição do Snowflake.

Limitações atuais da replicação de banco de dados

  • Não é possível replicar os bancos de dados criados a partir de compartilhamentos.

  • A operação de atualização falhará se um banco de dados primário contiver qualquer um dos seguintes itens:

    • Tabela de eventos

    • Tabela externa

Uma operação de atualização ou replicação de banco de dados falha se o banco de dados primário incluir um fluxo com um objeto de origem incompatível. A operação também falha se o objeto de origem para qualquer fluxo tiver sido descartado.

Os fluxos somente de anexação não são suportados em objetos de origem replicados.

  • O comando CREATE DATABASE … AS REPLICA não oferece suporte para a cláusula WITH TAG.

    Esta cláusula não é suportada porque o banco de dados secundário é somente leitura. Se seu banco de dados primário especificar a cláusula WITH TAG, remova a cláusula antes de criar o banco de dados secundário. Para verificar se seu banco de dados tem a cláusula WITH TAG, chame a função GET_DDL em sua conta Snowflake e especifique o banco de dados primário no argumento da função. Se uma tag for definida no banco de dados, a saída da função incluirá uma instrução ALTER DATABASE … SET TAG.

  • A replicação de estágio e canal não é suportada. Você pode replicar estágios e canais usando replicação de conta. Para obter mais informações, consulte Replicação de histórico de carregamento, canal e estágio.

  • Segredos não são suportados. Você pode replicar os segredos usando um grupo de replicação ou failover.