All Products
Search
Document Center

Data Transmission Service:Migrasi data dari instans ApsaraDB RDS for MySQL ke instans ApsaraMQ for Kafka

Last Updated:Mar 29, 2026

Layanan Transmisi Data (DTS) memungkinkan Anda memigrasikan data dari instans ApsaraDB RDS for MySQL ke instans ApsaraMQ for Kafka—mengalirkan data historis yang sudah ada dan perubahan berkelanjutan ke topik Kafka tanpa downtime aplikasi.

Cara kerja

DTS menjalankan migrasi dalam hingga tiga fase berurutan:

  1. Migrasi skema: DTS membaca definisi tabel dari instans MySQL sumber dan menyiapkan tujuan.

  2. Full Data Migration: DTS menyalin semua baris yang ada dari tabel yang dipilih ke topik Kafka yang ditentukan. Operasi INSERT bersamaan selama fase ini dapat menyebabkan ruang tabel tujuan lebih besar daripada sumber.

  3. Incremental Data Migration: Setelah migrasi data penuh selesai, DTS membaca log biner MySQL dan mengalirkan event INSERT, UPDATE, dan DELETE ke topik Kafka secara real time. Fase ini berjalan terus-menerus—tugas tidak akan berhenti otomatis—sehingga aplikasi Anda dapat terus menulis ke sumber tanpa gangguan.

DTS tidak memigrasikan kunci asing. Operasi kaskade dan penghapusan yang dipicu di sumber tidak direplikasi.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans ApsaraDB RDS for MySQL (sumber) dan instans ApsaraMQ for Kafka (tujuan), keduanya telah dibuat. Lihat Buat instans ApsaraDB RDS for MySQL jika Anda perlu membuat instans RDS.

  • Ruang penyimpanan yang tersedia di instans ApsaraMQ for Kafka tujuan yang melebihi ukuran total data sumber.

  • Topik yang telah dibuat di instans ApsaraMQ for Kafka tujuan untuk menerima data yang dimigrasikan. Lihat bagian "Langkah 1: Buat topik" dalam Langkah 3: Buat resource.

  • Kluster Kafka yang menjalankan versi 0.10.1.0 hingga 2.0.

  • Izin baca pada objek yang akan dimigrasikan yang diberikan kepada akun database sumber. Berikan izin yang diperlukan:

    GRANT SELECT ON <database_name>.* TO '<dts_user>'@'%';

Batasan

Database sumber

KendalaDetail
BandwidthServer sumber harus memiliki bandwidth keluar yang cukup. Bandwidth rendah mengurangi kecepatan migrasi.
Persyaratan kunci utamaTabel harus memiliki kendala PRIMARY KEY atau UNIQUE dengan nilai bidang unik. Tanpa itu, tujuan mungkin berisi catatan duplikat.
Jumlah tabel (saat mengganti nama)Jika Anda memilih tabel sebagai objek migrasi dan mengganti nama tabel atau kolom di tujuan, satu tugas mendukung hingga 1.000 tabel. Untuk lebih dari 1.000 tabel, bagi menjadi beberapa tugas atau migrasikan seluruh database.
Operasi DDL selama migrasiJangan menjalankan pernyataan DDL yang mengubah skema database atau tabel selama migrasi skema atau migrasi data penuh. Tugas akan gagal.
Penulisan selama migrasi data penuh sajaJika Anda tidak menyertakan migrasi data inkremental, jangan menulis ke sumber selama migrasi. Untuk menjamin konsistensi, pilih migrasi skema, migrasi data penuh, dan migrasi data inkremental secara bersamaan.
Data log binerPerubahan data yang dihasilkan oleh pemulihan backup fisik atau operasi kaskade tidak dicatat dalam log biner dan tidak akan dimigrasikan.
Kolom tak terlihat MySQL 8.0.23+DTS tidak dapat membaca kolom tak terlihat—terjadi kehilangan data. Jalankan ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE; sebelum memulai tugas. Tabel tanpa kunci utama secara otomatis menghasilkan kunci utama tak terlihat; buat juga ini terlihat. Lihat Invisible Columns dan Generated Invisible Primary Keys.
Presisi FLOAT/DOUBLEDTS menggunakan ROUND(COLUMN, PRECISION) untuk mengambil nilai. Jika Anda tidak menentukan presisi, DTS mengatur FLOAT ke 38 digit dan DOUBLE ke 308 digit. Verifikasi bahwa nilai default ini memenuhi kebutuhan Anda.

