Halaman ini menjelaskan cara mengaktifkan isolasi transaksi di snapshot database MySQL dan Microsoft SQL Server dalam tugas replikasi Cloud Data Fusion.
Saat Anda menyiapkan tugas replikasi untuk database, tugas tersebut akan mengambil snapshot awal tabel sumber. Untuk memastikan konsistensi data, tempatkan kunci pada tabel tersebut.
Setelah snapshot awal, perubahan inkremental di sumber akan diambil dan diterapkan ke target BigQuery sebagai bagian dari proses replikasi yang sedang berlangsung.
SQL Server
Untuk menangkap perubahan pada tabel sumber di database SQL Server, tugas replikasi menggunakan konektor Debezium. Selama
fase snapshotting
,
Debezium memperoleh kunci sesuai dengan
snapshot.isolation.mode
yang dikonfigurasi.
Tabel berikut membandingkan mode isolasi yang didukung untuk tugas replikasi.
Mode isolasi | Kunci yang diperoleh | Konsistensi data |
---|---|---|
read_uncommitted |
Tidak ada | Tidak. |
read_committed |
Kunci bersama pada batch baris sekaligus | Sebagian. Data yang ditambahkan dapat muncul dua kali: sekali dalam snapshot awal dan sekali dalam fase streaming. |
repeatable_read (default) |
Kunci bersama di semua baris | Sebagian. Data yang ditambahkan dapat muncul dua kali: sekali dalam snapshot awal dan sekali dalam fase streaming. |
snapshot |
Tidak ada | Penuh. |
exclusive |
Kunci eksklusif di semua tabel | Penuh. |
Untuk mengetahui informasi selengkapnya tentang mode isolasi, lihat Menetapkan tingkat isolasi transaksi.
Secara default, mode isolasi snapshot adalah repeatable_read
. Mode ini mengambil
kunci bersama pada semua data yang dibaca selama fase pembuatan snapshot. Tindakan ini
mencegah transaksi lain mengubah baris yang ada, dan berpotensi
memungkinkan penyisipan data baru (lihat
eskalasi kunci).
Replikasi dengan isolasi snapshot direkomendasikan jika sudah diaktifkan di database sumber karena memberikan konsistensi data penuh tanpa mengunci tabel. Jika tidak diaktifkan, pelajari lebih lanjut dampak tingkat isolasi berbasis pembuatan versi baris di Database Engine SQL Server sebelum Anda mengaktifkannya.
Sebagai alternatif, gunakan mode isolasi read_committed
, yang
tidak mengunci tabel selama fase pembuatan snapshot.
Mengaktifkan isolasi snapshot dalam tugas replikasi
Aktifkan isolasi snapshot di database SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Ganti
DATABASE_NAME
dengan nama database SQL Server.Tetapkan argumen runtime
snapshot.isolation.mode
kesnapshot
. Untuk informasi selengkapnya, lihat Teruskan argumen runtime ke tugas replikasi.
MySQL
Untuk merekam perubahan pada tabel sumber di database MySQL, tugas replikasi menggunakan konektor Debezium. Selama
fase snapshotting
,
Debezium memperoleh kunci sesuai dengan
snapshot.locking.mode
yang dikonfigurasi.
Secara default, mode penguncian snapshot adalah minimal
. Dalam mode ini, konektor memegang kunci baca global untuk bagian awal snapshot
saat membaca skema database dan metadata lainnya. Kemudian, konektor
akan mengambil semua baris melalui operasi baca yang konsisten, menggunakan transaksi
REPEATABLE READ
, yang tidak mengunci tabel.
Untuk mencegah kunci apa pun, tetapkan mode ke none
.
Sebagai alternatif, untuk mencegah kunci pada database MySQL yang berjalan di Cloud SQL, lakukan replikasi dari Replica, bukan database transaksional.
Mengubah perilaku penguncian selama snapshot untuk MySQL
- Untuk mengubah perilaku penguncian snapshot di database MySQL, tetapkan argumen
runtime, properti
snapshot.locking.mode
, ke nilai mode penguncian yang sesuai.
Untuk informasi selengkapnya, lihat Teruskan argumen Debezium ke tugas replikasi.
Batasan
- Replikasi di Cloud Data Fusion mendukung Konektor Debezium versi 1.3.
Sumber Oracle di Cloud Data Fusion
Replikasi dari sumber Oracle di Cloud Data Fusion didukung oleh Datastream. Datastream tidak mengunci tabel.
Langkah selanjutnya
- Pelajari Replikasi lebih lanjut.