All Products
Search
Document Center

Data Transmission Service:Sinkronisasi data dari instans ApsaraDB for MongoDB ke instans ApsaraDB RDS for MySQL

Last Updated:Mar 29, 2026

Gunakan Data Transmission Service (DTS) untuk menyinkronkan data secara berkelanjutan dari replica set ApsaraDB for MongoDB ke instans ApsaraDB RDS for MySQL. DTS meratakan struktur dokumen MongoDB menjadi tabel relasional menggunakan ekspresi bson_value(), sehingga setiap field MongoDB dipetakan ke kolom MySQL.

Sebelum memulai

MongoDB dan MySQL menggunakan model data yang sangat berbeda. Sebelum memulai, pahami cara DTS menjembatani perbedaan tersebut:

  • Sebuah dokumen MongoDB setara dengan satu baris di MySQL.

  • Koleksi MongoDB setara dengan tabel MySQL.

  • Field MongoDB bersifat nested (hierarkis), sedangkan kolom MySQL bersifat flat. DTS menggunakan ekspresi bson_value() untuk memetakan field nested ke kolom individual.

Prasyarat

Sebelum memulai, pastikan bahwa:

  • Instans ApsaraDB RDS for MySQL tujuan telah dibuat dan memiliki ruang penyimpanan yang cukup — lebih besar daripada ukuran total data di database sumber. Untuk detailnya, lihat Buat instans ApsaraDB RDS for MySQL. Disarankan agar ruang penyimpanan yang tersedia minimal 10% lebih besar daripada ukuran total data di database sumber.

  • Database dan tabel dengan kolom kunci primer unik yang tidak komposit sudah ada di instans tujuan. Lihat Kelola database.

  • Tipe kolom tabel tujuan kompatibel dengan tipe data MongoDB yang akan disinkronkan. Misalnya, jika field _id MongoDB bertipe ObjectId, maka kolom MySQL yang sesuai harus bertipe varchar.

  • Tabel tujuan tidak memiliki kolom bernama `_id` atau `_value`.

  • Jika sumber adalah sharded cluster, endpoint untuk semua node shard telah diajukan, dan semua node shard menggunakan password akun serta endpoint yang sama. Lihat Ajukan endpoint untuk shard.

Izin yang diperlukan

Berikan izin berikut kepada akun database yang digunakan DTS untuk terhubung ke masing-masing database.

DatabaseIzin yang diperlukanReferensi
Sumber ApsaraDB for MongoDBIzin baca pada database sumber, database admin, dan database localManajemen akun
ApsaraDB RDS for MySQL tujuanIzin baca dan tulis pada database tujuanBuat akun dan Ubah izin akun

Batasan

Tinjau batasan berikut sebelum mengonfigurasi tugas.

Batasan database sumber

  • Server sumber harus memiliki bandwidth outbound yang mencukupi. Bandwidth rendah mengurangi kecepatan sinkronisasi.

  • Hanya collections yang dapat dipilih sebagai objek sinkronisasi. Anda tidak dapat melakukan sinkronisasi di tingkat database.

  • Jika Anda mengganti nama koleksi di tujuan, satu tugas dapat menyinkronkan maksimal 1.000 collections. Untuk koleksi lebih banyak, buat beberapa tugas.

  • DTS tidak dapat terhubung ke MongoDB melalui endpoint SRV.

  • Tipe sumber berikut tidak didukung: instans ApsaraDB for MongoDB standalone, kluster Azure Cosmos DB for MongoDB, dan kluster elastis Amazon DocumentDB.

  • Database sumber harus memiliki oplog yang diaktifkan dengan log yang disimpan selama minimal 7 hari, atau change streams yang diaktifkan dan tersedia selama 7 hari terakhir. Gunakan oplog (disarankan) untuk latensi lebih rendah. Change streams memerlukan MongoDB V4.0 atau lebih baru.