Persyaratan log biner untuk migrasi inkremental

Sebelum mengaktifkan migrasi data inkremental, verifikasi dan konfigurasikan pengaturan MySQL berikut:

PengaturanNilai yang diperlukanCara memeriksa
binlog_formatrowSHOW GLOBAL VARIABLES LIKE 'binlog_format';
binlog_row_imagefullSHOW GLOBAL VARIABLES LIKE 'binlog_row_image';
log_slave_updatesON (hanya untuk kluster dual-primary yang dikelola sendiri)SHOW GLOBAL VARIABLES LIKE 'log_slave_updates';
Retensi log biner (RDS MySQL)Minimal 3 hari (disarankan 7 hari)Lihat Konfigurasikan parameter untuk penghapusan log biner otomatis
Retensi log biner (MySQL yang dikelola sendiri)Minimal 7 hariSHOW VARIABLES LIKE 'expire_logs_days';

Untuk instans MySQL yang dikelola sendiri, Anda dapat memperbaiki pengaturan yang tidak sesuai dengan menjalankan perintah yang sesuai:

-- Atur format log biner
SET GLOBAL binlog_format = 'ROW';

-- Atur gambar baris log biner
SET GLOBAL binlog_row_image = 'FULL';
Penting

Untuk instans ApsaraDB RDS for MySQL, parameter log biner harus dimodifikasi melalui konsol RDS, bukan dengan menjalankan perintah SET GLOBAL secara langsung. Jika retensi log biner diatur di bawah minimum, DTS mungkin gagal membaca log dan tugas bisa gagal. Dalam kasus luar biasa, ketidaksesuaian atau kehilangan data dapat terjadi. Hal ini memengaruhi Perjanjian Tingkat Layanan (SLA) Anda dengan DTS.

Batasan lainnya

  • Anda hanya dapat memilih tabel sebagai objek yang akan dimigrasikan.

  • Lakukan migrasi selama jam sepi untuk mengurangi beban pada server sumber dan tujuan.

  • Sebelum mengalihkan beban kerja produksi ke tujuan, hentikan atau rilis tugas DTS apa pun yang gagal dalam 7 hari terakhir. DTS mencoba melanjutkan tugas yang gagal secara otomatis, yang dapat menimpa data di tujuan. Sebagai alternatif, cabut izin tulis dari akun DTS di tujuan.

  • Jika data dari sumber lain ditulis ke tujuan selama migrasi, akan terjadi ketidaksesuaian data.

  • Jika kluster Kafka tujuan ditingkatkan atau diturunkan spesifikasinya selama migrasi, restart tugas migrasi.

  • Jika Enkripsi Data Transparan (TDE) diaktifkan pada instans RDS MySQL sumber, migrasi skema, migrasi data penuh, dan migrasi data inkremental semuanya didukung. Jika fitur EncDB diaktifkan sebagai gantinya, migrasi data penuh tidak didukung.

  • Jika tugas DTS gagal, dukungan teknis DTS akan mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin di-restart dan parameter tingkat tugas mungkin dimodifikasi. Parameter database tidak diubah.

Kasus khusus

MySQL yang dikelola sendiri:

  • Jika terjadi alih bencana primer/sekunder saat tugas sedang berjalan, tugas akan gagal.

  • Latensi migrasi mungkin tampak tidak akurat jika tidak ada operasi DML yang dijalankan di sumber dalam waktu lama. Jalankan operasi DML apa pun di sumber untuk memperbarui latensi. Jika Anda memigrasikan seluruh database, buat tabel heartbeat yang menerima pembaruan setiap detik.

  • DTS secara berkala menjalankan CREATE DATABASE IF NOT EXISTS \test\`` di sumber untuk memajukan posisi log biner.

ApsaraDB RDS for MySQL:

  • Instans RDS MySQL V5.6 read-only (yang tidak mencatat log transaksi) tidak dapat digunakan sebagai sumber untuk migrasi data inkremental.

  • DTS secara berkala menjalankan CREATE DATABASE IF NOT EXISTS \test\`` di sumber untuk memajukan posisi log biner.

Penagihan

Jenis migrasiBiaya konfigurasi tugasBiaya lalu lintas Internet
Migrasi skema + migrasi data penuhGratisDikenakan biaya hanya jika data melewati Alibaba Cloud melalui Internet. Lihat Ikhtisar penagihan.
Migrasi data inkrementalDikenakan biaya. Lihat Ikhtisar penagihan.Sama seperti di atas.

