Layanan Transmisi Data (DTS) melakukan migrasi data dari instans replica set ApsaraDB for MongoDB ke klaster AnalyticDB for MySQL V3.0, mencakup migrasi data penuh dan migrasi data inkremental.
Cara kerja
MongoDB adalah database berbasis dokumen, sedangkan AnalyticDB for MySQL V3.0 adalah database analitik relasional. Sebelum mengonfigurasi migrasi, pahami cara memetakan konsep MongoDB ke konsep database relasional:
| Konsep MongoDB | Setara relasional | Catatan |
|---|---|---|
| Dokumen | Baris | Dokumen MongoDB adalah objek BSON dengan bidang bertipe. DTS memetakan setiap bidang ke kolom menggunakan ekspresi bson_value(). |
| Koleksi | Tabel | Koleksi bersifat fleksibel skema. Anda harus menentukan skema tabel target di AnalyticDB for MySQL sebelum migrasi. |
| Database | Skema | Nama database MongoDB dipetakan ke nama skema di tujuan. |
_id field | Kolom kunci primer | Bidang _id secara default bertipe ObjectId, yang dipetakan ke VARCHAR di AnalyticDB for MySQL. |
DTS membaca data dari instans sumber ApsaraDB for MongoDB, memetakan setiap bidang BSON ke kolom tujuan menggunakan ekspresi bson_value(), lalu menulis data tersebut ke tabel target di AnalyticDB for MySQL V3.0.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
(Hanya untuk sumber klaster sharded) Titik akhir semua node shard dengan username dan password yang konsisten di seluruh node shard. Untuk detailnya, lihat Ajukan titik akhir untuk komponen shard atau ConfigServer.
Klaster tujuan AnalyticDB for MySQL V3.0 dengan ruang penyimpanan tersedia lebih besar daripada ukuran total data instans sumber. Untuk detailnya, lihat Buat klaster.
Kami merekomendasikan agar ruang penyimpanan tersedia di database tujuan minimal 10% lebih besar daripada ukuran total data di database sumber.
Database dan tabel dengan kolom kunci primer yang telah dibuat di klaster tujuan. Untuk detailnya, lihat CREATE DATABASE dan CREATE TABLE.
Fitur multi-pernyataan diaktifkan pada klaster tujuan dengan menjalankan perintah berikut:
Fitur multi-pernyataan memerlukan AnalyticDB for MySQL V3.1.9.3 atau versi lebih baru. Untuk memeriksa dan memperbarui versi minor, lihat Perbarui versi minor klaster.
SET ADB_CONFIG ALLOW_MULTI_QUERIES=true;
Persyaratan desain tabel tujuan:
Kolom kunci primer harus terdiri dari satu kolom saja (kunci primer komposit tidak didukung). Tetapkan kolom kunci primer sebagai
bson_value("_id").Tipe data di tabel tujuan harus kompatibel dengan data sumber. Misalnya, jika bidang
_idMongoDB bertipe ObjectId, kolom yang sesuai di AnalyticDB for MySQL harus bertipe VARCHAR.Jangan memberi nama kolom apa pun dengan _id atau _value. Nama-nama ini menyebabkan tugas migrasi gagal.
Penagihan
| Jenis migrasi | Biaya konfigurasi tugas | Biaya transfer data |
|---|---|---|
| Migrasi data penuh | Gratis | Gratis dalam contoh ini. Ketika Access Method diatur ke Public IP Address, biaya trafik internet berlaku. Lihat Item yang dikenai biaya. |
| Migrasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. | — |
Jenis migrasi
| Jenis migrasi | Deskripsi |
|---|---|
| Migrasi data penuh | DTS melakukan migrasi semua data historis dari instans sumber ApsaraDB for MongoDB ke klaster tujuan AnalyticDB for MySQL V3.0. |
| Migrasi data inkremental | Setelah migrasi data penuh selesai, DTS terus-menerus melakukan migrasi operasi insert, update, dan delete baru dari sumber ke tujuan. Hanya update yang menggunakan perintah $set yang didukung untuk update inkremental. |
Untuk menjaga kontinuitas layanan selama migrasi, pilih kedua opsi Full Data Migration dan Incremental Data Migration. Jika hanya memilih migrasi data penuh, hentikan penulisan ke database sumber selama migrasi untuk mencegah ketidakkonsistenan data.
Izin akun database yang diperlukan
| Database | Migrasi data penuh | Migrasi data inkremental |
|---|---|---|
| Sumber ApsaraDB for MongoDB | Izin baca pada database sumber | Izin baca pada database sumber, database admin, dan database local |
| Tujuan AnalyticDB for MySQL V3.0 | Izin baca dan tulis pada database tujuan | Izin baca dan tulis pada database tujuan |
Untuk detail tentang pengelolaan akun MongoDB, lihat Manajemen akun. Untuk detail tentang akun AnalyticDB for MySQL, lihat Buat akun database.
Catatan penggunaan
Masalah pemblokiran — selesaikan sebelum memulai migrasi:
Hanya koleksi yang dapat dipilih sebagai objek migrasi. Pemilihan tingkat database tidak didukung.
Jika Anda memilih koleksi sebagai objek yang akan dimigrasikan dan ingin memodifikasi koleksi di database tujuan, seperti mengganti nama koleksi, satu tugas mendukung hingga 1.000 koleksi. Untuk koleksi lebih banyak, buat beberapa tugas.
DTS tidak dapat terhubung ke MongoDB melalui titik akhir SRV.
DTS tidak dapat melakukan migrasi data dari database admin atau local.
Anda dapat menggunakan DTS untuk melakukan migrasi data penuh dari database MongoDB standalone, klaster Azure Cosmos DB for MongoDB, atau klaster elastis Amazon DocumentDB.
Untuk sumber klaster sharded: bidang
_iddi setiap koleksi harus unik; jumlah node Mongos tidak boleh melebihi 10; instans tidak boleh berisi dokumen yatim. Untuk detail tentang dokumen yatim, lihat dokumentasi MongoDB dan FAQ DTS.Jika penggunaan disk klaster tujuan melebihi 80%, tugas DTS tertunda dan mengembalikan error. Perkirakan ruang penyimpanan yang diperlukan sebelum memulai.
Jika tipe data di klaster tujuan tidak kompatibel dengan data sumber, tugas migrasi gagal.
Jika klaster tujuan sedang melakukan backup saat tugas DTS berjalan, tugas migrasi gagal.
Informasi transaksi tidak dipertahankan. Transaksi dikonversi menjadi catatan individual di tujuan.
Incremental data migration requirements:
Fitur oplog harus diaktifkan pada database sumber, dan entri oplog harus disimpan selama minimal tujuh hari. Atau, change streams harus diaktifkan dan DTS harus dapat berlangganan perubahan data selama tujuh hari terakhir. Jika DTS tidak dapat memperoleh log operasi, tugas gagal. Dalam kasus luar biasa, ketidakkonsistenan atau kehilangan data dapat terjadi, dan skenario ini tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.
Gunakan metode oplog bila memungkinkan. Metode ini memiliki latensi lebih rendah dibanding change streams.
Change streams hanya didukung ketika database sumber menjalankan MongoDB V4.0 atau versi lebih baru.
Untuk klaster Amazon DocumentDB non-elastis, Anda harus menggunakan change streams: atur Migration Method ke ChangeStreamChange Streams dan Architecture ke Sharded Cluster.
Batasan operasional selama migrasi:
Selama migrasi data penuh, jangan memodifikasi skema atau koleksi (termasuk pembaruan tipe array). Perubahan skema menyebabkan tugas gagal atau menghasilkan ketidakkonsistenan data.
Jika database sumber adalah klaster sharded dan Balancer sedang aktif melakukan penyeimbangan ulang data, latensi migrasi inkremental dapat meningkat.
DTS menggunakan resource baca dan tulis di kedua database sumber dan tujuan. Jalankan migrasi selama jam sepi untuk meminimalkan dampak pada workload produksi.
Selama migrasi data penuh, operasi INSERT konkuren menyebabkan fragmentasi di koleksi tujuan. Setelah migrasi, jejak penyimpanan di tujuan mungkin lebih besar daripada di sumber.
Presisi float dan double:
DTS mengambil nilai FLOAT dan DOUBLE menggunakan ROUND(COLUMN, PRECISION). Presisi default adalah 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Pastikan pengaturan ini memenuhi kebutuhan bisnis Anda sebelum memulai.
Perilaku tugas gagal:
DTS secara otomatis mencoba ulang tugas yang gagal hingga tujuh hari. Sebelum beralih workload ke tujuan, hentikan atau lepas tugas yang gagal, atau cabut izin tulis dari akun DTS. Jika tidak, data sumber dapat menimpa data tujuan setelah tugas dilanjutkan.
Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu delapan jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) dapat dimodifikasi.
Pengukuran latensi migrasi:
DTS menghitung latensi migrasi inkremental berdasarkan stempel waktu catatan terbaru yang dimigrasikan di tujuan dibandingkan dengan stempel waktu saat ini di sumber. Jika tidak ada pembaruan di sumber dalam periode yang lama, latensi yang dilaporkan mungkin tidak akurat. Lakukan operasi update di sumber untuk memperbarui pembacaan latensi.
Buat tugas migrasi
Langkah 1: Buka halaman Data Migration
Gunakan salah satu metode berikut:
Konsol DTS
Login ke Konsol DTS.Konsol DTS
Di panel navigasi kiri, klik Data Migration.
Di pojok kiri atas, pilih wilayah tempat instans migrasi berada.
Konsol DMS
Jalur navigasi yang tepat dapat berbeda tergantung pada mode dan tata letak konsol DMS Anda. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
Login ke Konsol DMS.Konsol DMS
Di bilah navigasi atas, arahkan kursor ke Data + AI > DTS (DTS) > Data Migration.
Dari daftar drop-down di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task, lalu konfigurasikan parameter berikut:
Database sumber
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Gunakan nama deskriptif untuk mengidentifikasi tugas. Nama tidak perlu unik. |
| Select Existing Connection | Jika database sumber sudah terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika tidak, konfigurasikan parameter di bawah. Di konsol DMS, pilih instans dari Select a DMS database instance. Untuk detail tentang pendaftaran instans, lihat Kelola koneksi database. |
| Database Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instans sumber ApsaraDB for MongoDB berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No saat menggunakan instans di Akun Alibaba Cloud saat ini. |
| Architecture | Arsitektur deployment instans sumber. Pilih Replica Set. Jika sumber adalah Sharded Cluster, tentukan juga Shard account dan Shard password. |
| Migration Method | Metode yang digunakan untuk migrasi data inkremental. Oplog (direkomendasikan): Didukung saat sumber memiliki oplog diaktifkan. Oplog diaktifkan secara default di ApsaraDB for MongoDB. Metode ini memiliki latensi lebih rendah dibanding ChangeStream. ChangeStream: Didukung saat sumber memiliki change streams diaktifkan. Saat arsitektur sumber adalah Sharded Cluster menggunakan ChangeStream, akun dan password shard tidak diperlukan. Saat sumber adalah Amazon DocumentDB (klaster non-elastis), hanya ChangeStream yang didukung. |
| Instance ID | ID instans sumber ApsaraDB for MongoDB. |
| Authentication Database | Database yang menyimpan kredensial autentikasi. Nilai default adalah admin. |
| Database Account | Akun database untuk instans sumber. Lihat bagian Izin akun database yang diperlukan. |
| Database Password | Password untuk akun database. |
| Encryption | Metode enkripsi koneksi. Opsi: Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada Access Method dan Architecture yang dipilih. SSL-encrypted tidak tersedia saat Architecture adalah Sharded Cluster dan Migration Method adalah Oplog. Untuk replica set yang dikelola sendiri dengan SSL-encrypted dipilih, unggah sertifikat CA untuk memverifikasi koneksi. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Jika klaster tujuan sudah terdaftar di DTS, pilih dari daftar drop-down. Jika tidak, konfigurasikan parameter di bawah. |
| Database Type | Pilih AnalyticDB for MySQL 3.0. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat klaster tujuan AnalyticDB for MySQL V3.0 berada. |
| Instance ID | ID klaster tujuan AnalyticDB for MySQL V3.0. |
| Database Account | Akun database untuk klaster tujuan. Lihat bagian Izin akun database yang diperlukan. |
| Database Password | Password untuk akun database. |
Langkah 3: Uji konektivitas dan lanjutkan
Klik Test Connectivity and Proceed di bagian bawah halaman.
Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber maupun tujuan. DTS dapat menambahkannya secara otomatis, atau Anda dapat melakukannya secara manual. Lihat Tambahkan blok CIDR server DTS. Untuk database yang dikelola sendiri yang tidak menggunakan Alibaba Cloud Instance sebagai metode akses, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 4: Konfigurasi objek yang akan dimigrasikan
Di halaman Configure Objects, atur parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Migration Types | Pilih Full Data Migration untuk hanya memigrasikan data historis. Pilih kedua opsi Full Data Migration dan Incremental Data Migration untuk menjaga sinkronisasi tujuan selama migrasi. Jika hanya memilih migrasi data penuh, jangan menulis ke sumber selama migrasi. |
| DDL and DML Operations to Be Synchronized | Operasi DDL dan DML yang akan dimigrasikan di tingkat instans selama migrasi data inkremental. Untuk mengonfigurasi operasi di tingkat koleksi, klik kanan koleksi di Selected Objects dan pilih operasi yang akan dimigrasikan. |
| Merge Tables | No (default): Migrasikan setiap koleksi ke tabelnya sendiri. Yesalert notification settings: Gabungkan beberapa koleksi sumber ke satu tabel tujuan. DTS menambahkan kolom __dts_data_source untuk mengidentifikasi sumber data. Lihat Aktifkan fitur penggabungan multi-tabel. Jika Anda memilih Yes, semua tabel sumber yang dipilih dalam tugas digabung menjadi satu tabel tujuan. Buat tugas terpisah untuk koleksi yang tidak boleh digabung. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: Gagal dalam pemeriksaan awal jika tujuan berisi koleksi dengan nama yang sama seperti sumber. Gunakan pemetaan nama objek untuk mengganti nama koleksi yang dimigrasikan jika diperlukan. Lihat Map object names. Ignore Errors and Proceed: Melewati pemeriksaan awal terkait nama koleksi duplikat. DTS melewati catatan yang memiliki kunci utama yang sama dengan catatan yang sudah ada di tujuan, yang dapat menyebabkan ketidaksesuaian data. |
| Source Objects | Pilih satu atau beberapa koleksi dari Source Objects, lalu klik |
Konfigurasi bagian Selected Objects:
Ganti nama database (skema) tujuan:
Di Selected Objects, klik kanan database sumber.

