Data Transmission Service (DTS) menyinkronkan data dari replica set ApsaraDB for MongoDB ke klaster PolarDB for MySQL. Gunakan topik ini untuk membuat dan menjalankan tugas sinkronisasi dari awal hingga selesai.
Sebelum memulai
Sebelum membuat tugas sinkronisasi, selesaikan langkah-langkah persiapan berikut.
Siapkan klaster tujuan
Buat klaster PolarDB for MySQL dengan kapasitas penyimpanan yang tersedia lebih besar daripada ukuran total data sumber (disarankan minimal 10% lebih besar). Lihat Pembelian kustom dan Beli klaster langganan.
Buat database dan tabel dengan kolom kunci primer di klaster tujuan. Lihat Kelola database.
Saat merancang skema tabel tujuan:
Gunakan varchar untuk kolom apa pun yang memetakan ke field ObjectId MongoDB
_id.Jangan memberi nama kolom apa pun dengan _id atau _value.
Konfigurasikan akun dengan izin yang diperlukan
| Database | Izin yang diperlukan | Referensi |
|---|---|---|
| ApsaraDB for MongoDB sumber | Baca pada database sumber, database admin, dan database local | Manajemen akun |
| PolarDB for MySQL tujuan | Baca dan tulis pada database tujuan | Buat dan kelola akun database |
(Hanya untuk klaster sharded) Ajukan titik akhir shard
Jika sumber berupa klaster sharded, ajukan titik akhir untuk semua node shard. Semua node shard harus menggunakan password akun dan titik akhir yang sama. Lihat Ajukan titik akhir untuk shard.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Jenis sinkronisasi
| Jenis | Deskripsi |
|---|---|
| Sinkronisasi data penuh | Menyinkronkan data historis dari instans ApsaraDB for MongoDB sumber ke klaster PolarDB for MySQL tujuan. |
| Sinkronisasi data inkremental | Setelah sinkronisasi data penuh selesai, secara terus-menerus menyinkronkan operasi insert, update, dan delete. Hanya dokumen yang diperbarui menggunakan perintah $set yang disertakan. |
Batasan
Batasan database sumber
| Batasan | Detail |
|---|---|
| Bandwidth keluar | Server sumber harus memiliki bandwidth keluar yang mencukupi. Bandwidth yang tidak mencukupi mengurangi kecepatan sinkronisasi. |
| Batas koleksi | Satu tugas mendukung hingga 1.000 koleksi ketika diperlukan penggantian nama objek. Untuk lebih dari 1.000 koleksi, konfigurasikan beberapa tugas. |
| Database yang tidak didukung | DTS tidak dapat menyinkronkan data dari database admin, config, atau local. |
| Jenis sumber yang tidak didukung | Instans ApsaraDB for MongoDB standalone, klaster Azure Cosmos DB for MongoDB, dan klaster elastis Amazon DocumentDB tidak didukung. |
| Oplog atau change stream | Fitur oplog harus diaktifkan dengan log operasi dipertahankan minimal selama 7 hari, ATAU change stream harus diaktifkan dan DTS harus dapat berlangganan perubahan dalam 7 hari terakhir. Jika kedua kondisi tersebut tidak terpenuhi, DTS mungkin gagal memperoleh log, sehingga menyebabkan kegagalan tugas atau inkonsistensi data. |
| Versi change stream | Change stream memerlukan MongoDB V4.0 atau versi yang lebih baru. |
| Klaster inelastis Amazon DocumentDB | Atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster. |
| Operasi selama sinkronisasi penuh | Jangan mengubah skema database atau koleksi, atau memodifikasi data bertipe ARRAY. Jika hanya menjalankan sinkronisasi penuh (tanpa inkremental), jangan menulis ke database sumber. |
Batasan tambahan untuk klaster sharded:
Field
_iddi setiap koleksi harus unik. Nilai_idyang duplikat menyebabkan inkonsistensi data.Jumlah node mongos tidak boleh melebihi 10.
Instans tidak boleh berisi dokumen orphaned. Lihat dokumentasi MongoDB dan topik FAQ.
Jika balancer ApsaraDB for MongoDB diaktifkan, instans mungkin mengalami penundaan.
Batasan database tujuan dan tugas
| Batasan | Detail |
|---|---|
| Jenis objek sinkronisasi | Hanya koleksi yang dapat dipilih sebagai objek sinkronisasi. |
| Persyaratan kunci primer | Tabel tujuan harus memiliki kunci primer unik satu kolom (kunci primer komposit tidak didukung). Tetapkan bson_value("_id") ke kolom kunci primer. |
| Nama kolom yang dicadangkan | Tabel tujuan tidak boleh memiliki kolom bernama _id atau _value. |
| Transaksi | Transaksi tidak dipertahankan. Transaksi yang disinkronkan dikonversi menjadi catatan tunggal. |
| Set karakter | Jika data mencakup karakter langka atau emoji (karakter 4-byte), database dan tabel tujuan harus menggunakan set karakter UTF8mb4. Jika Anda menggunakan sinkronisasi skema DTS, atur parameter character_set_server ke UTF8mb4. |
| Presisi FLOAT/DOUBLE | DTS menggunakan ROUND(COLUMN,PRECISION) untuk menangani nilai FLOAT dan DOUBLE. Jika presisi tidak ditentukan, DTS menggunakan default 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Verifikasi nilai default ini sebelum memulai sinkronisasi. |
| Jam sepi | Jalankan sinkronisasi selama jam sepi. Sinkronisasi data penuh menggunakan sumber daya baca dan tulis kedua database, yang dapat meningkatkan beban server. |
| Penyimpanan pasca-sinkronisasi | Setelah sinkronisasi penuh, operasi INSERT konkuren dapat menyebabkan fragmentasi pada koleksi tujuan, sehingga penggunaan penyimpanan lebih tinggi dibandingkan sumber. |
| Melanjutkan tugas yang gagal | DTS mencoba melanjutkan tugas yang gagal hingga 7 hari. Sebelum mengalihkan beban kerja ke tujuan, hentikan atau rilis tugas yang gagal, atau cabut izin tulis DTS menggunakan REVOKE. Jika tidak, data sumber dapat menimpa data tujuan saat tugas dilanjutkan. |
| Perhitungan latensi | DTS menghitung latensi sinkronisasi inkremental berdasarkan timestamp data terbaru yang telah disinkronkan di tujuan dan timestamp saat ini di sumber. Periode panjang tanpa pembaruan sumber dapat menyebabkan pembacaan latensi yang tidak akurat. Lakukan pembaruan pada sumber untuk memperbarui latensi. |
| Pemulihan kegagalan tugas | Jika tugas DTS gagal, dukungan teknis DTS mencoba memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) mungkin dimodifikasi. |
Buat tugas sinkronisasi data
Konfigurasi tugas terdiri dari lima langkah:
Buka halaman sinkronisasi data.
Konfigurasikan database sumber dan tujuan.
Konfigurasikan objek yang akan disinkronkan.
Jalankan pemeriksaan awal.
Beli instans.
Langkah 1: Buka halaman sinkronisasi data
Gunakan salah satu metode berikut.
Konsol DTS
Login ke Konsol DTS.Konsol DTS
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi berada.
Konsol DMS
Langkah aktual dapat berbeda tergantung pada mode dan tata letak konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
Login ke Konsol DMS.Konsol DMS
Di bilah navigasi atas, arahkan pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat tugas berada.
Langkah 2: Konfigurasikan database sumber dan tujuan
Klik Create Task.
(Opsional) Klik New Configuration Page di pojok kanan atas.
- Lewati langkah ini jika Back to Previous Version ditampilkan — halaman sudah menggunakan versi baru. - Gunakan versi baru halaman konfigurasi jika memungkinkan.
Konfigurasikan database sumber dan tujuan menggunakan parameter berikut.
Umum
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif untuk mengidentifikasi tugas. Nama tidak perlu unik. |
Database sumber
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Jika instans sumber sudah terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi parameter lainnya secara otomatis. Jika tidak, konfigurasikan parameter di bawah ini secara manual. Di konsol DMS, pilih instans dari daftar drop-down Select a DMS database instance. |
| Database Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instans ApsaraDB for MongoDB sumber berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No jika database sumber milik Akun Alibaba Cloud saat ini. |
| Architecture | Arsitektur instans sumber. Pilih Replica Set untuk contoh ini. Jika sumber berupa Sharded Cluster, tentukan juga Shard account dan Shard password. |
| Migration Method | Metode yang digunakan untuk menyinkronkan data inkremental. Opsi: Oplog (disarankan) atau ChangeStream.- Oplog: Memerlukan fitur oplog diaktifkan. Oplog diaktifkan secara default untuk instans ApsaraDB for MongoDB dan memberikan latensi sinkronisasi rendah karena kecepatan pengambilan log yang cepat.- ChangeStream: Memerlukan change stream diaktifkan. Tersedia untuk MongoDB V4.0 atau versi yang lebih baru. Untuk klaster Amazon DocumentDB inelastis, gunakan ChangeStream saja. Jika Architecture adalah Sharded Cluster, parameter Shard account dan Shard password tidak diperlukan. Lihat Change Streams. |
| Instance ID | ID instans ApsaraDB for MongoDB sumber. |
| Authentication Database | Database yang menyimpan kredensial akun. Default: admin. |
| Database Account | Akun dengan izin yang diperlukan. |
| Database Password | Password untuk akun database. |
| Encryption | Metode enkripsi koneksi: Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada pengaturan Access Method dan Architecture — opsi yang ditampilkan di konsol berlaku. Catatan SSL-encrypted tidak tersedia ketika Architecture adalah Sharded Cluster dan Migration Method adalah Oplog. Untuk MongoDB yang dikelola sendiri menggunakan arsitektur Replica Set dengan metode akses non-Alibaba Cloud dan enkripsi SSL, unggah sertifikat CA untuk memverifikasi koneksi. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Jika instans tujuan sudah terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi parameter lainnya secara otomatis. Jika tidak, konfigurasikan parameter di bawah ini secara manual. |
| Database Type | Pilih PolarDB for MySQL. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat klaster PolarDB for MySQL tujuan berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No jika database tujuan milik Akun Alibaba Cloud saat ini. |
| PolarDB Cluster ID | ID klaster PolarDB for MySQL tujuan. |
| Database Account | Akun dengan izin yang diperlukan. |
| Database Password | Password untuk akun database. |
| Encryption | Metode enkripsi koneksi. Lihat Konfigurasikan enkripsi SSL. |
Klik Test Connectivity and Proceed.
- Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan kedua database. DTS menambahkannya secara otomatis, atau tambahkan secara manual. Lihat Tambahkan blok CIDR server DTS. - Untuk database yang dikelola sendiri di mana Access Method bukan Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 3: Konfigurasikan objek yang akan disinkronkan
Di langkah Configure Objects, atur parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Incremental Data Synchronization dipilih secara default. Pilih Full Data Synchronization jika diperlukan. Schema Synchronization tidak dapat dipilih. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): Memeriksa konflik nama tabel sebelum memulai. Jika ada nama tabel identik, pemeriksaan awal gagal dan tugas tidak dapat dimulai. Gunakan fitur pemetaan nama objek untuk mengganti nama tabel yang bertabrakan jika tidak dapat dihapus atau diganti namanya.Ignore Errors and Proceed: Melewati pemeriksaan konflik. Peringatan Opsi ini berisiko menyebabkan inkonsistensi data. Selama sinkronisasi penuh, catatan tujuan yang sudah ada dengan kunci primer atau unik yang cocok tetap dipertahankan. Selama sinkronisasi inkremental, catatan tersebut ditimpa. Jika skema berbeda, inisialisasi mungkin gagal atau hanya kolom parsial yang disinkronkan. |
| Capitalization of Object Names in Destination Instance | Kebijakan kapitalisasi untuk nama database, nama tabel, dan nama kolom di tujuan. Default: DTS default policy. Lihat Tentukan kapitalisasi nama objek. |
| Source Objects | Pilih satu atau beberapa koleksi dari bagian Source Objects, lalu klik ikon |
Di bagian Selected Objects, konfigurasikan pemetaan objek. (Opsional) Untuk menghapus field yang tidak perlu disinkronkan, klik ikon
setelah baris tersebut.Ganti nama database: Klik kanan database di Selected Objects.
Ubah Schema Name menjadi nama database target di PolarDB for MySQL.
Klik OK.Ganti nama koleksi: Klik kanan koleksi di Selected Objects.
Ubah Table Name menjadi nama tabel target di PolarDB for MySQL. 
(Opsional) Tentukan kondisi filter. Lihat Tentukan kondisi filter.

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

