Layanan Transmisi Data (Data Transmission Service/DTS) dapat mengalirkan data perubahan dari ApsaraDB RDS for MySQL ke ApsaraMQ for Kafka secara real time. Hal ini memungkinkan konsumen downstream—seperti pipeline analitik, layanan berbasis event, atau gudang data—bereaksi terhadap perubahan tingkat baris tanpa melakukan kueri langsung ke database sumber.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans ApsaraDB RDS for MySQL dan instans ApsaraMQ for Kafka. Untuk informasi tentang cara membuat instans RDS, lihat Buat instans ApsaraDB RDS for MySQL. Untuk kombinasi versi yang didukung, lihat Ikhtisar skenario sinkronisasi data.
Topik yang dibuat di instans Kafka tujuan untuk menerima data yang disinkronkan. Lihat Langkah 1: Buat topik.
Ruang penyimpanan kosong yang cukup di instans Kafka untuk menampung seluruh data dari instans RDS MySQL sumber.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Batasan
Persyaratan database sumber
Tabel yang akan disinkronkan harus memiliki PRIMARY KEY atau kendala UNIQUE tanpa nilai bidang duplikat. Jika tidak, tujuan mungkin berisi catatan duplikat.
Jika Anda mengganti nama tabel atau kolom selama sinkronisasi dan memilih tabel individual sebagai objek sinkronisasi, satu tugas mendukung hingga 1.000 tabel. Untuk menyinkronkan lebih banyak tabel, bagi ke beberapa tugas atau sinkronkan seluruh database.
Jangan menjalankan pernyataan DDL yang mengubah skema database atau tabel selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya menyebabkan tugas gagal.
DTS tidak menyinkronkan kunci asing. Operasi kaskade dan penghapusan pada database sumber tidak tercermin di tujuan.
Data yang dihasilkan oleh pemulihan backup fisik atau operasi kaskade tidak ditangkap atau disinkronkan selama tugas berjalan. Jika data ini hilang dari tujuan, hapus dan tambahkan kembali database serta tabel yang terpengaruh dalam objek sinkronisasi. Lihat Ubah objek yang akan disinkronkan.
Persyaratan binary logging:
| Jenis sumber | Persyaratan |
|---|---|
| ApsaraDB RDS for MySQL | Binary logging diaktifkan secara default. Atur binlog_row_image ke full. Lihat Ubah parameter instans. Simpan log biner selama minimal 3 hari (disarankan 7 hari). |
| MySQL yang dikelola sendiri | Aktifkan binary logging. Atur binlog_format ke row dan binlog_row_image ke full. Untuk kluster dual-primary, atur juga log_slave_updates ke ON. Lihat Buat akun untuk database MySQL yang dikelola sendiri dan konfigurasi binary logging. Simpan log biner selama minimal 7 hari. |
Jika DTS tidak dapat membaca log biner, tugas gagal dan ketidakkonsistenan data mungkin terjadi. Untuk mengatur periode retensi log biner RDS MySQL, lihat bagian Hapus file log biner.
MySQL 8.0.23 dan versi setelahnya — kolom tak terlihat (invisible columns):
Kolom tak terlihat tidak dapat disinkronkan dan datanya hilang. Untuk menjadikan kolom terlihat, jalankan:
ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;Tabel tanpa primary key eksplisit secara otomatis mendapatkan primary key tak terlihat. Jadikan primary key tersebut terlihat sebelum menyinkronkan. Lihat Invisible Columns dan Generated Invisible Primary Keys.
Batasan lainnya
Evaluasi dampak performa sebelum memulai. Sinkronisasi data penuh membaca dan menulis kedua database secara intensif. Jalankan sinkronisasi selama jam sepi untuk mengurangi beban.
Sinkronisasi data penuh dengan operasi INSERT bersamaan menyebabkan fragmentasi tabel di tujuan. Setelah sinkronisasi penuh selesai, ruang tabel tujuan lebih besar daripada sumber.
Jika Anda menyinkronkan tabel individual (bukan seluruh database), jangan gunakan pt-online-schema-change untuk operasi DDL online. Gunakan Data Management (DMS) sebagai gantinya.
Jangan menulis data dari sumber lain ke instans Kafka tujuan selama sinkronisasi. Melakukannya menyebabkan ketidakkonsistenan data.
Jika Anda melakukan penskalaan instans atau kluster Kafka tujuan selama sinkronisasi, restart setelahnya.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin di-restart dan parameter tugas mungkin dimodifikasi selama pemulihan.
ApsaraDB RDS for MySQL — batasan spesifik instans:
| Jenis instans | Batasan |
|---|---|
| EncDB diaktifkan | Sinkronisasi data penuh tidak didukung. |
| Transparent Data Encryption (TDE) diaktifkan | Sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental semuanya didukung. |
| RDS MySQL 5.6 hanya-baca (tanpa log transaksi) | Tidak dapat digunakan sebagai database sumber. |
Kasus khusus untuk MySQL yang dikelola sendiri
Melakukan failover primer/sekunder saat tugas sedang berjalan akan menyebabkan tugas gagal.
Jika tidak ada operasi DML yang dilakukan pada database sumber dalam waktu lama, pelaporan latensi sinkronisasi mungkin tidak akurat. Lakukan operasi DML pada database sumber untuk mengatur ulang nilai latensi. Jika Anda menyinkronkan seluruh database, buat tabel heartbeat yang diperbarui setiap detik.
DTS menjalankan
CREATE DATABASE IF NOT EXISTS 'test'di database sumber secara berkala untuk memajukan posisi file log biner.
Kasus khusus untuk ApsaraDB RDS for MySQL
DTS menjalankan
CREATE DATABASE IF NOT EXISTS 'test'di database sumber secara berkala untuk memajukan posisi file log biner.
Batas ukuran catatan tunggal
Ukuran maksimum catatan tunggal yang ditulis ke Kafka adalah 10 MB. Jika baris sumber melebihi batas ini, tugas DTS berhenti.
Untuk mengatasinya, kecualikan tabel dengan bidang besar dari objek sinkronisasi, atau gunakan kondisi filter untuk mengecualikan bidang yang terlalu besar. Jika tabel sudah termasuk, hapus, tambahkan kembali, dan tentukan kondisi filter yang mengecualikan bidang besar tersebut.
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah banyak-ke-satu
Untuk detailnya, lihat Topologi sinkronisasi.
Operasi SQL yang dapat disinkronkan
| Type | Operasi |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | CREATE TABLE, ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE; CREATE VIEW, ALTER VIEW, DROP VIEW; CREATE PROCEDURE, ALTER PROCEDURE, DROP PROCEDURE; CREATE FUNCTION, DROP FUNCTION, CREATE TRIGGER, DROP TRIGGER; CREATE INDEX, DROP INDEX |
Buat tugas sinkronisasi data
Langkah 1: Buka halaman sinkronisasi data
Gunakan salah satu metode berikut:
Konsol DTS
Masuk ke Konsol DTS.Konsol DTS
Di panel navigasi sebelah kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat instans sinkronisasi berada.
Konsol DMS
Langkah-langkah berikut mungkin berbeda tergantung mode dan tata letak Konsol DMS Anda. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS.
Masuk ke Konsol DMS.Konsol DMS
Di bilah navigasi atas, arahkan kursor ke Data + AI lalu pilih .
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task untuk membuka halaman konfigurasi tugas.
Konfigurasikan parameter database sumber dan tujuan.
PeringatanSetelah mengonfigurasi database sumber dan tujuan, baca Limits yang ditampilkan di halaman. Melewatkan langkah ini dapat menyebabkan tugas gagal atau ketidakkonsistenan data.
Parameter database sumber
Parameter Deskripsi Task Name Masukkan nama deskriptif. DTS menghasilkan nama secara otomatis, tetapi nama yang bermakna membantu mengidentifikasi tugas. Nama tugas tidak perlu unik. Select Existing Connection Pilih instans database terdaftar untuk mengisi otomatis bidang koneksi. Jika instans belum terdaftar, konfigurasikan bidang secara manual. Untuk instruksi pendaftaran, lihat Kelola koneksi database. Database Type Pilih MySQL. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat instans RDS MySQL sumber berada. Replicate Data Across Alibaba Cloud Accounts Pilih No untuk sinkronisasi dalam akun yang sama. RDS Instance ID Pilih instans RDS MySQL sumber. Database Account Masukkan akun dengan izin baca pada objek yang akan disinkronkan. Database Password Masukkan kata sandi untuk akun database. Encryption Pilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan terlebih dahulu di instans RDS. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL. Parameter database tujuan
Parameter Deskripsi Select Existing Connection Pilih instans database terdaftar untuk mengisi otomatis bidang koneksi. Jika instans belum terdaftar, konfigurasikan bidang secara manual. Database Type Pilih Kafka. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah tempat instans Kafka tujuan berada. Kafka Instance ID Pilih instans Kafka tujuan. Encryption Pilih Non-encrypted atau SCRAM-SHA-256 sesuai kebutuhan keamanan Anda. Topic Pilih topik untuk menerima data yang disinkronkan. Topic That Stores DDL Information (Opsional) Pilih topik untuk menyimpan informasi DDL secara terpisah. Jika dibiarkan kosong, informasi DDL disimpan di topik yang ditetapkan oleh Topic. Use Kafka Schema Registry Pilih No atau Yes. Jika Anda memilih Yes, masukkan URL atau alamat IP yang terdaftar di Kafka Schema Registry untuk skema Avro Anda. Kafka Schema Registry menyediakan API RESTful untuk menyimpan dan mengambil skema Avro. Klik Test Connectivity and Proceed.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. DTS menambahkannya secara otomatis untuk instans Alibaba Cloud. Untuk database yang dikelola sendiri, lihat Tambahkan blok CIDR server DTS. Jika metode akses bukan Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers terlebih dahulu.
Langkah 3: Konfigurasi objek dan opsi sinkronisasi
Pada langkah Configure Objects, atur parameter berikut.
Parameter Deskripsi Synchronization Types Incremental Data Synchronization dipilih secara default. Pilih juga Full Data Synchronization untuk menyinkronkan data historis terlebih dahulu, yang berfungsi sebagai garis dasar untuk sinkronisasi inkremental. CatatanJika tujuannya adalah instans ApsaraMQ for Kafka, fitur Schema Synchronization tidak tersedia.
Processing Mode of Conflicting Tables Precheck and Report Errors: gagal dalam pemeriksaan awal jika terdapat nama tabel identik di kedua database. Gunakan pemetaan nama objek untuk mengganti nama tabel yang bertentangan. Ignore Errors and Proceed: lewati pemeriksaan. Jika database sumber dan tujuan memiliki skema yang sama dan catatan di tujuan memiliki nilai primary key atau unique key yang sama dengan catatan di sumber: selama sinkronisasi penuh, catatan yang ada di tujuan dipertahankan; selama sinkronisasi inkremental, catatan yang ada di tujuan ditimpa. Ketidaksesuaian skema dapat menyebabkan kegagalan inisialisasi. Data Format in Kafka DTS Avro: data diurai menggunakan skema DTS Avro. Lihat definisi skema di GitHub. Canal JSON: data dalam format Canal JSON. Lihat bagian Canal JSON. Kafka Data Compression Format Pilih berdasarkan workload Anda: LZ4 (default) — rasio kompresi rendah, kecepatan tinggi; GZIP — rasio kompresi tinggi, kecepatan lambat, penggunaan CPU tinggi; Snappy — rasio dan kecepatan seimbang. Policy for Shipping Data to Kafka Partitions Pilih kebijakan perutean partisi. Lihat Tentukan kebijakan untuk migrasi data ke partisi Kafka. Message acknowledgement mechanism Konfigurasikan berdasarkan kebutuhan keandalan Anda. Lihat Mekanisme pengakuan pesan. Capitalization of Object Names in Destination Instance Pilih DTS default policy atau pilih opsi lain agar sesuai dengan kapitalisasi database sumber atau tujuan. Lihat Tentukan kapitalisasi nama objek di instans tujuan. Source Objects Pilih satu atau beberapa objek dan klik
untuk menambahkannya ke Selected Objects. Hanya tabel yang dapat dipilih sebagai objek sinkronisasi.Selected Objects Gunakan fitur pemetaan nama objek untuk mengatur topik tujuan, jumlah partisi, dan kunci partisi per tabel. Lihat Gunakan fitur pemetaan nama objek. Untuk memfilter operasi SQL tertentu untuk sebuah tabel, klik kanan objek di Selected Objects dan pilih operasinya. Catatan: Mengganti nama objek dapat merusak objek dependen. Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
Parameter Deskripsi Dedicated Cluster for Task Scheduling Secara default, DTS menjadwalkan tugas ke kluster bersama. Beli kluster khusus untuk meningkatkan stabilitas. Lihat Apa itu kluster khusus DTS. Retry Time for Failed Connections Rentang waktu DTS mencoba koneksi yang gagal. Nilai valid: 10–1440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika beberapa tugas berbagi database sumber atau tujuan, waktu retry terpendek yang berlaku. DTS menagih instans selama proses retry. Retry Time for Other Issues Rentang waktu DTS mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10 menit. Atur lebih dari 10 menit. Nilai ini harus kurang dari Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Batasi QPS baca (queries per second) dan throughput tulis selama sinkronisasi penuh untuk mengurangi beban pada tujuan. Konfigurasikan parameter Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya jika Full Data Synchronization dipilih. Enable Throttling for Incremental Data Synchronization Batasi throughput tulis untuk sinkronisasi inkremental dengan mengonfigurasi parameter RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). Whether to delete SQL operations on heartbeat tables of forward and reverse tasks Yes: DTS tidak menulis SQL heartbeat ke database sumber. Latensi sinkronisasi mungkin muncul di tugas. No: DTS menulis SQL heartbeat ke sumber. Operasi backup fisik dan kloning pada database sumber mungkin terpengaruh. Environment Tag (Opsional) Tetapkan tag lingkungan untuk mengidentifikasi instans DTS ini. Configure ETL Yes: konfigurasikan pemrosesan ekstrak, transformasi, dan muat (ETL) dengan memasukkan pernyataan pemrosesan data. Lihat Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data. No: lewati ETL. Monitoring and Alerting Yes: konfigurasikan ambang batas peringatan dan kontak notifikasi. DTS mengirim peringatan saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Lihat Konfigurasikan pemantauan dan peringatan saat membuat tugas DTS. No: tanpa peringatan.
Langkah 4: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck. Untuk melihat pratinjau parameter API untuk konfigurasi ini, arahkan kursor ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas sinkronisasi dimulai. Tugas hanya dimulai setelah semua item pemeriksaan awal lolos.
Jika ada item pemeriksaan awal yang gagal, klik View Details untuk melihat penyebabnya, perbaiki masalahnya, lalu klik Precheck Again. Jika item pemeriksaan awal menghasilkan peringatan:
Jika peringatan tidak dapat diabaikan, perbaiki masalah dan jalankan kembali pemeriksaan awal.
Jika peringatan dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore di kotak dialog, klik OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 5: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan parameter berikut.
Parameter Deskripsi Billing Method Subscription: bayar di muka. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam. Cocok untuk penggunaan jangka pendek. Hapus instans saat tidak diperlukan lagi untuk menghindari biaya berkelanjutan. Resource Group Settings Pilih kelompok sumber daya untuk instans ini. Default: default resource group. Lihat Apa itu Resource Management? Instance Class Pilih kelas instans berdasarkan throughput sinkronisasi yang dibutuhkan. Lihat Kelas instans untuk instansi sinkronisasi data. Subscription Duration (Hanya Subscription) Atur durasi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di kotak dialog.
Tugas muncul di daftar tugas. Pantau perkembangannya dari sana.
Gunakan fitur pemetaan nama objek
Fitur pemetaan nama objek memungkinkan Anda mengarahkan data dari setiap tabel sumber ke topik Kafka tertentu, mengatur jumlah partisi, dan menentukan kunci partisi.
Di bagian Selected Objects, arahkan kursor ke nama tabel.
Klik kanan dan pilih Edit.
Di kotak dialog Edit Table, konfigurasikan parameter berikut.
Parameter Deskripsi Table Name Masukkan nama topik tujuan. Secara default, ini adalah topik yang ditetapkan di bagian Destination Database. Jika tujuan adalah instans ApsaraMQ for Kafka, topik tersebut harus sudah ada — DTS tidak membuatnya. Jika tujuan adalah kluster Kafka yang dikelola sendiri dan sinkronisasi skema disertakan, DTS mencoba membuat topik tersebut. Filter Conditions Tentukan kondisi SQL untuk memfilter baris mana yang disinkronkan. Lihat Tentukan kondisi filter. Number of Partitions Atur jumlah partisi di topik tujuan. Partition Key Tersedia saat Policy for Shipping Data to Kafka Partitions diatur ke Ship Data to Separate Partitions Based on Hash Values of Primary Keys. Tentukan satu atau beberapa kolom sebagai kunci partisi. DTS mengarahkan baris ke partisi berdasarkan nilai hash kolom-kolom tersebut. Untuk memilih kolom sebagai kunci partisi, pertama-tama hapus centang Synchronize All Tables. Klik OK.
FAQ
Apakah saya dapat mengubah Kafka Data Compression Format atau Message acknowledgement mechanism setelah tugas dibuat?
Ya. Ubah pengaturan ini melalui fitur modifikasi objek. Lihat Ubah objek yang akan disinkronkan.