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 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

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