Batasan sharded cluster

  • Field _id di setiap koleksi yang akan disinkronkan harus unik.

  • Jumlah node Mongos tidak boleh melebihi 10.

  • Sumber tidak boleh berisi orphaned documents. Lihat dokumentasi MongoDB dan FAQ tentang penghapusan orphaned documents.

  • Jangan menjalankan perintah berikut selama sinkronisasi: shardCollection, reshardCollection, unshardCollection, moveCollection, atau movePrimary.

  • Jika balancer aktif, latensi dapat terjadi.

Batasan perilaku sinkronisasi

  • Selama sinkronisasi data penuh, jangan mengubah skema database atau koleksi, atau memodifikasi data bertipe ARRAY.

  • Jika Anda hanya menjalankan sinkronisasi data penuh, jangan menulis ke database sumber selama tugas berjalan.

  • Sinkronisasi inkremental hanya mendukung operasi insert, update (melalui $set), dan delete. Transaksi tidak dipertahankan — mereka dikonversi menjadi catatan individual.

  • Jika data berisi karakter 4-byte (seperti emoji), tabel tujuan harus menggunakan set karakter utf8mb4. Jika DTS menangani sinkronisasi skema, atur parameter character_set_server di instans tujuan menjadi utf8mb4.

  • DTS tidak dapat menyinkronkan data dari database admin, config, atau local.

  • Precision FLOAT default-nya 38 digit; precision DOUBLE default-nya 308 digit. DTS menerapkan ROUND(COLUMN,PRECISION) untuk mengambil nilai. Verifikasi apakah precision default memenuhi kebutuhan Anda.

  • Selama sinkronisasi data penuh, operasi INSERT konkuren dapat menyebabkan fragmentasi pada tabel tujuan, sehingga penggunaan penyimpanan lebih tinggi daripada di sumber.

  • DTS mencoba melanjutkan tugas yang gagal dalam 7 hari terakhir. Hentikan atau lepas tugas yang gagal sebelum memindahkan beban kerja ke database tujuan. Atau, cabut izin tulis DTS pada tujuan menggunakan pernyataan REVOKE untuk mencegah data sumber menimpa data tujuan saat dilanjutkan.

  • Latensi sinkronisasi inkremental dihitung berdasarkan selisih waktu data terbaru yang telah disinkronkan di tujuan dengan waktu saat ini di sumber. Lakukan update pada sumber untuk memperbarui pembacaan latensi jika tidak ada update dalam periode yang lama.

Penagihan

Tipe sinkronisasiBiaya
Sinkronisasi data penuhGratis
Sinkronisasi data inkrementalDikenai biaya. Lihat Ikhtisar penagihan

Buat tugas sinkronisasi data

Langkah 1: Buka halaman sinkronisasi data

Buka daftar tugas DTS melalui konsol DTS atau konsol Data Management Service (DMS).

Konsol DTS

  1. Masuk ke konsol DTS.

  2. Di panel navigasi kiri, klik Data Synchronization.

  3. Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi akan dijalankan.

Konsol DMS

Jalur navigasi tepatnya bervariasi tergantung mode dan tata letak konsol DMS. Lihat Simple mode dan Sesuaikan tata letak dan gaya konsol DMS untuk detailnya.
  1. Masuk ke konsol DMS.

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

  3. Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah target.

Langkah 2: Konfigurasikan database sumber dan tujuan

  1. Klik Create Task.

  2. (Opsional) Klik New Configuration Page di pojok kanan atas jika diminta. Lewati langkah ini jika Back to Previous Version sudah ditampilkan.

Konfigurasikan parameter berikut.

