Níveis de isolamento na replicação

Esta página descreve como ativar o isolamento de transações em instantâneos da base de dados do Microsoft SQL Server e do MySQL em tarefas de replicação do Cloud Data Fusion.

Quando configura uma tarefa de replicação para uma base de dados, a tarefa tira uma imagem instantânea inicial das tabelas de origem. Para garantir a consistência dos dados, coloque bloqueios nessas tabelas.

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

SQL Server

Para captar alterações nas tabelas de origem numa base de dados do SQL Server, a tarefa de replicação usa um conetor do Debezium. Durante a fase snapshotting, o Debezium adquire bloqueios de acordo com o snapshot.isolation.mode configurado.

A tabela seguinte compara os modos de isolamento suportados para tarefas de replicação.

Modo de isolamento Fechaduras adquiridas Consistência dos dados
read_uncommitted Nenhum Não.
read_committed Bloqueios partilhados num lote de linhas de cada vez Parcial. Um registo adicionado pode aparecer duas vezes: uma vez na captura de ecrã inicial e outra na fase de streaming.
repeatable_read
(predefinição)
Bloqueios partilhados em todas as linhas Parcial. Um registo adicionado pode aparecer duas vezes: uma vez na captura de ecrã 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 o artigo Defina o nível de isolamento da transação.

Por predefinição, o modo de isolamento de instantâneo é repeatable_read. Este modo assume bloqueios partilhados em todos os dados que são lidos durante a fase de criação de instantâneos. Impede que outras transações modifiquem as linhas existentes e pode permitir a inserção de novos registos (consulte escalonamento de bloqueios).

A replicação com isolamento de instantâneos é recomendada se já estiver ativada na base de dados de origem, porque oferece consistência total dos dados sem bloquear as tabelas. Se não estiver ativada, saiba mais sobre o impacto dos níveis de isolamento baseados no controlo de versões de linhas no motor de base de dados do SQL Server antes de a ativar.

Em alternativa, use o modo de isolamento read_committed, que não bloqueia as tabelas durante a fase de criação de instantâneos.

Ative o isolamento de instantâneos numa tarefa de replicação

  1. Ative o isolamento de instantâneo na base de dados do SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Substitua DATABASE_NAME pelo nome da base de dados do SQL Server.

  2. Defina o argumento de tempo de execução snapshot.isolation.mode como snapshot. Para mais informações, consulte o artigo Transmita um argumento de tempo de execução a uma tarefa de replicação.

MySQL

Para captar alterações nas tabelas de origem numa base de dados MySQL, a tarefa de replicação usa um conetor Debezium. Durante a fase snapshotting, o Debezium adquire bloqueios de acordo com o snapshot.locking.mode configurado.

Por predefinição, o modo de bloqueio de instantâneo é minimal. Neste modo, o conetor mantém o bloqueio de leitura global para a parte inicial da imagem instantânea à medida que lê os esquemas da base de dados e outros metadados. Em seguida, o conetor obtém todas as linhas através de uma leitura consistente, usando a transação REPEATABLE READ, que não bloqueia as tabelas.

Para evitar bloqueios, defina o modo como none.

Em alternativa, para evitar bloqueios em bases de dados MySQL executadas no Cloud SQL, faça a replicação a partir da réplica em vez da base de dados transacional.

Altere o comportamento de bloqueio durante a cópia instantânea para o MySQL

  • Para alterar o comportamento de bloqueio de instantâneos na base de dados MySQL, defina o argumento de tempo de execução, a propriedade snapshot.locking.mode, para um valor de modo de bloqueio adequado.

Para mais informações, consulte o artigo Transmita um argumento do Debezium a uma tarefa de replicação.

Limitações

  • A replicação no Cloud Data Fusion suporta a versão 1.3 do conector Debezium.

Origens Oracle no Cloud Data Fusion

A replicação de origens Oracle no Cloud Data Fusion é suportada pelo Datastream. O fluxo de dados não bloqueia tabelas.

O que se segue?