Layanan Transmisi Data (DTS) secara terus-menerus menyinkronkan data dari instans set replika ApsaraDB for MongoDB ke kluster AnalyticDB for MySQL 3.0, sehingga database analitik Anda tetap mutakhir dengan latensi minimal.
Pemetaan konsep MongoDB ke relasional
Jika Anda tidak familiar dengan MongoDB, pemetaan berikut berlaku di seluruh panduan ini:
| Konsep MongoDB | Setara relasional | Catatan |
|---|---|---|
| Collection | Table | Unit data yang akan disinkronkan |
| Document | Row | Setiap dokumen dipetakan ke satu baris di tabel tujuan |
| Field | Column | Field harus dipetakan menggunakan ekspresi bson_value() |
| ObjectId | VARCHAR | Field _id bertipe ObjectId harus dipetakan ke kolom VARCHAR |
Apa yang didukung DTS
| Kemampuan | Didukung | Catatan |
|---|---|---|
| Sinkronisasi data penuh | Ya | Gratis |
| Sinkronisasi data inkremental | Ya | Berbayar; lihat Ikhtisar penagihan |
| Koleksi | Ya | — |
| Operasi INSERT, UPDATE, DELETE | Ya | Hanya untuk inkremental; saat menyinkronkan data inkremental suatu file, hanya perintah $set yang dapat dijalankan secara sinkron |
| Sinkronisasi skema | Tidak | Buat tabel tujuan secara manual sebelum memulai |
| Indeks, view, prosedur, fungsi, trigger, kunci asing | Tidak | — |
| Database admin, config, atau local | Tidak | — |
| Transaksi | Tidak | Transaksi dikonversi menjadi catatan tunggal |
Prasyarat
Sebelum memulai, pastikan bahwa:
Untuk sumber kluster sharded: Setiap node shard memiliki titik akhir publik, dan semua akun shard menggunakan username dan password yang sama. Lihat Ajukan titik akhir untuk node shard atau node ConfigServer pada instans kluster sharded.
Kluster AnalyticDB for MySQL 3.0 tujuan telah tersedia dengan kapasitas penyimpanan lebih besar daripada kapasitas yang digunakan oleh instans MongoDB sumber. (Disarankan: minimal 10% lebih besar dari total ukuran data sumber.) Lihat Buat kluster.
Database dan tabel tujuan dengan kolom kunci primer unik (bukan komposit) telah tersedia. Lihat CREATE DATABASE dan CREATE TABLE.
Fitur multi-pernyataan diaktifkan pada kluster tujuan:
SET ADB_CONFIG ALLOW_MULTI_QUERIES=true;
Fitur multi-pernyataan memerlukan AnalyticDB for MySQL V3.1.9.3 atau versi lebih baru. Lihat Perbarui versi minor kluster.
Saat membuat tabel tujuan:
Petakan field
_idbertipe ObjectId ke kolom VARCHAR.Jangan memberi nama kolom apa pun sebagai
_idatau_value.Pastikan semua tipe data kolom tujuan kompatibel dengan tipe data MongoDB sumber.
Pemetaan tipe data
Verifikasi bahwa setiap tipe kolom AnalyticDB for MySQL kompatibel dengan tipe data MongoDB sumber sebelum membuat tabel tujuan.
| Tipe BSON MongoDB | Tipe AnalyticDB for MySQL | Catatan |
|---|---|---|
| ObjectId | VARCHAR | Field kunci primer _id; nilai ObjectId disimpan sebagai string |
| FLOAT | FLOAT | DTS menggunakan ROUND(column, 38) secara default; sesuaikan presisi kolom sesuai kebutuhan Anda |
| DOUBLE | DOUBLE | DTS menggunakan ROUND(column, 308) secara default; sesuaikan presisi kolom sesuai kebutuhan Anda |
| Field objek bersarang | Kolom terpisah | Petakan setiap subfield menggunakan bson_value("parent", "child") — jangan petakan objek induk secara langsung |
Untuk daftar lengkap pemetaan tipe data yang didukung, lihat bagian pemetaan tipe data di Migrasi data dari instans ApsaraDB for MongoDB ke instans ApsaraDB RDS for MySQL.
Izin yang diperlukan
| Database | Izin yang diperlukan | Referensi |
|---|---|---|
| Instans ApsaraDB for MongoDB sumber | Izin baca pada database sumber, admin, dan local | Manajemen akun |
| Kluster AnalyticDB for MySQL 3.0 tujuan | Izin baca dan tulis pada database tujuan | Buat akun database |
Batasan
Batasan database sumber
Bandwidth: Server yang menghosting database sumber harus memiliki bandwidth keluar yang mencukupi. Bandwidth rendah mengurangi kecepatan sinkronisasi.
Batasan collection: Jika Anda mengonfigurasi pemetaan nama untuk collection tujuan, satu tugas mendukung hingga 1.000 collection. Untuk menyinkronkan lebih banyak, buat beberapa tugas atau konfigurasikan tugas untuk menyinkronkan seluruh database.
Kluster sharded — `_id` unik: Field
_iddi setiap collection yang akan disinkronkan harus unik. Nilai_idduplikat menyebabkan inkonsistensi data.Kluster sharded — node mongos: Jumlah node mongos tidak boleh melebihi 10. Instans sumber tidak boleh berisi dokumen yatim (orphaned documents) — jika tidak, inkonsistensi data dapat terjadi dan tugas mungkin gagal. Lihat dokumentasi MongoDB dan FAQ tentang penghapusan dokumen yatim.
Kluster sharded — latensi balancer: Jika balancer pada sumber kluster sharded sedang menyeimbangkan data, latensi dapat terjadi pada instans.
Sumber yang tidak didukung: Instans ApsaraDB for MongoDB standalone, kluster Azure Cosmos DB for MongoDB, dan kluster elastis Amazon DocumentDB tidak dapat digunakan sebagai sumber.
Titik akhir SRV: DTS tidak dapat terhubung ke database MongoDB melalui string koneksi SRV.
Oplog / change streams: Database sumber harus memiliki oplog yang diaktifkan, dengan retensi data log minimal 7 hari. Atau, change streams harus diaktifkan dan mencakup 7 hari terakhir.
Gunakan oplog untuk mencatat perubahan data sumber bila memungkinkan. Change streams memerlukan MongoDB 4.0 atau lebih baru dan tidak mendukung sinkronisasi dua arah. Untuk kluster Amazon DocumentDB non-elastis, Anda harus menggunakan change streams dan mengatur Migration Method ke ChangeStream serta Architecture ke Sharded Cluster.
Pembatasan selama sinkronisasi:
Selama sinkronisasi data penuh, jangan mengubah skema collection atau memodifikasi data bertipe ARRAY.
Jika hanya menjalankan sinkronisasi data penuh (tanpa inkremental), jangan menulis ke database sumber selama tugas berjalan.
Untuk sumber kluster sharded, jangan menjalankan
shardCollection,reshardCollection,unshardCollection,moveCollection, ataumovePrimaryselama tugas berjalan.
Batasan lainnya
Kunci primer tabel tujuan harus diberi nilai
bson_value("_id")dalam konfigurasi Selected Objects.Kolom tujuan bernama
_idatau_valuemenyebabkan kegagalan sinkronisasi.
Jika penggunaan disk pada salah satu node AnalyticDB for MySQL 3.0 melebihi 80%, tugas DTS tertunda dan mengembalikan error. Perkirakan ruang disk yang dibutuhkan sebelum memulai tugas.
Jika kluster tujuan sedang dibackup saat tugas DTS berjalan, tugas tersebut gagal.
Operasi INSERT konkuren selama sinkronisasi data penuh menyebabkan fragmentasi collection. Penggunaan penyimpanan di database tujuan akan lebih besar daripada di sumber.
Presisi FLOAT dan DOUBLE: DTS menggunakan
ROUND(COLUMN, PRECISION). Presisi default adalah 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Tentukan presisi dalam konfigurasi kolom jika bisnis Anda memerlukan nilai berbeda.Transaksi dikonversi menjadi catatan tunggal. Konteks transaksi tidak dipertahankan.
Latensi inkremental: DTS menghitung latensi berdasarkan perbandingan waktu data terbaru yang telah disinkronkan dengan waktu saat ini di sumber. Jika sumber tidak memiliki pembaruan dalam periode panjang, pembacaan latensi mungkin tidak akurat. Lakukan pembaruan pada sumber untuk memperbarui pembacaan latensi.
DTS mencoba melanjutkan tugas yang gagal hingga 7 hari. Sebelum mengalihkan beban kerja ke database tujuan, hentikan atau lepas tugas yang gagal — atau jalankan REVOKE untuk mencabut izin tulis dari akun DTS — guna mencegah data sumber menimpa data tujuan.
Dukungan teknis DTS akan mencoba memulihkan tugas yang gagal dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi. Lihat Modifikasi parameter instans.
Lakukan sinkronisasi data selama jam sepi untuk mengurangi dampak terhadap kinerja database sumber dan tujuan.
Siapkan tugas sinkronisasi
Langkah 1: Buka halaman Sinkronisasi Data
Gunakan salah satu metode berikut untuk menuju halaman konfigurasi tugas.
Konsol DTS
Masuk ke Konsol DTS.Konsol DTS
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi akan dijalankan.
Konsol DMS
Opsi yang tersedia dapat 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 DTS (DTS) > Data Synchronization.
Dari daftar drop-down di samping Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi akan dijalankan.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task.
Konfigurasikan nama tugas dan koneksi database menggunakan parameter pada tabel berikut.
| Parameter | Deskripsi |
|---|---|
| Task Name | Masukkan nama deskriptif. DTS menghasilkan nama secara otomatis, tetapi nama yang bermakna memudahkan identifikasi tugas. Nama tidak perlu unik. |
Database sumber
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih instans database DTS terdaftar untuk mengisi otomatis parameter koneksi. Jika instans belum terdaftar, isi parameter secara manual. Di konsol DMS, pilih dari Select a DMS database instance. |
| Database Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Pilih wilayah instans ApsaraDB for MongoDB sumber. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No jika database sumber berada dalam Akun Alibaba Cloud yang sama. |
| Architecture | Pilih Replica Set untuk contoh ini. Jika sumber menggunakan kluster sharded, pilih Sharded Cluster dan konfigurasikan parameter Shard account dan Shard password. |
| Migration Method | Pilih metode untuk menyinkronkan data inkremental: Oplog (direkomendasikan jika oplog diaktifkan) atau ChangeStream (jika change streams diaktifkan). Lihat Change Streams. Penting Jika Sharded Cluster dipilih untuk Architecture dan ChangeStream dipilih untuk Migration Method, parameter Shard account dan Shard password tidak diperlukan. Jika Sharded Cluster dipilih dengan Oplog, koneksi terenkripsi SSL tidak tersedia. |
| Instance ID | Pilih ID instans ApsaraDB for MongoDB sumber. |
| Authentication Database | Masukkan nama database otentikasi. Jika akun belum dimodifikasi, masukkan admin. |
| Database Account | Masukkan akun database. Lihat Izin yang diperlukan. |
| Database Password | Masukkan password akun. |
| Encryption | Pilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL sesuai kebutuhan Anda. Opsi yang tersedia bergantung pada nilai Access Method dan Architecture. Jika sumber menggunakan arsitektur set replika dengan penerapan yang dikelola sendiri, dan Anda memilih SSL-encrypted, Anda dapat mengunggah sertifikat otoritas sertifikasi (CA) untuk memverifikasi koneksi. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih instans database DTS terdaftar untuk mengisi otomatis parameter koneksi. Jika instans belum terdaftar, isi parameter secara manual. |
| Database Type | Pilih AnalyticDB for MySQL 3.0. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Pilih wilayah kluster AnalyticDB for MySQL 3.0 tujuan. |
| Instance ID | Pilih ID kluster AnalyticDB for MySQL 3.0 tujuan. |
| Database Account | Masukkan akun database. Lihat Izin yang diperlukan. |
| Database Password | Masukkan password akun. |
Klik Test Connectivity and Proceed.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan agar pengujian konektivitas berhasil. Lihat Tambahkan blok CIDR server DTS. Untuk database yang dikelola sendiri, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 3: Konfigurasi objek yang akan disinkronkan
Pada langkah Configure Objects, konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Incremental Data Synchronization dipilih secara default. Secara opsional, pilih juga Full Data Synchronization. Sinkronisasi skema tidak tersedia — buat tabel tujuan secara manual terlebih dahulu. |
| DDL and DML operations to be synchronized | Pilih operasi DDL dan DML yang akan disinkronkan selama sinkronisasi data inkremental. Untuk mengonfigurasi operasi per collection, klik kanan collection di Selected Objects dan pilih operasi di kotak dialog. |
| Merge Tables | Pilih Yes untuk menggabungkan beberapa tabel sumber dengan skema yang sama ke dalam satu tabel tujuan (berguna dalam skenario OLAP). Setelah memilih beberapa tabel dari database sumber, Anda harus mengubah nama tabel-tabel tersebut menjadi nama tabel tujuan menggunakan fitur pemetaan nama objek. Lihat Map object names. DTS menambahkan kolom __dts_data_source (TEXT) untuk mengidentifikasi setiap sumber, dengan format <ID instans DTS>:<DB sumber>:<skema sumber>:<tabel sumber>, contohnya: dts********:dtstestdata:testschema:customer1. Jika Anda tidak perlu menggabungkan tabel sumber tertentu, buat tugas sinkronisasi data terpisah untuk tabel-tabel tersebut. Pilih No (default) untuk menyinkronkan setiap tabel sumber secara terpisah. Peringatan Jangan melakukan operasi DDL yang mengubah skema tabel sumber saat penggabungan diaktifkan, karena hal ini menyebabkan inkonsistensi data atau kegagalan tugas. |
| Processing mode of conflicting tables | Precheck and Report Errors (default): gagal dalam pemeriksaan awal jika tujuan berisi tabel dengan nama yang sama seperti tabel sumber. Ignore Errors and Proceed: melewati pemeriksaan ini. Peringatan Memilih Ignore Errors and Proceed dapat menyebabkan inkonsistensi data. Selama sinkronisasi penuh, baris yang bentrok di tujuan dipertahankan. Selama sinkronisasi inkremental, baris tersebut ditimpa. Jika skema berbeda, tugas mungkin gagal atau hanya beberapa kolom yang disinkronkan. |
Pilih objek yang akan disinkronkan
Di Source Objects, pilih satu atau beberapa collection lalu klik
untuk memindahkannya ke Selected Objects. Hanya collection yang dapat dipilih.Edit nama skema:
Di Selected Objects, klik kanan database yang berisi collection.