KategoriParameterDeskripsi
N/ATask NameDTS membuat nama secara otomatis. Tentukan nama deskriptif agar mudah diidentifikasi. Nama tugas tidak perlu unik.
Source DatabaseSelect Existing ConnectionPilih instans terdaftar dari daftar drop-down, atau konfigurasikan parameter koneksi secara manual.
Database TypePilih MongoDB.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionWilayah instans ApsaraDB for MongoDB sumber.
Replicate Data Across Alibaba Cloud AccountsPilih No untuk menggunakan instans di akun saat ini.
ArchitecturePilih Replica Set. Jika sumber adalah Sharded Cluster, tentukan juga Shard account dan Shard password.
Migration MethodPilih Oplog (disarankan) untuk latensi lebih rendah. Pilih ChangeStream jika oplog tidak tersedia. Lihat catatan di bawah untuk batasannya.
Instance IDID instans ApsaraDB for MongoDB sumber.
Authentication DatabaseDatabase autentikasi yang menyimpan kredensial akun. Default-nya adalah admin.
Database AccountAkun dengan izin baca yang diperlukan.
Database PasswordPassword untuk akun database.
EncryptionPilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada nilai Access Method dan Architecture. Konsol DTS menampilkan opsi yang berlaku. Jika database sumber adalah database MongoDB yang dikelola sendiri dengan arsitektur Replica Set, Access Method-nya bukan Alibaba Cloud Instance, dan Encryption-nya SSL-encrypted, Anda dapat mengunggah sertifikat otoritas sertifikasi (CA) untuk memverifikasi koneksi ke database sumber.
Destination DatabaseSelect Existing ConnectionPilih instans terdaftar atau konfigurasikan parameter koneksi secara manual.
Database TypePilih MySQL.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionWilayah instans ApsaraDB RDS for MySQL tujuan.
Replicate Data Across Alibaba Cloud AccountsPilih No untuk menggunakan instans di akun saat ini.
RDS Instance IDID instans ApsaraDB RDS for MySQL tujuan.
Database AccountAkun dengan izin baca dan tulis yang diperlukan.
Database PasswordPassword untuk akun database.
EncryptionPilih Non-encrypted atau SSL-encrypted. Untuk menggunakan enkripsi SSL, aktifkan SSL terlebih dahulu pada instans RDS tujuan. Lihat Gunakan sertifikat cloud untuk mengaktifkan enkripsi SSL.
Metode Migrasi kendala:
Oplog adalah opsi default dan disarankan untuk semua instans ApsaraDB for MongoDB yang memiliki oplog diaktifkan. Ini memberikan latensi sinkronisasi lebih rendah karena proses pulling log lebih cepat.
ChangeStream memerlukan MongoDB V4.0 atau lebih baru.
Jika sumber adalah kluster Amazon DocumentDB non-elastis, Anda harus mengaktifkan change streams untuk database tersebut, dan atur Migration Method ke ChangeStream serta Architecture ke Sharded Cluster.
Jika Anda memilih Sharded Cluster untuk parameter Architecture dan mengatur Migration Method ke ChangeStream, Anda tidak perlu mengonfigurasi parameter Shard account dan Shard password.
Jika Architecture adalah Sharded Cluster dan Migration Method adalah Oplog, opsi SSL-encrypted untuk Encryption tidak tersedia.
  1. Klik Test Connectivity and Proceed.

DTS harus dapat mengakses database sumber dan tujuan. Tambahkan blok CIDR server DTS ke pengaturan keamanan masing-masing database. Lihat Tambahkan blok CIDR server DTS. Untuk database yang dikelola sendiri, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.

Langkah 3: Pilih objek dan konfigurasikan pemetaan field

  1. Pada langkah Configure Objects, atur opsi berikut.

