Esta página descreve como ativar o isolamento de transações nos snapshots do banco de dados do Microsoft SQL Server e do MySQL em trabalhos de replicação do Cloud Data Fusion.
Quando você configura um job de replicação para um banco de dados, o job leva uma 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 aplicada ao destino do BigQuery como parte da replicação contínua de desenvolvimento de software.
SQL Server
Para capturar alterações nas tabelas de origem em um banco de dados do SQL Server, a
o job de replicação usa um conector do Debezium. Durante a
fase snapshotting
,
o Debezium adquire bloqueios de acordo com a
snapshot.isolation.mode
configurada.
A tabela a seguir compara os modos de isolamento compatíveis com os jobs de replicação do Compute Engine.
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 vez no 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 vez no e outra na fase de streaming. |
snapshot |
Nenhum | Cheio. |
exclusive |
Bloqueio exclusivo em todas as tabelas | Cheia. |
Para mais informações sobre 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 leva
de bloqueios compartilhados em todos os dados lidos durante a fase de criação de snapshots. Ela
impede que outras transações modifiquem as linhas existentes e pode
possivelmente permitir a inserção de novos registros (consulte
encaminhamento 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. Caso não esteja ativada, saiba mais sobre o impacto do Níveis de isolamento com base em controle de versão de linha no mecanismo de banco de dados do SQL Server antes de ativá-lo.
Como alternativa, use o modo de isolamento read_committed
, que
não bloqueia as tabelas durante a fase de geração de snapshots.
Ativar o isolamento de snapshots em um job de replicação
Ative o isolamento de snapshots no banco de dados do SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Substitua
DATABASE_NAME
pelo nome do SQL Server. no seu banco de dados.Defina o argumento de execução
snapshot.isolation.mode
comosnapshot
. Para mais informações, consulte Transmita um argumento de ambiente 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 o
snapshotting
,
O Debezium adquire bloqueios de acordo com o
snapshot.locking.mode
Por padrão, o modo de bloqueio de snapshots é minimal
. Nesse modo, o
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. Depois, o conector
busca todas as linhas por meio de uma leitura consistente, usando o método REPEATABLE READ
transação, o 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 o código Réplica em vez do banco de dados transacional.
Alterar o comportamento de bloqueio durante o snapshot para MySQL
- Para alterar o comportamento de bloqueio de snapshots no banco de dados MySQL, defina o ambiente de execução
a propriedade
snapshot.locking.mode
a um argumento apropriado 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 fontes Oracle no Cloud Data Fusion tem a tecnologia da o Datastream. O Datastream não bloqueia tabelas.
A seguir
- Saiba mais sobre a replicação.