Operasi SQL yang didukung untuk migrasi inkremental

Jenis operasiPernyataan SQL
DMLINSERT, UPDATE, DELETE
DDLCREATE 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

Format pesan Kafka

DTS menulis catatan ke Kafka dalam salah satu dari dua format. Pilih format yang sesuai dengan implementasi konsumen Anda.

DTS Avro

Catatan mengikuti definisi skema DTS Avro. Lihat skema di GitHub.

Canal JSON

Catatan ditulis dalam format Canal JSON. Contoh berikut menunjukkan event INSERT khas:

{
  "data": [
    {
      "id": "1",
      "name": "example_value",
      "updated_at": "2026-01-01 00:00:00"
    }
  ],
  "database": "example_db",
  "es": 1735689600000,
  "id": 1,
  "isDdl": false,
  "mysqlType": {
    "id": "int(11)",
    "name": "varchar(255)",
    "updated_at": "datetime"
  },
  "old": null,
  "pkNames": ["id"],
  "sql": "",
  "sqlType": {
    "id": 4,
    "name": 12,
    "updated_at": 93
  },
  "table": "example_table",
  "ts": 1735689600123,
  "type": "INSERT"
}

Untuk event UPDATE, bidang old berisi nilai pra-gambar (nilai kolom sebelum perubahan).

Untuk detail parameter lengkap dan contoh kode konsumen, lihat Format data Canal JSON.

Buat tugas migrasi

Langkah 1: Buka halaman Migrasi Data

Gunakan salah satu konsol berikut:

Konsol DTS

  1. Masuk ke Konsol DTS.Konsol DTS

  2. Di panel navigasi kiri, klik Data Migration.

  3. Di pojok kiri atas, pilih wilayah tempat instans migrasi akan berada.

Konsol DMS

Langkah-langkah dapat berbeda tergantung mode dan tata letak konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
  1. Masuk ke Konsol DMS.Konsol DMS

  2. Di bilah navigasi atas, arahkan pointer ke Data + AI > DTS (DTS) > Data Migration.

  3. Dari daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi akan berada.

Langkah 2: Konfigurasikan database sumber dan tujuan

  1. Klik Create Task.

    Peringatan

    Setelah mengonfigurasi sumber dan tujuan, baca Limits yang ditampilkan di bagian atas halaman sebelum melanjutkan. Melewatkan langkah ini dapat menyebabkan tugas gagal atau ketidaksesuaian data.

  2. Konfigurasikan parameter dalam tabel berikut.

Source Database

ParameterDeskripsi
Task NameNama untuk tugas DTS. DTS menghasilkan nama default. Gunakan nama deskriptif agar tugas mudah diidentifikasi — keunikan tidak diperlukan.
Select Existing ConnectionJika instans sumber sudah terdaftar di DTS, pilih dari daftar — DTS mengisi parameter yang tersisa secara otomatis. Jika tidak, konfigurasikan parameter di bawah.
Database TypePilih MySQL.
Connection TypePilih Alibaba Cloud Instance.
Instance RegionWilayah tempat instans ApsaraDB RDS for MySQL sumber berada.
Cross-accountPilih No untuk migrasi dalam akun yang sama.
RDS Instance IDID instans ApsaraDB RDS for MySQL sumber.
Database AccountAkun database dengan izin baca pada objek yang akan dimigrasikan.
Database PasswordKata sandi untuk akun database.
EncryptionPilih Non-encrypted atau SSL-encrypted. Untuk menggunakan SSL, aktifkan terlebih dahulu enkripsi SSL pada instans RDS. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL.

Destination Database

ParameterDeskripsi
Select Existing ConnectionJika instans tujuan sudah terdaftar di DTS, pilih dari daftar. Jika tidak, konfigurasikan parameter di bawah.
Database TypePilih Kafka.
Connection TypePilih Alibaba Cloud Instance.
Instance RegionWilayah tempat instans ApsaraMQ for Kafka tujuan berada.
Kafka Instance IDID instans ApsaraMQ for Kafka tujuan.
EncryptionPilih Non-encrypted atau SCRAM-SHA-256 berdasarkan kebutuhan keamanan Anda.
TopicTopik yang menerima data yang dimigrasikan. Pilih dari daftar drop-down.
Topic That Stores DDL InformationTopik yang menyimpan data event DDL. Jika dibiarkan kosong, informasi DDL ditulis ke topik yang ditentukan di Topic.
Use Kafka Schema RegistryApakah akan menggunakan Kafka Schema Registry untuk manajemen skema. Pilih No atau Yespengaturan pemberitahuan peringatan. Jika Yes, masukkan URL atau alamat IP yang terdaftar di Kafka Schema Registry untuk skema Avro Anda.
  1. Klik Test Connectivity and Proceed.

    DTS harus dapat mengakses sumber dan tujuan. Tambahkan blok CIDR server DTS ke pengaturan keamanan kedua database. Lihat Tambahkan blok CIDR server DTS. Jika sumber atau tujuan adalah database yang dikelola sendiri dengan metode akses selain Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.