KonfigurasiDeskripsi
Synchronization TypesIncremental Data Synchronization dipilih secara default. Pilih Full Data Synchronization untuk menyinkronkan data historis sebelum memulai sinkronisasi inkremental. Schema Synchronization tidak tersedia.
Processing Mode of Conflicting TablesPrecheck and Report Errors: pemeriksaan awal gagal jika instans tujuan memiliki tabel dengan nama yang sama seperti sumber. Gunakan pemetaan nama objek untuk mengganti nama tabel jika diperlukan. Lihat Map object names. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Selama sinkronisasi penuh, catatan yang bertentangan di tujuan tetap dipertahankan; selama sinkronisasi inkremental, catatan tersebut ditimpa. Gunakan opsi ini dengan hati-hati.
Capitalization of Object Names in Destination InstanceMengontrol kapitalisasi nama database, tabel, dan kolom di instans tujuan. Nilai default-nya adalah DTS default policy. Lihat Specify the capitalization of object names in the destination instance.
Source ObjectsPilih satu atau beberapa COLLECTIONS dari Source Objects, lalu klik 向右 untuk menambahkannya ke Selected Objects. Objek dipilih pada tingkat COLLECTION.
  1. Di Selected Objects, petakan koleksi MongoDB ke tabel MySQL. a. Ganti nama database tujuan: b. Ganti nama tabel tujuan: c. Konfigurasikan pemetaan field: DTS membuat ekspresi bson_value() secara otomatis untuk setiap field dalam koleksi. Verifikasi bahwa pemetaan sudah benar, lalu atur Column Name, Type, Length, dan Precision untuk setiap kolom.

    • Untuk melihat nama field MongoDB dalam ekspresi: string dalam "" adalah nama field tersebut. Contohnya, bson_value("age") memetakan field age.

    • Untuk menghapus field yang tidak perlu disinkronkan: klik image di ujung baris tersebut.

    • Untuk menambahkan field yang memerlukan ekspresi kustom:

      1. Klik image di ujung baris apa pun, lalu klik + Add Column. image

      2. Atur Column Name, Type, Length, dan Precision.

      3. Masukkan ekspresi bson_value() di Assign Value. Lihat bagian Contoh pemetaan field sebagai referensi.

      4. Ulangi untuk setiap kolom tambahan.

    1. Klik kanan koleksi di Selected Objects. image

    2. Ubah Table Name menjadi nama tabel target di instans MySQL tujuan. image

    3. (Opsional) Tentukan kondisi filter untuk menyinkronkan hanya subset data. Lihat Tentukan kondisi filter. image

    4. (Opsional) Di Select DDL and DML Operations to Be Synchronized, pilih operasi yang akan disinkronkan selama sinkronisasi data inkremental. image

    Penting

    Tetapkan bson_value("_id") ke kolom kunci primer. Untuk field nested, tentukan path lengkap menggunakan argumen yang dipisahkan koma dalam bson_value(). Misalnya, gunakan bson_value("person","name") — bukan bson_value("person") — untuk memetakan subfield name. Menggunakan hanya field induk menyebabkan kehilangan data inkremental untuk semua subfield.

  2. Klik OK, lalu klik Next: Advanced Settings.

Langkah 4: Konfigurasikan pengaturan lanjutan

KonfigurasiDeskripsi
Dedicated Cluster for Task SchedulingDTS menggunakan klaster bersama secara default. Beli klaster khusus untuk stabilitas lebih tinggi. Lihat Apa itu klaster khusus DTS.
Retry Time for Failed ConnectionsDurasi DTS mencoba kembali setelah kegagalan koneksi. Rentang valid: 10–1.440 menit. Default: 720. Kami menyarankan mengatur nilai ini lebih dari 30. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu retry terpendek yang berlaku.
Retry Time for Other IssuesDurasi DTS mencoba kembali setelah kegagalan DDL atau DML. Rentang valid: 1–1.440 menit. Default: 10. Kami menyarankan mengatur nilai ini lebih dari 10. Nilai ini harus lebih kecil daripada Retry Time for Failed Connections.
Enable Throttling for Full Data SynchronizationBatasi kecepatan baca/tulis DTS selama sinkronisasi penuh untuk mengurangi beban pada server sumber dan tujuan. 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 Synchronization dipilih.
Only one data type for primary key _id in a table of the data to be synchronizedTersedia hanya jika Full Data Synchronization dipilih. Pilih Yes jika semua nilai _id dalam koleksi memiliki tipe data yang sama (melewati pemindaian tipe). Pilih No untuk memindai tipe campuran.
Enable Throttling for Incremental Data SynchronizationBatasi kecepatan DTS selama sinkronisasi inkremental. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
Environment TagTag untuk mengidentifikasi instans DTS ini. Opsional.
Configure ETLPilih Yes untuk menerapkan transformasi ekstrak, transformasi, muat (ETL). Masukkan pernyataan pemrosesan di editor kode. Lihat Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data.
Monitoring and AlertingPilih Yes untuk mengirim notifikasi ketika tugas gagal atau latensi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan kontak notifikasi. Lihat Konfigurasikan pemantauan dan peringatan saat membuat tugas DTS.

