Níveis de isolamento na replicação

Nesta página, descrevemos como ativar o isolamento da transação em snapshots de banco de dados do Microsoft SQL Server e do MySQL em jobs de replicação do Cloud Data Fusion.

Quando você configura um job de replicação para um banco de dados, ele tira um snapshot inicial das tabelas de origem. Para garantir a consistência dos dados, coloque bloqueios nessas tabelas.

Após o snapshot inicial, as alterações incrementais na origem são capturadas e aplicadas ao destino do BigQuery como parte do processo de replicação em andamento.

SQL Server

Para capturar alterações nas tabelas de origem em um banco de dados do SQL Server, o job de replicação usa um conector do Debezium. Durante a fase snapshotting, o Debezium adquire bloqueios de acordo com o snapshot.isolation.mode configurado.

A tabela a seguir compara os modos de isolamento compatíveis com jobs de replicação.

Modo de isolamento Bloqueios adquiridos Consistência de dados
read_uncommitted Nenhum Não.
read_committed Bloqueios compartilhados em um lote de linhas de cada vez Parcial. Um registro adicionado pode aparecer duas vezes: uma no snapshot inicial e outra na fase de streaming.
repeatable_read
(padrão)
Bloqueios compartilhados em todas as linhas Parcial. Um registro adicionado pode aparecer duas vezes: uma no snapshot inicial e outra na fase de streaming.
snapshot Nenhum Cheio.
exclusive Bloqueio exclusivo em todas as tabelas Cheio.

Para mais informações sobre os modos de isolamento, consulte Definir o nível de isolamento da transação.

Por padrão, o modo de isolamento de snapshot é repeatable_read. Esse modo usa bloqueios compartilhados em todos os dados lidos durante a fase de criação do snapshot. Isso impede que outras transações modifiquem as linhas atuais e pode permitir a inserção de novos registros. Consulte Encaminhamento de bloqueios.

A replicação com isolamento de snapshot é recomendada se já estiver ativada no banco de dados de origem, porque fornece consistência de dados total sem bloquear as tabelas. Se não estiver ativado, saiba mais sobre o impacto dos níveis de isolamento baseados em versões de linha no SQL Server Database Engine antes de ativá-lo.

Como alternativa, use o modo de isolamento read_committed, que não bloqueia as tabelas durante a fase de criação do snapshot.

Ativar o isolamento de snapshot em um job de replicação

  1. Ative o isolamento de snapshot no banco de dados do SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Substitua DATABASE_NAME pelo nome do banco de dados do SQL Server.

  2. Defina o argumento do ambiente de execução snapshot.isolation.mode como snapshot. Para mais informações, consulte Transmitir um argumento de ambiente de execução para um job de replicação.

MySQL

Para capturar alterações nas tabelas de origem em um banco de dados MySQL, o job de replicação usa um conector do Debezium. Durante a fase snapshotting, o Debezium adquire bloqueios de acordo com o snapshot.locking.mode configurado.

Por padrão, o modo de bloqueio de snapshot é minimal. Nesse modo, o conector mantém o bloqueio de leitura global para a parte inicial do snapshot enquanto lê os esquemas do banco de dados e outros metadados. Em seguida, o conector busca todas as linhas com uma leitura consistente, usando a transação REPEATABLE READ, que não bloqueia as tabelas.

Para evitar bloqueios, defina o modo como none.

Como alternativa, para evitar bloqueios nos bancos de dados MySQL em execução no Cloud SQL, replique a réplica em vez do banco de dados transacional.

Alterar o comportamento de bloqueio durante o snapshot do MySQL

  • Para alterar o comportamento de bloqueio de snapshots no banco de dados MySQL, defina o argumento do ambiente de execução, a propriedade snapshot.locking.mode, como um valor apropriado para o modo de bloqueio.

Para mais informações, consulte Transmitir um argumento do Debezium para um job de replicação.

Limitações

  • A replicação no Cloud Data Fusion é compatível com o Debezium Connector versão 1.3.

Origens do Oracle no Cloud Data Fusion

A replicação de origens do Oracle no Cloud Data Fusion usa a tecnologia do Datastream. O Datastream não bloqueia tabelas.

A seguir