Langkah 3: Pilih objek migrasi dan konfigurasikan pengaturan

  1. Di halaman Configure Objects, atur parameter berikut.

ParameterDeskripsi
Migration TypesPilih jenis migrasi berdasarkan kebutuhan Anda: <br>- Hanya migrasi skema + migrasi data penuh: pilih Schema Migration dan Full Data Migration. <br>- Migrasi tanpa downtime dengan replikasi berkelanjutan: pilih Schema Migration, Full Data Migration, dan Incremental Data Migration. <br><br>
Catatan

Migrasi skema tidak didukung ketika tujuan adalah instans ApsaraMQ for Kafka. Jika Anda tidak memilih migrasi data inkremental, jangan menulis ke sumber selama migrasi.

Processing Mode for Existing Destination Tables- Precheck and Report Errors: gagal dalam pemeriksaan awal jika tujuan sudah memiliki tabel dengan nama yang sama dengan sumber. Gunakan pemetaan nama objek untuk menyelesaikan konflik penamaan. <br>- Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama migrasi data penuh, catatan yang bertentangan di tujuan dipertahankan. Selama migrasi data inkremental, catatan tersebut ditimpa. Gunakan dengan hati-hati.
Data Format in KafkaFormat penulisan catatan ke Kafka: <br>- DTS Avro: catatan mengikuti skema DTS Avro. Lihat definisi skema di GitHub. <br>- Canal JSON: catatan ditulis dalam format Canal JSON. Lihat Format data Canal JSON untuk detail parameter dan contoh kode.
Kafka Data Compression FormatAlgoritma kompresi untuk pesan Kafka: <br>- LZ4 (default): rasio kompresi rendah dan kecepatan kompresi tinggi. <br>- GZIP: rasio kompresi tinggi dan kecepatan kompresi rendah. GZIP mengonsumsi banyak sumber daya CPU. <br>- Snappy: rasio kompresi menengah dan kecepatan kompresi menengah.
Policy for Shipping Data to Kafka PartitionsCara DTS mengarahkan catatan ke partisi Kafka. Lihat Tentukan kebijakan untuk memigrasikan data ke partisi Kafka.
Message acknowledgement mechanismKebijakan konfirmasi yang digunakan DTS saat menulis ke Kafka. Lihat Mekanisme konfirmasi pesan.
Capitalization of Object Names in Destination InstanceKebijakan huruf besar/kecil untuk nama database, tabel, dan kolom di tujuan. Default adalah DTS default policy. Lihat Tentukan kapitalisasi nama objek.
Source ObjectsPilih satu atau beberapa tabel dari Source Objects dan klik ikon panah untuk memindahkannya ke Selected Objects. Hanya tabel yang dapat dipilih.
Selected ObjectsUntuk mengarahkan tabel sumber ke topik tertentu, mengonfigurasi partisi, atau menetapkan kunci partisi, gunakan fitur pemetaan nama objek. Lihat Gunakan fitur pemetaan nama objek. Untuk memigrasikan operasi DML atau DDL tertentu pada objek, klik kanan objek di Selected Objects dan pilih operasi yang akan disertakan.
  1. Klik Next: Advanced Settings.

ParameterDeskripsi
Dedicated Cluster for Task SchedulingSecara default, DTS menjadwalkan tugas pada kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS.
Retry Time for Failed ConnectionsBerapa lama DTS mencoba lagi setelah kegagalan koneksi. Nilai valid: 10–1.440 menit. Default: 720. Atur minimal 30. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan. Jika tidak, tugas gagal. <br><br>
Catatan

Saat beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang yang paling baru diatur berlaku. Anda dikenai biaya selama percobaan ulang.

