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 dari tabel sumber. Untuk memastikan konsistensi data, tempatkan kunci pada tabel tersebut.
Setelah snapshot awal, perubahan inkremental pada sumber akan diambil dan diterapkan ke target BigQuery sebagai bagian dari proses replikasi yang sedang berlangsung.
SQL Server
Untuk merekam perubahan dalam 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 dalam satu waktu | Sebagian. Kumpulan data yang ditambahkan dapat muncul dua kali: sekali pada snapshot awal dan sekali pada fase streaming. |
repeatable_read (default) |
Kunci bersama di semua baris | Sebagian. Kumpulan data yang ditambahkan dapat muncul dua kali: sekali pada snapshot awal dan sekali pada fase streaming. |
snapshot |
Tidak ada | Penuh. |
exclusive |
Kunci eksklusif di semua meja | Penuh. |
Untuk mengetahui informasi selengkapnya tentang mode isolasi, lihat Menetapkan tingkat isolasi transaksi.
Secara default, mode isolasi snapshot adalah repeatable_read
. Mode ini menggunakan kunci bersama pada semua data yang dibaca selama fase pembuatan snapshot. Tindakan ini
mencegah transaksi lain mengubah baris yang ada, dan berpotensi
mengizinkan penyisipan data baru (lihat
eskalasi kunci).
Replikasi dengan isolasi snapshot direkomendasikan jika sudah diaktifkan pada database sumber karena memberikan konsistensi data penuh tanpa mengunci tabel. Jika tidak diaktifkan, pelajari lebih lanjut dampak tingkat isolasi berbasis pembuatan versi baris pada SQL Server Database Engine 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.Setel argumen runtime
snapshot.isolation.mode
kesnapshot
. Untuk mengetahui informasi selengkapnya, lihat Meneruskan argumen runtime ke tugas replikasi.
MySQL
Untuk merekam perubahan dalam 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 akan menahan kunci baca global untuk bagian awal snapshot saat membaca skema database dan metadata lainnya. Kemudian, konektor akan mengambil semua baris melalui pembacaan yang konsisten, menggunakan transaksi REPEATABLE READ
, yang tidak mengunci tabel.
Untuk mencegah kunci, setel mode ke none
.
Sebagai alternatif, untuk mencegah penguncian pada database MySQL yang berjalan di Cloud SQL, buat 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 mengetahui informasi selengkapnya, lihat Meneruskan argumen Debezium ke tugas replikasi.
Batasan
- Replikasi di Cloud Data Fusion mendukung Debezium Connector versi 1.3.
Sumber Oracle di Cloud Data Fusion
Replikasi dari sumber Oracle di Cloud Data Fusion didukung oleh Datastream. Aliran data tidak mengunci tabel.
Langkah selanjutnya
- Pelajari lebih lanjut Replikasi.