Atur Schema Name ke nama database tujuan di kluster AnalyticDB for MySQL 3.0.

(Opsional) Di Select DDL and DML Operations to Be Synchronized, pilih operasi yang akan disinkronkan.

Klik OK.
Edit nama tabel:
Klik kanan collection di Selected Objects.

Atur Table Name ke nama tabel tujuan di kluster AnalyticDB for MySQL 3.0.

(Opsional) Konfigurasikan kondisi filter untuk sinkronisasi data penuh. Lihat Set filter conditions.

(Opsional) Di Select DDL and DML Operations to Be Synchronized, pilih operasi yang akan disinkronkan.

Petakan field sumber ke kolom tujuan. DTS secara otomatis menghasilkan ekspresi
bson_value()untuk field collection. Tinjau dan sesuaikan nilai Column Name, Type, Length, dan Precision untuk setiap kolom.Untuk menghapus field yang tidak perlu disinkronkan, klik ikon
di samping baris tersebut.Jika ekspresi yang dihasilkan otomatis tidak sesuai dengan field yang diperlukan (misalnya, field bersarang), klik ikon
, lalu klik + Add Column:
Konfigurasikan Column Name, Type, Length, dan Precision.
Masukkan ekspresi
bson_value()di Assign Value. Lihat Map nested fields untuk sintaks ekspresi.Ulangi untuk setiap kolom tambahan.
PentingBeri nilai
bson_value("_id")ke kolom kunci primer tabel tujuan. Tentukan hierarki field lengkap dalam setiap ekspresibson_value()— hanya menggunakan field induk (misalnya,bson_value("person")) menyebabkan kehilangan data subfield inkremental.Klik OK.
Langkah 4: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas pada kluster bersama. Beli kluster khusus untuk meningkatkan stabilitas sinkronisasi. Lihat Apa itu kluster khusus DTS. |
| Retry Time for Failed Connections | Waktu DTS mencoba kembali koneksi yang gagal setelah tugas dimulai. Nilai valid: 10–1.440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam jendela ini, tugas dilanjutkan. Catatan Jika beberapa tugas berbagi database sumber atau tujuan, jendela retry terpendek yang berlaku. Biaya DTS tetap berjalan selama periode retry. |
| Retry Time for Other Issues | Waktu DTS mencoba kembali operasi DDL atau DML yang gagal. Nilai valid: 1–1.440 menit. Default: 10 menit. Atur lebih dari 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections. |
| Only one data type for primary key `_id` in a table of the data to be synchronized | Tentukan apakah kunci primer _id memiliki tipe data seragam di seluruh dokumen dalam collection. Yes: DTS melewati pemindaian tipe data dan hanya menyinkronkan satu tipe data per collection. No: DTS memindai tipe data _id dan menyinkronkan semua dokumen. Parameter ini hanya muncul jika Full Data Synchronization dipilih. Atur dengan akurat — nilai yang salah dapat menyebabkan kehilangan data. |
| Enable Throttling for Full Data Synchronization | Batasi beban pada database sumber dan tujuan selama sinkronisasi penuh dengan mengatur 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 beban selama sinkronisasi inkremental dengan mengatur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag opsional untuk mengidentifikasi lingkungan instans DTS. |
| Configure ETL | Pilih Yes untuk mengaktifkan fitur ekstrak, transformasi, dan muat (ETL) serta masukkan pernyataan pemrosesan data. Lihat Konfigurasi ETL dalam tugas migrasi atau sinkronisasi data. Pilih No untuk melewati. |
| Monitoring and Alerting | Pilih Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS. |
Langkah 5: Simpan pengaturan dan jalankan pemeriksaan awal
Untuk melihat pratinjau parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Klik Next: Save Task Settings and Precheck untuk menyimpan dan memulai pemeriksaan awal.
Tugas tidak dapat dimulai hingga lulus pemeriksaan awal.
Jika pemeriksaan awal gagal, klik View Details di samping setiap item yang gagal, selesaikan masalahnya, lalu jalankan ulang pemeriksaan awal.
Jika muncul peringatan untuk item pemeriksaan awal:
Jika peringatan tidak dapat diabaikan, selesaikan masalahnya dan jalankan ulang pemeriksaan awal.
Jika peringatan dapat diabaikan, klik Confirm Alert Details, lalu klik Ignore di kotak dialog, klik OK, lalu klik Precheck Again.
Langkah 6: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan metode penagihan dan kelas instans.
| Parameter | Deskripsi |
|---|---|
| Billing Method | Subscription: bayar di muka untuk durasi tetap; lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam; cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan biaya. |
| Resource Group Settings | Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Manajemen Resource?. |
| Instance Class | Pilih kelas instans berdasarkan kecepatan sinkronisasi yang dibutuhkan. Lihat Kelas instans untuk instansi sinkronisasi data. |
| Subscription Duration | Tersedia hanya untuk metode penagihan subscription. Nilai valid: 1–9 bulan, atau 1, 2, 3, atau 5 tahun. |
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di kotak dialog konfirmasi.
Tugas muncul di daftar tugas. Pantau perkembangannya di sana.
Petakan field bersarang
Gunakan referensi ini jika ekspresi bson_value() yang dihasilkan otomatis tidak sesuai dengan struktur data sumber Anda.
Semua ekspresi bson_value() mengikuti pola ini: tentukan path field lengkap dari field tingkat atas hingga subfield, dengan setiap level sebagai argumen terpisah.
Dokumen sumber contoh
{
"_id": "62cd344c85c1ea6a2a9f****",
"person": {
"name": "neo",
"age": 26,
"sex": "male"
}
}Tabel tujuan
| Nama kolom | Tipe | Catatan |
|---|---|---|
mongo_id | VARCHAR | Kunci primer |
person_name | VARCHAR | — |
person_age | DECIMAL | — |
Penugasan kolom
| Nama kolom | Tipe | Ekspresi penugasan |
|---|---|---|
mongo_id | STRING | bson_value("_id") |
person_name | STRING | bson_value("person","name") |
person_age | DECIMAL | bson_value("person","age") |
Hanya menggunakan field induk — misalnya, bson_value("person") alih-alih bson_value("person","name") — menyebabkan kehilangan data inkremental untuk semua subfield (name, age, sex). Selalu tentukan path field lengkap.
Langkah berikutnya
Aktifkan fitur penggabungan multi-tabel — gabungkan beberapa tabel sumber ke dalam satu tabel tujuan
Pemetaan nama objek — ubah nama collection atau database di tujuan
Konfigurasi pemantauan dan peringatan — atur peringatan untuk kegagalan tugas dan ambang batas latensi
Kelola koneksi database — daftarkan instans database untuk digunakan ulang di berbagai tugas