Ketika aplikasi downstream Anda memerlukan aliran perubahan database secara real-time—untuk pemrosesan berbasis event, pengindeksan pencarian, atau analitik—menyalurkan data perubahan mentah dari PolarDB-X 2.0 ke Apache Kafka melepas ketergantungan antara produsen dan konsumen tanpa mengubah aplikasi Anda. Data Transmission Service (DTS) menangkap operasi INSERT, UPDATE, dan DELETE dari binlog sumber dan mengirimkannya ke topik Kafka Anda sehingga konsumen downstream selalu memiliki tampilan data terkini.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans PolarDB-X 2.0 yang kompatibel dengan MySQL 5.7
Instans Message Queue for Apache Kafka dengan versi yang didukung oleh DTS — lihat Ikhtisar skenario sinkronisasi data
Ruang penyimpanan tersedia di instans Kafka yang melebihi ukuran total data dari instans PolarDB-X sumber
Topik Kafka yang telah dibuat untuk menerima data yang disinkronkan — lihat Langkah 1: Buat topik
Batasan
Persyaratan database sumber
Tabel harus memiliki PRIMARY KEY atau kendala UNIQUE, dan semua field harus unik. Tanpa ini, destinasi mungkin berisi catatan duplikat.
Jika Anda memilih tabel sebagai objek untuk disinkronkan dan perlu mengganti nama tabel atau kolom di destinasi, satu tugas mendukung maksimal 5.000 tabel. Untuk lebih dari 5.000 tabel, bagi pekerjaan tersebut ke beberapa tugas atau sinkronkan seluruh database saja.
Hanya tabel yang dapat dipilih sebagai objek untuk disinkronkan. View, trigger, dan prosedur tersimpan tidak disinkronkan.
DTS tidak menyinkronkan kunci asing. Operasi cascade dan delete pada sumber tidak direplikasi ke destinasi.
Persyaratan log biner
Aktifkan binary logging di Konsol PolarDB-X 2.0 dan atur binlog_row_image ke full. Jika parameter ini tidak diatur dengan benar, pemeriksaan awal gagal dan tugas tidak dapat dimulai. Lihat Pengaturan parameter.
Atur periode retensi log biner berdasarkan jenis sinkronisasi Anda:
| Jenis sinkronisasi | Periode retensi minimum |
|---|---|
| Sinkronisasi inkremental saja | 24 jam |
| Sinkronisasi penuh + inkremental | 7 hari (dapat dikurangi menjadi lebih dari 24 jam setelah sinkronisasi penuh selesai) |
Jika log biner di-purge sebelum DTS memprosesnya, masalah berikut dapat terjadi:
Kegagalan tugas: DTS mungkin gagal memperoleh log biner dan tugas bisa gagal.
Loss data atau inkonsistensi: Dalam kondisi luar biasa, inkonsistensi atau loss data dapat terjadi. DTS tidak dapat menjamin keandalan dan kinerja yang didefinisikan dalam Perjanjian Tingkat Layanan (SLA). Atur periode retensi sesuai persyaratan di atas sebelum memulai tugas.
Batasan lainnya
Hindari menggunakan pt-online-schema-change untuk operasi DDL pada objek yang disinkronkan — hal ini dapat menyebabkan tugas gagal.
Selama sinkronisasi, tulis hanya ke instans Kafka destinasi melalui DTS. Menulis melalui alat lain dapat menyebabkan inkonsistensi data. Menggunakan DMS untuk operasi DDL online saat alat lain juga menulis ke destinasi dapat mengakibatkan loss data.
Jika sebuah tabel diganti namanya dan nama barunya tidak termasuk dalam objek yang disinkronkan, DTS akan berhenti menyinkronkan tabel tersebut. Untuk melanjutkan, tambahkan objek tersebut ke tugas sinkronisasi dan pilih ulang objek yang akan disinkronkan.
Sinkronisasi data penuh awal menggunakan operasi INSERT konkuren, yang menyebabkan fragmentasi tabel di destinasi. Setelah sinkronisasi penuh, ukuran ruang tabel destinasi lebih besar daripada sumber.
Jalankan tugas selama jam sepi bila memungkinkan. Sinkronisasi data penuh meningkatkan beban baca dan tulis pada database sumber maupun destinasi.
DTS secara berkala memperbarui tabeldts_health_check.ha_health_checkdi database sumber untuk memajukan posisi log biner.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya — lihat Ikhtisar penagihan |
Batas ukuran catatan tunggal
Kafka menolak catatan yang lebih besar dari 10 MB. Jika baris sumber melebihi batas ini, DTS tidak dapat menulis catatan tersebut dan tugas terganggu. Untuk menghindarinya, kecualikan kolom dengan field besar saat mengonfigurasi tugas. Jika tabel dengan field besar sudah termasuk, hapus dari daftar objek, tambahkan kembali, dan atur kondisi filter untuk mengecualikan kolom yang terlalu besar.
Operasi SQL yang dapat disinkronkan
Hanya DML: INSERT, UPDATE, dan DELETE.
Arahkan informasi DDL ke topik Kafka terpisah menggunakan parameter Topic That Stores DDL Information.
Konfigurasi tugas sinkronisasi
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik DTS.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Opsi navigasi bervariasi tergantung mode konsol. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS. Atau, buka langsung halaman Tugas Sinkronisasi Data.
Langkah 2: Pilih wilayah
Di sisi kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi Anda berada.
Di Konsol DTS baru, pilih wilayah di bilah navigasi atas.
Langkah 3: Konfigurasi database sumber dan destinasi
Klik Create Task. Di halaman yang muncul, konfigurasikan parameter berikut.
Umum
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas ini. DTS memberikan nama default. Gunakan nama deskriptif agar tugas mudah diidentifikasi — tidak perlu unik. |
Source Database
Sebelum mengonfigurasi database sumber, pastikan akun database memiliki izin yang diperlukan: SELECT, REPLICATION CLIENT, dan REPLICATION SLAVE pada objek yang akan disinkronkan. Untuk detail pemberian izin, lihat Alat sinkronisasi data untuk PolarDB-X.
| Parameter | Nilai / deskripsi |
|---|---|
| Select an existing DMS database instance | (Opsional) Pilih instans yang sudah ada untuk mengisi otomatis parameter di bawah. |
| Database Type | Pilih PolarDB-X 2.0. |
| Connection Type | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instans PolarDB-X sumber berada. |
| Instance ID | ID instans PolarDB-X sumber. |
| Database Account | Akun dengan izin SELECT, REPLICATION CLIENT, dan REPLICATION SLAVE. |
| Database Password | Password untuk akun database. |
Destination Database
| Parameter | Nilai / deskripsi |
|---|---|
| Select an existing DMS database instance | (Opsional) Pilih instans yang sudah ada untuk mengisi otomatis parameter di bawah. |
| Database Type | Pilih Kafka. |
| Connection Type | Pilih Express Connect, VPN Gateway, or Smart Access Gateway. DTS tidak mencantumkan Message Queue for Apache Kafka sebagai metode akses langsung — konfigurasikan sebagai cluster Kafka yang dikelola sendiri. |
| Instance Region | Wilayah tempat instans Kafka destinasi berada. |
| Connected VPC | ID virtual private cloud (VPC) dari instans Kafka. Untuk menemukan ID VPC, buka Konsol Kafka, buka halaman detail instans, dan periksa bagian Configuration Information. |
| IP Address or Domain Name | Alamat IP dari field Default Endpoint instans Kafka. Temukan ini di halaman detail instans di bawah Basic Information. |
| Port Number | Port layanan Kafka. Default: 9092. |
| Database Account | Akun Kafka. Biarkan kosong jika instans terhubung melalui VPC — otentikasi tidak diperlukan untuk instans terhubung-VPC. |
| Database Password | Password untuk akun Kafka. Biarkan kosong untuk instans terhubung-VPC. |
| Kafka Version | Versi instans Kafka destinasi. |
| Encryption | Pilih Non-encrypted atau SCRAM-SHA-256 sesuai kebutuhan keamanan Anda. |
| Topic | Topik yang menerima data yang disinkronkan. |
| Topic That Stores DDL Information | (Opsional) Topik terpisah untuk informasi DDL. Jika dibiarkan kosong, informasi DDL ditulis ke topik yang ditentukan di Topic. |
| Use Kafka Schema Registry | Apakah akan menggunakan Kafka Schema Registry untuk manajemen skema Avro. Pilih Yes dan masukkan URL Schema Registry jika diperlukan; jika tidak, pilih No. |
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR-nya ke daftar putih instans database Alibaba Cloud dan aturan grup keamanan database yang di-host di Elastic Compute Service (ECS). Untuk database on-premises atau pihak ketiga, tambahkan blok CIDR DTS secara manual. Lihat Tambahkan blok CIDR server DTS ke pengaturan keamanan database on-premises.
Menambahkan blok CIDR DTS ke daftar putih atau grup keamanan membuka potensi risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti menggunakan kredensial kuat, membatasi port yang terbuka, mengaudit panggilan API, meninjau aturan daftar putih secara berkala, dan lebih memilih koneksi jaringan pribadi (Express Connect, VPN Gateway, atau Smart Access Gateway) daripada akses internet publik.
Langkah 5: Konfigurasi objek dan pengaturan sinkronisasi
| Parameter | Deskripsi |
|---|---|
| Synchronization Type | Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization untuk menyinkronkan data historis sebagai garis dasar bagi sinkronisasi inkremental. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): pemeriksaan awal gagal jika sumber dan destinasi memiliki tabel dengan nama identik. Gunakan pemetaan nama objek untuk menyelesaikan konflik nama tanpa menghapus tabel destinasi. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan destinasi yang sudah ada tetap dipertahankan; selama sinkronisasi inkremental, catatan tersebut ditimpa. Gunakan dengan hati-hati — inkonsistensi data mungkin terjadi. |
| Data Format in Kafka | Format yang digunakan DTS untuk menulis catatan ke topik Kafka. Pilih berdasarkan cara konsumen downstream membaca data: DTS Avro (direkomendasikan untuk pipeline yang menerapkan skema): catatan diserialisasi menggunakan definisi skema DTS Avro. Lihat skema di GitHub. Canal Json: catatan disimpan dalam format JSON Canal. Lihat Format data kluster Kafka untuk referensi field lengkap. |
| Policy for Shipping Data to Kafka Partitions | Mengontrol partisi Kafka mana yang dituju setiap catatan. Lihat Tentukan kebijakan untuk migrasi data ke partisi Kafka. Penting Fitur ini tidak didukung jika database sumber adalah database PolarDB-X 1.0. |
| Capitalization of Object Names in Destination Instance | Menentukan kapitalisasi nama database, tabel, dan kolom di destinasi. DTS default policy dipilih secara default. Lihat Tentukan kapitalisasi nama objek di instans destinasi. |
| Source Objects | Pilih kolom, tabel, atau database dari Source Objects dan klik ikon panah untuk memindahkannya ke Selected Objects. |
| Selected Objects | Untuk mengganti nama satu objek, klik kanan objek tersebut. Lihat Petakan nama satu objek. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Petakan beberapa nama objek sekaligus. Untuk memilih operasi SQL mana yang akan disinkronkan untuk objek tertentu, klik kanan objek tersebut dan pilih operasinya. Untuk memfilter baris, klik kanan objek dan tentukan klausa WHERE. Lihat Atur kondisi filter. |
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings.
| Parameter | Deskripsi |
|---|---|
| Set Alerts | Konfigurasikan peringatan untuk diberi tahu saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Pilih Yes untuk mengonfigurasi ambang batas dan kontak peringatan. Lihat Konfigurasi pemantauan dan peringatan untuk tugas DTS baru. |
| Specify the retry time range for failed connections | Berapa lama DTS mencoba koneksi yang gagal sebelum menandai tugas sebagai gagal. Rentang: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas berbagi database sumber atau destinasi yang sama, waktu retry terpendek di antara mereka yang berlaku. Biaya instans DTS tetap berjalan selama periode retry. |
| Configure ETL | Apakah akan menerapkan transformasi ekstrak, transformasi, dan muat (ETL). Pilih Yes untuk memasukkan pernyataan pemrosesan. Lihat Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. |
| Whether to delete SQL operations on heartbeat tables of forward and reverse tasks | Mengontrol apakah DTS menulis operasi heartbeat ke database sumber. Yes: penulisan heartbeat ditekan; pembacaan latensi sinkronisasi mungkin tidak akurat. No: penulisan heartbeat terjadi, yang mungkin memengaruhi backup fisik atau kloning database sumber. |
Langkah 7: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter API yang digunakan untuk membuat tugas ini, arahkan kursor ke tombol tersebut dan klik Preview OpenAPI parameters.
DTS menjalankan pemeriksaan awal sebelum memulai tugas. Jika suatu item gagal:
Klik View Details di sebelah item yang gagal, perbaiki masalahnya, lalu klik Precheck Again.
Jika suatu item menampilkan peringatan yang dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore di kotak dialog. Mengabaikan peringatan dapat menyebabkan inkonsistensi data — lanjutkan dengan hati-hati.
Langkah 8: Beli instans
Tunggu hingga pemeriksaan awal mencapai 100%, lalu klik Next: Purchase Instance.
| Parameter | Deskripsi |
|---|---|
| Billing Method | Subscription: bayar di muka. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam. Hapus instans saat tidak lagi diperlukan untuk menghentikan biaya. |
| Resource Group | Kelompok sumber daya untuk instans. Default ke default resource group. Lihat Apa itu Resource Management?. |
| Instance Class | Spesifikasi sinkronisasi, yang menentukan throughput. Lihat Spesifikasi instansi sinkronisasi data. |
| Subscription Duration | Tersedia saat Subscription dipilih. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. |
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms, lalu klik Buy and Start.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.