Langkah 5: Jalankan pemeriksaan awal

Klik Next: Save Task Settings and Precheck.

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

DTS menjalankan pemeriksaan awal sebelum memulai sinkronisasi. Jika ada item yang gagal:

  1. Klik View Details di sebelah item yang gagal.

  2. Selesaikan masalah berdasarkan hasil pemeriksaan.

  3. Klik Precheck Again.

Jika suatu item memicu peringatan yang dapat Anda abaikan:

  1. Klik Confirm Alert Details, lalu klik Ignore di kotak dialog View Details.

  2. Klik OK, lalu klik Precheck Again.

Penting

Mengabaikan item peringatan dapat menyebabkan ketidakkonsistenan data. Lanjutkan dengan hati-hati.

Langkah 6: Beli dan mulai instans

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

  2. Di halaman pembelian, konfigurasikan parameter berikut.

ParameterDeskripsi
Billing MethodSubscription: bayar di muka untuk periode tetap (1–9 bulan, atau 1, 2, 3, atau 5 tahun). Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam. Cocok untuk penggunaan jangka pendek.
Resource Group SettingsKelompok sumber daya untuk instans ini. Default: default resource group. Lihat Apa itu Resource Management?
Instance ClassKelas throughput sinkronisasi. Lihat Kelas instans untuk instansi sinkronisasi data.
  1. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.

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

Tugas muncul di daftar tugas. Lacak perkembangannya di sana.

Pemetaan tipe data

DTS memetakan tipe BSON MongoDB ke tipe MySQL sebagai berikut.

Tipe data MongoDBTipe data MySQL
ObjectIdVARCHAR
StringVARCHAR
DocumentVARCHAR
DbPointerVARCHAR
ArrayVARCHAR
DateDATETIME
TimeStampDATETIME
DoubleDOUBLE
32-bit integer (BsonInt32)INTEGER
64-bit integer (BsonInt64)BIGINT
Decimal128DECIMAL
BooleanBOOLEAN
NullVARCHAR

Contoh pemetaan field

Contoh ini menunjukkan cara memetakan dokumen MongoDB nested ke tabel MySQL flat.

Struktur dokumen MongoDB sumber

{
  "_id": "62cd344c85c1ea6a2a9f****",
  "person": {
    "name": "neo",
    "age": 26,
    "sex": "male"
  }
}

Skema tabel MySQL tujuan

Nama kolomTipeCatatan
mongo_idvarcharKolom kunci primer
person_namevarchar
person_agedecimal

Konfigurasi penugasan field

Semua contoh menggunakan bson_value() untuk mengekstrak field individual dari objek nested person.

Nama kolomTipeAssign Value
mongo_idSTRINGbson_value("_id")
person_nameSTRINGbson_value("person","name")
person_ageDECIMALbson_value("person","age")
Penting

Tentukan path field lengkap menggunakan argumen yang dipisahkan koma. bson_value("person","name") mengekstrak subfield name. Menggunakan hanya bson_value("person") menyebabkan DTS gagal menulis pembaruan inkremental untuk name, age, dan subfield lain dari person.

Langkah selanjutnya

  • Pantau tugas sinkronisasi di daftar tugas konsol DTS.

  • Sebelum memindahkan beban kerja ke database tujuan, verifikasi konsistensi data dan hentikan atau lepas tugas yang gagal dalam 7 hari terakhir.

  • Untuk mencegah DTS menimpa data tujuan jika tugas yang gagal dilanjutkan, gunakan REVOKE untuk mencabut akses tulis DTS pada database tujuan.

  • Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas dapat dimulai ulang dan parameter tugas (bukan parameter database) dapat dimodifikasi selama pemulihan. Parameter yang mungkin berubah dijelaskan di Ubah parameter instans DTS.