Atur Schema Name ke nama database di klaster tujuan AnalyticDB for MySQL V3.0.

(Opsional) Pilih operasi DDL dan DML yang akan dimigrasikan selama migrasi data inkremental.

Klik OK.
Ganti nama tabel tujuan:
Di Selected Objects, klik kanan koleksi.

Atur Table Name ke nama tabel di klaster tujuan.

(Opsional) Atur kondisi filter untuk migrasi data penuh. Lihat Tentukan kondisi filter.

(Opsional) Pilih operasi DDL dan DML untuk migrasi data inkremental.

Petakan bidang sumber ke kolom tujuan: DTS secara otomatis menghasilkan ekspresi
bson_value()untuk setiap bidang. Tinjau dan sesuaikan pemetaan untuk setiap kolom. Untuk setiap kolom: Jika suatu bidang memerlukan ekspresi berbeda (misalnya, subfield bersarang):Klik
di sebelah kolom, lalu klik + Add Column. 
Atur Column Name, Type, Length, dan Precision.
Masukkan ekspresi
bson_value()di kolom Assign Value. Lihat bagian Contoh pemetaan bidang sebagai referensi.Ulangi untuk setiap bidang.
PentingTetapkan kolom kunci primer sebagai
bson_value("_id"). Gunakan ekspresibson_value()bersarang untuk subfield:bson_value("parent", "child"). Menggunakanbson_value("parent")saja tidak menangkap perubahan inkremental pada subfield.Klik OK.
Langkah 5: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan hal berikut:
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas ke klaster bersama. Untuk stabilitas lebih tinggi, beli klaster khusus. Lihat Apa itu klaster khusus DTS. |
| Retry Time for Failed Connections | Berapa lama DTS mencoba ulang setelah kegagalan koneksi. Nilai valid: 10–1.440 menit. Default: 720 menit. Atur lebih dari 30 menit. Jika DTS terhubung kembali dalam periode ini, tugas dilanjutkan. Jika beberapa tugas berbagi sumber atau tujuan yang sama, nilai yang paling baru diatur berlaku. DTS mengenakan biaya untuk instans selama percobaan ulang. |
| Retry Time for Other Issues | Berapa lama DTS mencoba ulang setelah kegagalan operasi DDL atau DML. 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. |
| Enable Throttling for Full Data Migration | Membatasi operasi baca/tulis selama migrasi data penuh untuk mengurangi beban pada 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 saat Full Data Migration dipilih. |
| Only one data type for primary key _id in a single table | Tersedia hanya saat Migration Types diatur ke Full Data Migration. Yes: DTS tidak memindai tipe data kunci primer di data sumber selama fase migrasi penuh. No: DTS memindai tipe data kunci primer di data sumber selama fase migrasi penuh. |
| Enable Throttling for Incremental Data Migration | Membatasi operasi selama migrasi data inkremental. Konfigurasikan RPS of Incremental Data Migration dan Data migration speed for incremental migration (MB/s). Tersedia hanya saat Incremental Data Migration dipilih. |
| Environment Tag | Tag opsional untuk mengidentifikasi instans DTS. |
| Configure ETL | Apakah akan mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Yes: Masukkan pernyataan pemrosesan data di editor kode. Lihat Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data. No: ETL dinonaktifkan. |
| Monitoring and Alerting | Yes: Konfigurasikan ambang batas peringatan dan kontak notifikasi. DTS memberi tahu kontak saat tugas gagal atau latensi migrasi melebihi ambang batas. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS. No: Tidak ada peringatan yang dikonfigurasi. |
Langkah 6: Jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat parameter API sebelum menyimpan, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
DTS menjalankan pemeriksaan awal sebelum memulai migrasi. Tugas hanya dimulai setelah pemeriksaan awal berhasil.
Jika suatu item gagal, klik View Details untuk melihat penyebabnya, selesaikan masalah, lalu jalankan pemeriksaan awal lagi.
Jika peringatan dipicu:
Untuk peringatan pemblokiran: selesaikan masalah dan jalankan pemeriksaan awal lagi.
Untuk peringatan non-pemblokiran: klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 7: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman Purchase Instance, konfigurasikan hal berikut:
Parameter Deskripsi Resource Group Kelompok sumber daya untuk instans migrasi. Default: default resource group. Lihat Apa itu Resource Management? Instance Class Kelas kecepatan migrasi. Pilih berdasarkan workload Anda. Lihat Kelas instans migrasi data. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms dengan mencentang kotak.
Klik Buy and Start, lalu klik OK di dialog konfirmasi.
Monitor progres migrasi di halaman Data Migration.
Hanya migrasi data penuh: Status tugas menunjukkan Completed saat selesai dan tugas berhenti secara otomatis.
Migrasi data penuh dan inkremental: Status tugas menunjukkan Running dan tugas berjalan terus-menerus. Hentikan tugas secara manual saat Anda siap beralih workload ke tujuan.
Pemetaan tipe data
| Tipe data MongoDB | Tipe data AnalyticDB for MySQL V3.0 |
|---|---|
| ObjectId | VARCHAR |
| String | VARCHAR |
| Dokumen | VARCHAR |
| DbPointer | VARCHAR |
| Array | VARCHAR |
| Date | DATETIME |
| TimeStamp | DATETIME |
| Double | DOUBLE |
| Integer 32-bit (BsonInt32) | INTEGER |
| Integer 64-bit (BsonInt64) | BIGINT |
| Decimal128 | DECIMAL |
| Boolean | BOOLEAN |
| Null | VARCHAR |
Contoh pemetaan bidang
Contoh ini menunjukkan cara memetakan bidang dari dokumen MongoDB dengan objek bersarang ke kolom di tabel AnalyticDB for MySQL V3.0.
Struktur Data MongoDB Sumber
{
"_id": "62cd344c85c1ea6a2a9f****",
"person": {
"name": "neo",
"age": 26,
"sex": "male"
}
}Struktur Tabel Klaster Tujuan AnalyticDB for MySQL 3.0
| Nama kolom | Tipe | Catatan |
|---|---|---|
| mongo_id | VARCHAR | Kolom kunci primer |
| person_name | VARCHAR | — |
| person_age | DECIMAL | — |
Konfigurasi Kolom Baru
Untuk bidang bersarang, gunakan bson_value("parent", "child") daripada bson_value("parent"). Menggunakan bson_value("person") memperlakukan seluruh objek person sebagai satu nilai dan tidak menangkap pembaruan inkremental pada subfield seperti name, age, atau sex.
| Nama kolom | Tipe | Nilai yang ditetapkan | Catatan |
|---|---|---|---|
| mongo_id | STRING | bson_value("_id") | Kunci primer. Memetakan bidang _id tingkat atas. |
| person_name | STRING | bson_value("person", "name") | Memetakan subfield name yang bersarang di dalam person. |
| person_age | DECIMAL | bson_value("person", "age") | Memetakan subfield age yang bersarang di dalam person. |
Langkah selanjutnya
Setelah status tugas migrasi menunjukkan Running dan latensi migrasi inkremental mendekati 0, klaster tujuan AnalyticDB for MySQL V3.0 Anda telah tersinkronisasi dengan sumber. Alihkan workload Anda ke klaster tujuan dan hentikan tugas DTS.