Petakan field: DTS secara otomatis memetakan data koleksi dan menghasilkan ekspresi
bson_value()di kolom Assign Value. Verifikasi bahwa ekspresi tersebut sesuai kebutuhan Anda, lalu konfigurasikan Column Name, Type, Length, dan Precision untuk setiap field.PentingTetapkan
bson_value("_id")ke kolom kunci primer tabel tujuan. Tentukan field dan subfield-nya dalam setiap ekspresibson_value()sesuai hierarki dokumen. Menentukan hanya field induk (misalnya,bson_value("person")) tidak menyinkronkan subfield-nya ke tujuan.Field dengan ekspresi yang benar
Atur Column Name menjadi nama kolom yang sesuai di tabel PolarDB for MySQL tujuan.
Pilih Type yang kompatibel dengan data sumber. Untuk pemetaan tipe data, lihat bagian Pemetaan tipe data.
(Opsional) Atur Length dan Precision.
Ulangi untuk setiap field.
Field dengan ekspresi yang salah
Klik ikon
di kolom Actions untuk baris tersebut.Klik + Add Column.

Atur Column Name, Type, Length, dan Precision.
Masukkan ekspresi
bson_value()yang benar di Assign Value. Untuk contoh, lihat bagian Contoh pemetaan field.Ulangi untuk setiap field.
Penting- Tetapkan
bson_value("_id")ke kolom kunci primer tabel tujuan. - Tentukan field dan subfield-nya dalam setiap ekspresibson_value()sesuai hierarki dokumen. Menentukan hanya field induk (misalnya,bson_value("person")) tidak menyinkronkan subfield-nya ke tujuan.Klik OK.
Klik Next: Advanced Settings dan konfigurasikan parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas ke klaster bersama. Beli klaster khusus untuk meningkatkan stabilitas sinkronisasi. Lihat Apa itu klaster khusus DTS. |
| Select the engine type of the destination database | Mesin penyimpanan database tujuan. Opsi: InnoDB (default) atau X-Engine (untuk beban kerja OLTP). |
| Retry Time for Failed Connections | Rentang waktu di mana DTS mencoba koneksi yang gagal. Nilai valid: 10–1440 menit. Default: 720. Atur ke nilai lebih dari 30. Jika DTS terhubung kembali dalam rentang ini, tugas dilanjutkan. Jika tidak, tugas gagal. Jika beberapa tugas berbagi database sumber atau tujuan yang sama dengan rentang percobaan ulang berbeda, rentang terpendek yang berlaku. DTS terus menagih selama percobaan ulang. |
| Retry Time for Other Issues | Rentang waktu di mana DTS mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10. Atur ke nilai lebih dari 10 dan kurang dari nilai Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Membatasi penggunaan sumber daya baca/tulis selama sinkronisasi penuh untuk mengurangi beban server database. 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 ketika Full Data Synchronization dipilih. |
| Only one data type for primary key _id in a table of the data to be synchronized | Mengontrol apakah DTS memindai tipe data _id selama sinkronisasi penuh. Yespengaturan pemberitahuan peringatan: Lewati pemindaian. No: Lakukan pemindaian tipe. Ditampilkan hanya ketika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Membatasi penggunaan sumber daya selama sinkronisasi inkremental. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag opsional untuk mengkategorikan tugas. |
| Configure ETL | Tentukan apakah akan mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Yes: Masukkan pernyataan pemrosesan data di editor kode. Lihat Konfigurasi ETL. No: Nonaktifkan ETL. |
| Monitoring and Alerting | Menentukan apakah akan mengonfigurasi peringatan. Yes: Atur ambang batas peringatan dan kontak notifikasi. No: Tidak ada peringatan. Lihat Konfigurasikan pemantauan dan peringatan. |
Langkah 4: Simpan pengaturan dan jalankan pemeriksaan awal
Untuk melihat pratinjau parameter API untuk tugas ini, arahkan pointer ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Untuk melanjutkan, klik Next: Save Task Settings and Precheck.
DTS menjalankan pemeriksaan awal sebelum memulai tugas. Tugas hanya dimulai setelah lulus pemeriksaan awal.
Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, perbaiki masalahnya, lalu klik Precheck Again.
Jika peringatan dipicu: untuk item yang tidak dapat diabaikan, perbaiki masalah dan jalankan ulang pemeriksaan awal. Untuk item yang dapat diabaikan, klik Confirm Alert Details > Ignore > OK > Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Langkah 5: Beli 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. Rilis instans saat tidak lagi diperlukan untuk menghentikan tagihan. |
| Resource Group Settings | Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management? |
| Instance Class | Kelas instans menentukan kecepatan sinkronisasi. Lihat Kelas instans. |
| Subscription Duration | Tersedia hanya untuk metode penagihan Subscription. Opsi: 1–9 bulan, atau 1, 2, 3, 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.
Setelah tugas dimulai, pantau perkembangannya di daftar tugas.
Pemetaan tipe data
Tabel berikut menunjukkan cara tipe data MongoDB dipetakan ke tipe data PolarDB for MySQL.
| Tipe data MongoDB | Tipe data PolarDB for MySQL | Catatan |
|---|---|---|
| ObjectId | VARCHAR | Disimpan sebagai representasi string. |
| String | VARCHAR | |
| Document | VARCHAR | |
| DbPointer | VARCHAR | |
| Array | VARCHAR | |
| Date | DATETIME | |
| TimeStamp | DATETIME | |
| Double | DOUBLE | Presisi default 308 digit melalui ROUND(COLUMN,PRECISION) jika tidak ditentukan. |
| Integer 32-bit (BsonInt32) | INTEGER | |
| Integer 64-bit (BsonInt64) | BIGINT | |
| Decimal128 | DECIMAL | |
| Boolean | BOOLEAN | |
| Null | VARCHAR |
Contoh pemetaan field
Contoh berikut menggunakan struktur dokumen sumber dan skema tabel tujuan berikut.
Struktur data instans ApsaraDB for MongoDB sumber
{
"_id": "62cd344c85c1ea6a2a9f****",
"person": {
"name": "neo",
"age": 26,
"sex": "male"
}
}Skema tabel klaster PolarDB for MySQL tujuan
| Nama kolom | Tipe | Catatan |
|---|---|---|
| mongo_id | varchar | Kunci primer |
| person_name | varchar | |
| person_age | decimal |
Konfigurasi kolom baru
Ketiga kolom tujuan memerlukan ekspresi field bersarang karena person adalah field induk yang berisi subfield.
| Nama kolom | Tipe | Tetapkan nilai |
|---|---|---|
| mongo_id | STRING | bson_value("_id") |
| person_name | STRING | bson_value("person","name") |
| person_age | DECIMAL | bson_value("person","age") |
Menentukan hanya bson_value("person") tidak menyinkronkan subfield name, age, atau sex ke kolom individual. Selalu gunakan jalur hierarkis lengkap dalam ekspresi bson_value().
Setelah konfigurasi ini, tabel tujuan menerima data dalam struktur berikut:
| mongo_id | person_name | person_age |
|---|---|---|
| 62cd344c85c1ea6a2a9f**** | neo | 26 |