Retry Time for Other IssuesBerapa lama DTS mencoba lagi setelah kegagalan operasi DDL atau DML. Nilai valid: 1–1.440 menit. Default: 10. Atur minimal 10. Nilai ini harus kurang dari Retry Time for Failed Connections.
Enable Throttling for Full Data MigrationMembatasi throughput baca/tulis selama migrasi data penuh untuk mengurangi beban pada sumber. Konfigurasikan 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 Migration dipilih.
Enable Throttling for Incremental Data MigrationMembatasi throughput selama migrasi data inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya jika Incremental Data Migration dipilih.
Whether to delete SQL operations on heartbeat tables of forward and reverse tasksMengontrol apakah DTS menulis SQL heartbeat ke sumber: <br>- Yes: DTS tidak menulis SQL heartbeat. Latensi migrasi mungkin tampak meningkat di konsol. <br>- No: DTS menulis SQL heartbeat. Operasi backup fisik dan kloning di sumber mungkin terpengaruh.
Environment TagTag opsional untuk mengkategorikan instans DTS berdasarkan lingkungan (misalnya, produksi atau uji coba).
Configure ETLApakah akan menerapkan transformasi ekstrak, transformasi, dan muat (ETL). Pilih Yes untuk menulis pernyataan pemrosesan data di editor kode. Lihat Konfigurasikan ETL dalam tugas migrasi atau sinkronisasi data.
Monitoring and AlertingApakah akan mengonfigurasi peringatan untuk kegagalan tugas atau latensi migrasi tinggi. Pilih Yes dan konfigurasikan ambang batas peringatan serta kontak notifikasi. Lihat Konfigurasikan pemantauan dan peringatan.

Langkah 4: Jalankan pemeriksaan awal

  1. Untuk melihat pratinjau parameter API untuk tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters.

  2. Klik Next: Save Task Settings and Precheck. DTS menjalankan pemeriksaan awal otomatis sebelum memulai tugas. Jika ada item yang gagal:

    • Klik View Details di sebelah item yang gagal, perbaiki masalahnya, lalu klik Precheck Again.

    • Jika item peringatan tidak kritis dan dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidaksesuaian data.

Langkah 5: Beli instans dan mulai tugas

  1. Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.

  2. Di halaman Purchase Instance, konfigurasikan hal berikut:

BagianParameterDeskripsi
New Instance ClassResource GroupKelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Manajemen Resource?
Instance ClassKelas instans menentukan throughput migrasi. Lihat Kelas instans untuk instans migrasi data.
  1. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms dengan memilih kotak centang.

  2. Klik Buy and Start, lalu klik OK di dialog konfirmasi.

Verifikasi tugas

Di halaman Data Migration, periksa status tugas:

  • Completed: tugas hanya mencakup migrasi skema dan migrasi data penuh. Tidak ada migrasi inkremental yang berjalan.

  • Running: tugas mencakup migrasi data inkremental. Tugas berjalan terus-menerus dan tidak berhenti otomatis.

Gunakan fitur pemetaan nama objek

Gunakan fitur ini untuk mengarahkan data tabel sumber ke topik Kafka tertentu, mengontrol jumlah partisi, atau menetapkan kunci partisi untuk pengarahan berbasis hash.

  1. Di bagian Selected Objects, arahkan kursor ke nama tabel.

  2. Klik kanan dan pilih Edit.

  3. Di kotak dialog, konfigurasikan parameter berikut.

ParameterDeskripsi
Table NameNama topik Kafka yang menerima data dari tabel sumber ini. Default mengikuti topik yang ditentukan di pengaturan Destination Database. <br><br>
Penting

Saat tujuan adalah ApsaraMQ for Kafka, topik harus sudah ada di instans. Untuk kluster Kafka yang dikelola sendiri dengan migrasi skema disertakan, DTS membuat topik secara otomatis. Mengubah nilai ini mengarahkan data tabel ke topik yang ditentukan.

Filter ConditionsKondisi filter SQL untuk memigrasikan baris secara selektif. Lihat Tentukan kondisi filter.
Number of PartitionsJumlah partisi di topik target.
Partition KeySatu atau beberapa kolom yang digunakan untuk menghitung nilai hash untuk pengarahan partisi. Tersedia hanya jika Policy for Shipping Data to Kafka Partitions diatur ke Ship Data to Separate Partitions Based on Hash Values of Primary Keys. Kosongkan Synchronize All Tables sebelum memilih kolom kunci partisi.
  1. Klik OK.

Jika Anda mengganti nama objek menggunakan pemetaan nama objek, objek lain yang bergantung padanya mungkin gagal dimigrasikan.

Langkah selanjutnya