Gunakan Data Transmission Service (DTS) untuk mengalirkan perubahan data dari kluster PolarDB for MySQL ke topik Message Queue for Apache Kafka secara real time. DTS menangkap dataset penuh awal dan semua perubahan inkremental berikutnya, sehingga konsumen Kafka Anda selalu mutakhir dengan data sumber.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki kluster PolarDB for MySQL. Lihat Beli kluster pay-as-you-go atau Beli kluster langganan.
Memiliki instans Message Queue for Apache Kafka dengan topik yang telah dibuat untuk menerima data yang disinkronkan. Lihat Langkah 1: Buat topik.
Memberikan izin baca pada objek yang akan disinkronkan kepada akun database yang digunakan oleh DTS.
Batasan
Persyaratan database sumber
Tabel harus memiliki PRIMARY KEY atau Kendala UNIK dengan semua bidang bernilai unik. Tanpa ini, destinasi mungkin berisi catatan duplikat.
Jika Anda mengganti nama tabel atau kolom di database destinasi, satu tugas dapat menyinkronkan hingga 1.000 tabel. Untuk jumlah tabel yang lebih banyak, konfigurasikan beberapa tugas atau sinkronkan seluruh database.
Jika Anda perlu menyinkronkan data inkremental, binary logging harus diaktifkan dan parameter
loose_polar_log_binharus diatur ke on. Lihat Aktifkan binary logging dan Modifikasi parameter.
Mengaktifkan binary logging pada kluster PolarDB for MySQL akan dikenai biaya penyimpanan untuk file log biner.
Node read-only dari kluster sumber tidak dapat dimasukkan dalam tugas sinkronisasi.
DTS secara berkala mengeksekusi
CREATE DATABASE IF NOT EXISTS \`test\`pada database sumber untuk memajukan posisi log biner. Ini merupakan perilaku yang diharapkan.
Periode retensi log biner
Periode retensi log biner yang tidak mencukupi menyebabkan DTS kehilangan posisinya, yang dapat mengganggu tugas dan menyebabkan inkonsistensi data.
| Jenis tugas | Periode retensi minimum |
|---|---|
| Hanya sinkronisasi data inkremental | 24 jam |
| Sinkronisasi data penuh + inkremental | 7 hari |
Setelah sinkronisasi data penuh selesai, Anda dapat mengatur periode retensi menjadi lebih dari 24 jam. Pastikan Anda mengatur periode retensi log biner sesuai persyaratan di atas. Jika tidak, SLA DTS tidak menjamin keandalan atau kinerja layanan.
Batas ukuran catatan tunggal
Kafka menolak catatan yang lebih besar dari 10 MB. Jika baris sumber melebihi batas ini, DTS tidak dapat menulisnya dan tugas akan terganggu.
Untuk menangani tabel dengan bidang besar, gunakan salah satu pendekatan berikut:
Kecualikan tabel tersebut sepenuhnya dari objek tugas.
Sertakan tabel tersebut tetapi tambahkan kondisi filter untuk mengecualikan kolom dengan bidang besar.
Jika Anda telah menambahkan tabel dengan bidang besar, hapus dari objek yang dipilih, tambahkan kembali, lalu atur kondisi filternya.
Operasi DDL selama sinkronisasi
Jangan menjalankan pt-online-schema-change pada tabel sumber saat tugas sedang berjalan — hal ini dapat menyebabkan sinkronisasi gagal.
Kami menyarankan agar Anda hanya menggunakan DTS untuk menulis data ke database destinasi. Hal ini mencegah inkonsistensi data antara database sumber dan destinasi. Jika DTS adalah satu-satunya penulis ke database destinasi, Anda dapat menggunakan Data Management (DMS) untuk melakukan operasi DDL tanpa lock pada tabel sumber. Jika Anda menggunakan alat selain DTS untuk menulis data ke database destinasi, kehilangan data dapat terjadi di database destinasi saat Anda menggunakan DMS untuk melakukan operasi DDL Online.
Topologi sinkronisasi yang didukung
Satu-ke-satu
Satu-ke-banyak
Banyak-ke-satu
Bertingkat (cascade)
Untuk detailnya, lihat Topologi sinkronisasi.
Operasi SQL yang dapat disinkronkan
| Jenis | Pernyataan |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
| DDL | CREATE VIEW, ALTER VIEW, DROP VIEW |
| DDL | CREATE PROCEDURE, ALTER PROCEDURE, DROP PROCEDURE |
| DDL | CREATE FUNCTION, DROP FUNCTION, CREATE TRIGGER, DROP TRIGGER |
| DDL | CREATE INDEX, DROP INDEX |
Buat tugas sinkronisasi
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Login ke Konsol DMS.
Di bilah navigasi atas, klik DTS.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Anda juga dapat langsung menuju halaman Tugas Sinkronisasi Data di Konsol DTS baru. Navigasi konsol dapat berbeda tergantung mode tata letak Anda. Lihat Mode simple untuk detailnya.
Langkah 2: Pilih wilayah
Dari daftar drop-down di samping Tugas Sinkronisasi Data, pilih wilayah tempat instans sinkronisasi akan berada.
Di Konsol DTS baru, pilih wilayah di bilah navigasi atas.
Langkah 3: Konfigurasi database sumber dan destinasi
Klik Create Task. Tinjau batasan yang ditampilkan di bagian atas halaman sebelum melanjutkan, lalu konfigurasikan koneksi sumber dan destinasi.
Source Database
| Parameter | Deskripsi |
|---|---|
| Nama Tugas | Dihasilkan otomatis. Tentukan nama deskriptif untuk mengidentifikasi tugas — tidak perlu unik. |
| Pilih Instans | Pilih instans yang sudah ada untuk menggunakan kembali pengaturannya, atau konfigurasikan koneksi baru. |
| Jenis Database | Pilih PolarDB for MySQL. |
| Metode Akses | Pilih Alibaba Cloud Instance. |
| Wilayah Instans | Wilayah kluster PolarDB for MySQL sumber. |
| Replikasi Data Antar Akun Alibaba Cloud | Pilih No untuk sinkronisasi dalam akun yang sama. |
| ID Kluster PolarDB | ID kluster sumber. |
| Akun Database | Akun dengan izin baca pada objek yang akan disinkronkan. |
| Password Database | Password untuk akun database. |
| Enkripsi | Pilih Non-encrypted atau SSL-encrypted sesuai kebutuhan keamanan Anda. Untuk menggunakan SSL, aktifkan enkripsi SSL pada kluster terlebih dahulu. |
Destination Database
| Parameter | Deskripsi |
|---|---|
| Select Instance | Pilih instans yang sudah ada untuk menggunakan kembali pengaturannya, atau konfigurasikan koneksi baru. |
| Database Type | Pilih Kafka. |
| Access Method | Pilih Express Connect, VPN Gateway, or Smart Access Gateway. |
| Instance Region | Wilayah dari instans Kafka tujuan. |
| Connected VPC | ID virtual private cloud (VPC) dari instans Kafka. Untuk menemukannya: buka Konsol Message Queue for Apache Kafka, buka halaman detail instans, lalu lihat pada bagian Configuration Information. |
| IP Address | Alamat IP dari Default Endpoint instans Kafka. Untuk menemukannya: pada halaman detail instans, lihat di bagian Endpoint Information. |
| Port Number | Port layanan dari instans Kafka. Default: 9092. |
| Database Account | Akun Kafka. Biarkan kosong jika tipe instans adalah VPC Instance. |
| Database Password | Password akun Kafka. Biarkan kosong jika tipe instans adalah VPC Instance. |
| Kafka Version | Versi dari instans Kafka tujuan. |
| Encryption | Pilih Non-encrypted atau SCRAM-SHA-256. |
| Topic | Topik yang menerima data yang disinkronkan. Pilih dari daftar drop-down. |
| Topic That Stores DDL Information | Topik untuk menyimpan paket event DDL. Jika dibiarkan kosong, informasi DDL akan disimpan di topik yang sama dengan data. |
| Use Kafka Schema Registry | Pilih Yes untuk menggunakan Kafka Schema Registry dalam penyimpanan skema Avro. Jika dipilih, masukkan URL atau alamat IP Schema Registry. Pilih No untuk melewati langkah ini. |
Message Queue for Apache Kafka tidak dapat dipilih langsung sebagai tipe instans. Hubungkan ke endpoint Kafka self-managed melalui Express Connect, VPN Gateway, atau Smart Access Gateway.
Langkah 4: Uji konektivitas
Jika destinasi menggunakan daftar putih, tambahkan Blok CIDR server DTS terlebih dahulu. Lihat Tambahkan Blok CIDR server DTS ke pengaturan keamanan database on-premises.
Klik Test Connectivity and Proceed.
Langkah 5: Pilih objek dan konfigurasi pengaturan
| Parameter | Deskripsi |
|---|---|
| Tahapan Tugas | Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization untuk menangkap dataset awal sebelum mengalirkan perubahan. |
| Mode Pemrosesan Tabel yang Bentrok | Precheck and Report Errors: gagal dalam pemeriksaan awal jika destinasi memiliki tabel dengan nama yang sama seperti sumber — gunakan opsi ini untuk menghindari penimpaan tak terduga. Ignore Errors and Proceed: melewati pemeriksaan bentrok. Jika skema database sumber dan destinasi sama dan catatan data memiliki nilai primary key yang sama dengan catatan yang sudah ada di destinasi: selama sinkronisasi data penuh, DTS tidak menyinkronkan catatan tersebut dan catatan yang sudah ada di destinasi dipertahankan; selama sinkronisasi data inkremental, DTS menyinkronkan catatan tersebut dan catatan yang sudah ada di destinasi ditimpa. Jika skema berbeda, inisialisasi data mungkin gagal — hanya beberapa kolom yang disinkronkan atau tugas gagal. |
| Format Data di Kafka | DTS Avro: data diserialisasi menggunakan skema DTS Avro. Lihat definisi skema di GitHub. Canal JSON: data disimpan dalam format Canal JSON. Lihat referensi format Canal JSON. |
| Kebijakan pengiriman data ke partisi Kafka | Pilih kebijakan perutean partisi berdasarkan kebutuhan pengurutan dan throughput Anda. Lihat Tentukan kebijakan untuk migrasi data ke partisi Kafka. |
| Kapitalisasi nama objek di instans destinasi | Mengontrol huruf besar/kecil nama database, tabel, dan kolom dalam pesan Kafka. Default mengikuti kebijakan default DTS. Lihat Tentukan kapitalisasi nama objek. |
| Objek Sumber | Pilih tabel dari panel Source Objects dan klik ikon panah untuk memindahkannya ke Selected Objects. Hanya tabel yang dapat dipilih. |
| Objek yang Dipilih | Klik kanan objek untuk mengganti namanya atau memfilter operasi SQL tertentu. Klik Batch Edit untuk mengganti nama beberapa objek sekaligus. Untuk memfilter baris, klik kanan objek dan tentukan kondisi WHERE. |
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings.
| Parameter | Deskripsi |
|---|---|
| Atur Peringatan | Pilih Yes untuk menerima notifikasi ketika tugas gagal atau latensi sinkronisasi melebihi ambang batas. Tentukan ambang batas dan kontak peringatan. |
| Waktu Coba Ulang untuk Koneksi Gagal | Berapa lama DTS mencoba ulang koneksi yang gagal sebelum menandai tugas sebagai gagal. Rentang: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas berbagi sumber atau destinasi yang sama, waktu coba ulang terpendek di antara tugas-tugas tersebut yang berlaku. |
| Konfigurasi ETL | Pilih Yes untuk mentransformasi data selama sinkronisasi. Masukkan pernyataan pemrosesan di editor kode. Lihat Konfigurasi ETL. |
| Apakah akan menghapus operasi SQL pada tabel heartbeat dari tugas maju dan balik | Yes: DTS tidak menulis operasi tabel heartbeat ke sumber. Latensi sinkronisasi mungkin ditampilkan. No: DTS menulis operasi tabel heartbeat ke sumber. Hal ini dapat memengaruhi backup fisik dan kloning database sumber. |
Langkah 7: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
DTS menjalankan pemeriksaan awal sebelum tugas dapat dimulai. Untuk setiap item yang gagal:
Klik View Details untuk melihat penyebabnya.
Perbaiki masalah tersebut dan klik Precheck Again.
Untuk item peringatan (non-blocking):
Perbaiki masalah jika memungkinkan.
Untuk melewati: klik Confirm Alert Details di samping item tersebut, klik Ignore, klik OK, lalu klik Precheck Again.
Mengabaikan item peringatan dapat menyebabkan inkonsistensi data dan mengekspos bisnis Anda terhadap risiko.
Langkah 8: Beli instans
Tunggu hingga tingkat keberhasilan pemeriksaan awal mencapai 100%, lalu klik Next: Purchase Instance.
Pilih Instance Class berdasarkan throughput sinkronisasi yang Anda butuhkan. Lihat Spesifikasi instans sinkronisasi data.
Langkah 9: Mulai tugas
Baca dan centang kotak Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start.
Tugas akan muncul di daftar tugas. Pantau progres dan latensi sinkronisasinya dari sana.
Catatan penggunaan
Sebelum menyinkronkan data, evaluasi dampaknya terhadap kinerja database sumber dan destinasi. Jalankan sinkronisasi selama jam sepi untuk mengurangi dampak tersebut. Selama sinkronisasi data penuh awal, DTS menggunakan sumber daya baca dan tulis database sumber dan destinasi, yang dapat meningkatkan beban pada server database.
Selama sinkronisasi data penuh, DTS melakukan operasi INSERT konkuren yang dapat menyebabkan fragmentasi tabel di destinasi. Ruang tabel destinasi mungkin lebih besar daripada sumber setelah sinkronisasi penuh selesai.
Kami menyarankan agar Anda hanya menggunakan DTS untuk menulis data ke database destinasi. Jika alat selain DTS menulis ke topik Kafka destinasi secara bersamaan, operasi DDL tanpa lock melalui DMS dapat menyebabkan kehilangan data di destinasi.
Langkah berikutnya
Petakan nama objek — ganti nama tabel atau kolom saat ditulis ke destinasi.
Gunakan kondisi SQL untuk memfilter data — sinkronkan subset baris menggunakan kondisi WHERE.
Konfigurasi pemantauan dan peringatan — atur notifikasi untuk kegagalan tugas dan lonjakan latensi.
Format data kluster Kafka — pahami skema pesan lengkap yang ditulis ke topik Kafka.