Tingkat isolasi dalam replikasi

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

  1. Aktifkan isolasi snapshot di database SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Ganti DATABASE_NAME dengan nama database SQL Server.

  2. Tetapkan argumen runtime snapshot.isolation.mode ke snapshot. 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