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.
Ao configurar um job de replicação para um banco de dados, o job faz um snapshot inicial das tabelas de origem. Para garantir a consistência dos dados, coloque bloqueios nessas tabelas.
Após o snapshot inicial, as mudanças incrementais na origem são capturadas e aplicadas ao destino do BigQuery como parte do processo de replicação contínuo.
SQL Server
Para capturar mudanças nas tabelas de origem em um banco de dados do SQL Server, o job de replicação usa um conector do Debezium. Durante a
snapshotting fase,
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 por 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 | Completo. |
exclusive |
Bloqueio exclusivo em todas as tabelas | Completo. |
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 snapshot. Ele
impede que outras transações modifiquem as linhas atuais e pode
permitir a inserção de novos registros (consulte
a escalonamento de bloqueio).
A replicação com isolamento de snapshot é recomendada se já estiver ativada no banco 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 controle de versões de linhas no mecanismo de banco de dados do SQL Server antes de ativá-la.
Como alternativa, use o modo de isolamento read_committed, que não bloqueia as tabelas durante a fase de snapshot.
read_committed
Ativar o isolamento de snapshot em um job de replicação
Ative o isolamento de snapshot no banco de dados do SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Substitua
DATABASE_NAMEpelo nome do banco de dados do SQL Server.Defina o argumento de execução
snapshot.isolation.modecomosnapshot. Para mais informações, consulte Transmitir um argumento de execução para um job de replicação.
MySQL
Para capturar mudanças nas tabelas de origem em um banco de dados MySQL, o job de replicação usa um conector do Debezium. Durante a
snapshotting fase,
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 ao ler os esquemas de banco de dados e outros metadados. Em seguida, o conector busca todas as linhas por meio de 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 em bancos de dados MySQL em execução no Cloud SQL, replique da réplica em vez do banco de dados transacional.
Mudar o comportamento de bloqueio durante o snapshot do MySQL
- Para mudar o comportamento de bloqueio de snapshot no banco de dados MySQL, defina o argumento de execução, a propriedade
snapshot.locking.mode, como um valor de modo de bloqueio apropriado.
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 a versão 1.3 do conector do Debezium.
Fontes da Oracle no Cloud Data Fusion
A replicação de fontes da Oracle no Cloud Data Fusion é feita pelo Datastream. O Datastream não bloqueia tabelas.
A seguir
- Saiba mais sobre replicação.