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
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.Defina o argumento de tempo de execução
snapshot.isolation.mode
comosnapshot
. 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?
- Saiba mais sobre a replicação.