PolarDB-X mendukung fitur log biner dalam dua mode. Topik ini menjelaskan kedua mode tersebut beserta skenario penggunaannya.
Ikhtisar
MySQL menyediakan file log biner untuk mencatat perubahan data. File log biner dapat dianggap sebagai antrian pesan yang menyimpan perubahan data tambahan secara rinci berdasarkan urutan kronologis. Sistem atau alat hilir mengonsumsi perubahan dalam antrian untuk menyinkronkan data dari MySQL secara real-time. Mekanisme ini juga dikenal sebagai capture data change (CDC).
PolarDB-X adalah layanan basis data terdistribusi yang kompatibel dengan ekosistem MySQL. Sebuah instance PolarDB-X menggunakan komponen CDC untuk menyediakan log perubahan yang kompatibel dengan format log biner MySQL. Fitur terdistribusi PolarDB-X, seperti penskalaan instans, transaksi terdistribusi, dan indeks global, tidak tercermin dalam log perubahan. Dengan cara ini, Anda dapat menggunakan instance PolarDB-X seperti menggunakan basis data MySQL mandiri.
PolarDB-X menyediakan log biner dalam dua mode, yang dapat digunakan secara bersamaan.
Mode aliran tunggal: Mode ini juga disebut Global Binlog. Dalam mode ini, log biner dari semua node data digabungkan ke dalam antrian global. Aliran log tunggal yang menjamin integritas dan urutan transaksi disediakan. Mode aliran tunggal memberikan jaminan lebih kuat untuk konsistensi data. Misalnya, dalam skenario transfer, saldo konsisten dapat diperoleh kapan saja di basis data MySQL hilir yang berlangganan log biner aliran tunggal dari instance PolarDB-X.
Mode multi-aliran: Mode ini juga disebut Binlog-X. Dalam mode ini, log biner dari semua node data tidak digabungkan ke dalam antrian global. Sebagai gantinya, log-log tersebut didistribusikan ke aliran log yang berbeda menggunakan algoritma hash. Mode multi-aliran mengorbankan integritas transaksi sampai batas tertentu, tetapi meningkatkan skalabilitas secara signifikan. Bottleneck titik-tunggal yang dihadapi oleh log biner aliran tunggal dalam kluster besar dapat diselesaikan.
Mode aliran tunggal
Log biner mentah dari semua node data diurutkan dan digabungkan menjadi satu antrian, dengan detail internal dihapus. Dengan cara ini, PolarDB-X menyediakan aliran log yang kompatibel dengan format log biner dan protokol dump MySQL. Secara default, fitur log biner aliran tunggal diaktifkan ketika Anda membeli instance PolarDB-X.
Catatan penggunaan
Node master dan slave dari komponen CDC mereplikasi file log biner satu sama lain untuk memastikan konsistensi data antara kedua node. Sistem hilir mengonsumsi log biner berdasarkan nama file dan posisi. Nama file dan posisi tidak berubah meskipun terjadi pergantian antara node master dan slave.
Transaksi terdistribusi hanya dapat digabungkan jika kebijakan transaksi diatur ke Timestamp Oracle (TSO). Jika tidak, hanya konsistensi akhir yang dapat dijamin untuk data. Secara default, kebijakan transaksi di PolarDB-X adalah TSO.
Jika Anda perlu memodifikasi nilai kunci partisi untuk baris data, pastikan bahwa nilai tersebut dimodifikasi dalam transaksi terdistribusi yang kebijakan transaksinya diatur ke TSO. Dengan cara ini, acara DELETE dicatat dalam log biner lebih awal daripada acara INSERT, memastikan konsistensi data. Secara spesifik, untuk memodifikasi nilai kunci partisi dengan konsistensi data yang dijamin, Anda harus terlebih dahulu mengatur kebijakan transaksi ke TSO, lalu melakukan salah satu operasi berikut:
Eksekusi pernyataan UPDATE untuk memodifikasi nilai kunci partisi.
Eksekusi pernyataan REPLACE untuk memodifikasi nilai kunci partisi.
Mulai transaksi secara eksplisit untuk mengeksekusi pernyataan DELETE, modifikasi nilai kunci partisi, lalu eksekusi pernyataan INSERT.
Mode multi-aliran
Log biner multi-aliran sepenuhnya kompatibel dengan format log biner dan protokol dump MySQL. Setiap aliran log biner dapat dianggap sebagai aliran log dari basis data MySQL mandiri. Pernyataan SQL seperti CHANGE MASTER dan SHOW BINLOG EVENTS dapat dieksekusi pada setiap aliran log untuk mengonsumsi atau melihat log biner.
Secara default, fitur log biner multi-aliran dinonaktifkan. Untuk menggunakan fitur ini, Anda harus mengaktifkannya di konsol. Anda dapat membuat beberapa grup multi-aliran untuk instance PolarDB-X. Setiap grup multi-aliran berisi beberapa aliran log. Grup yang berbeda diisolasi satu sama lain. Anda dapat mengonfigurasi parameter seperti jumlah aliran log dan tingkat pemisahan untuk grup multi-aliran sesuai kebutuhan bisnis Anda.
Tingkat pemisahan
Fitur log biner multi-aliran menyediakan tiga jenis tingkat pemisahan. Anda dapat mengonfigurasi tingkat pemisahan berdasarkan skenario bisnis Anda saat membuat grup multi-aliran.
Tingkat basis data
Log biner didistribusikan ke aliran log yang berbeda berdasarkan nilai hash yang dihitung menggunakan nama basis data. Dengan cara ini, log biner dari sebuah basis data selalu dirutekan ke aliran log yang sama secara berurutan. Tingkat pemisahan ini cocok untuk skenario di mana sebuah instance PolarDB-X memiliki sejumlah besar basis data. Jika transaksi tidak melibatkan operasi lintas-basis data, integritas transaksi dapat dijamin dalam log biner yang dipisahkan pada tingkat basis data.
Tingkat tabel
Log biner didistribusikan ke aliran log yang berbeda berdasarkan nilai hash yang dihitung menggunakan nama tabel. Dengan cara ini, log biner dari sebuah tabel selalu dirutekan ke aliran log yang sama secara berurutan. Tingkat pemisahan ini cocok untuk skenario di mana sejumlah besar tabel ada, dan operasi pada tabel tunggal, seperti operasi DML dan DDL, diharapkan tetap berurutan dalam aliran log biner.
Tingkat rekaman
Log biner didistribusikan ke aliran log yang berbeda berdasarkan nilai hash yang dihitung menggunakan nilai kunci utama baris data. Dengan cara ini, log biner dari baris data selalu dirutekan ke aliran log yang sama secara berurutan. Tingkat pemisahan ini cocok untuk skenario di mana log biner diharapkan sepenuhnya tersebar dan tidak perlu tetap berurutan untuk basis data atau tabel. Untuk menggunakan tingkat pemisahan ini, pastikan bahwa tabel data berisi kunci utama. Log biner dari tabel yang tidak berisi kunci utama langsung dibuang.
Anda dapat mengonfigurasi tingkat pemisahan di lapisan layanan serta lapisan basis data dan tabel. Setelah tingkat pemisahan dikonfigurasi di suatu lapisan, Anda tidak dapat mengubah tingkat pemisahan. Jika tidak, log biner yang sama muncul di aliran log yang berbeda, menyebabkan ketidaksesuaian data. Sebelum membuat grup multi-aliran, kami sarankan Anda merencanakan tingkat pemisahan berdasarkan kebutuhan bisnis Anda.
Lapisan layanan
Tingkat pemisahan yang dikonfigurasi di lapisan layanan adalah tingkat pemisahan default dari grup multi-aliran. Jika Anda tidak mengonfigurasi tingkat pemisahan untuk basis data atau tabel, tingkat pemisahan yang dikonfigurasi di lapisan layanan digunakan.
Lapisan basis data dan tabel
Anda dapat mengonfigurasi tingkat pemisahan secara terpisah untuk basis data atau tabel. Tingkat pemisahan yang dikonfigurasi untuk basis data atau tabel menggantikan tingkat pemisahan yang dikonfigurasi di lapisan layanan, memenuhi persyaratan manajemen yang berbeda.
Catatan penggunaan
Setelah membuat grup multi-aliran, Anda tidak dapat mengubah jumlah aliran log. Rencanakan jumlah aliran log sebelum membuat grup multi-aliran. Kami sarankan Anda mengonfigurasi jumlah aliran log agar lebih besar atau sama dengan jumlah node data.
Setelah membuat grup multi-aliran, Anda tidak dapat mengubah tingkat pemisahan yang berlaku. Kami sarankan Anda merencanakan tingkat pemisahan sebelum membuat grup multi-aliran.
Jika Anda ingin mengonfigurasi tingkat pemisahan secara terpisah untuk tabel baru, konfigurasikan tingkat pemisahan sebelum data ditulis ke tabel.
Anda dapat
renametabel setelah mengatur tingkat pemisahan ke tabel. PolarDB-X selalu membagi log berdasarkan nama tabel awal.Jika tingkat pemisahan diatur ke tabel, log biner dari tabel besar mungkin dirutekan ke beberapa aliran log tertentu, menyebabkan masalah skew data. Dalam hal ini, Anda dapat mengonfigurasi tingkat pemisahan secara terpisah untuk tabel besar.
Jika Anda ingin memodifikasi jumlah aliran log atau tingkat pemisahan yang berlaku, Anda dapat membuat grup multi-aliran lain untuk menggantikan grup multi-aliran asli. Dalam hal ini, beberapa operasi O&M perlu dilakukan di sistem hilir untuk menyesuaikan konsumsi log.
Jika tingkat pemisahan diatur ke rekaman, tabel data berisi kendala UNIQUE, dan terjadi pertukaran kunci unik, ketidaksesuaian data mungkin terjadi. Misalnya, nilai a dari kunci unik name berturut-turut dipegang oleh baris data yang nilai id-nya adalah 1 dan 2. Urutan eksekusi pernyataan
delete(id=1,name=1)daninsert(id=2,name=a)di basis data tujuan tidak pasti. Jika pernyataaninsert(id=2,name=2)dieksekusi sebelum pernyataandelete(id=1,name=1), konflik tulis terjadi. Dalam hal ini, kami sarankan Anda mengatur tingkat pemisahan ke tabel.
Konsumsi transparan
Komponen CDC secara prioritas menyimpan file log biner di disk lokal, dan dapat mengunggah file tersebut ke penyimpanan jarak jauh seperti Object Storage Service (OSS) secara real-time. Secara umum, file disimpan di disk lokal untuk periode waktu yang singkat, dan di penyimpanan jarak jauh untuk periode waktu yang lama, seperti 15 hari. Komponen CDC menyediakan fitur konsumsi transparan yang menutupi perbedaan penyimpanan antara disk lokal dan penyimpanan jarak jauh. Sistem hilir dapat mengakses file log biner di penyimpanan jarak jauh tanpa adaptasi apa pun.
CDC V2.0.0 dan versi lebih baru mendukung fitur konsumsi transparan.
Redundansi geo aktif
Selain menggunakan sistem eksternal sebagai penyimpanan data, komponen CDC dari PolarDB-X mendukung penyebaran bisnis dalam arsitektur redundansi geo aktif. Misalnya, pengguna diberikan izin tulis pada pusat data yang berbeda berdasarkan wilayah tempat pengguna berada. Dalam hal ini, pengguna hanya dapat menulis data di pusat data yang ditentukan. Untuk operasi baca, setiap pengguna dapat membaca data dari replika terdekat dengan area geografis tempat pengguna berada. PolarDB-X menggunakan komponen CDC untuk menyinkronkan data ke replika ketika data ditulis ke pusat data.