Layanan Transmisi Data (DTS) secara terus-menerus menyinkronkan data dari instans ApsaraDB for MongoDB berupa replica set atau sharded cluster ke instans AnalyticDB for PostgreSQL. Topik ini mencakup sinkronisasi data penuh dan sinkronisasi data inkremental.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki instans AnalyticDB for PostgreSQL dengan ruang penyimpanan yang tersedia lebih besar daripada ukuran total data pada instans sumber ApsaraDB for MongoDB. Sediakan ruang penyimpanan tujuan sebesar 110% dari ukuran data sumber untuk menjaga ruang cadangan 10%. Untuk membuat instans, lihat Create an instance.
Membuat database, skema, dan tabel dengan kolom kunci primer di instans tujuan untuk menerima data. Untuk sintaks SQL, lihat SQL syntax.
Tipe data setiap kolom tujuan harus kompatibel dengan field MongoDB yang sesuai. Misalnya, jika field
_idbertipe ObjectId, tipe kolom tujuan harus varchar.Jangan memberi nama kolom tujuan apa pun sebagai _id atau _value.
(Untuk sumber berupa sharded cluster) Memiliki endpoint, username, dan password semua node shard. Semua akun shard harus menggunakan kredensial yang sama. Untuk mendapatkan endpoint shard, lihat Apply for an endpoint for a shard.
Penagihan
| Tipe sinkronisasi | Biaya |
|---|---|
| Sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Billing overview. |
Tipe sinkronisasi
| Tipe sinkronisasi | Deskripsi |
|---|---|
| Sinkronisasi data penuh | DTS menyalin seluruh data yang ada dari koleksi yang dipilih di instans sumber ke instans tujuan. |
| Sinkronisasi data inkremental | Setelah sinkronisasi data penuh selesai, DTS terus-menerus menerapkan operasi insert, update, dan delete dari sumber ke tujuan. Untuk data inkremental berbasis file, hanya perintah $set yang didukung. |
Izin yang diperlukan
Metode sinkronisasi inkremental yang tersedia untuk DTS bergantung pada izin yang diberikan kepada akun database.
| Database | Izin yang diperlukan | Metode sinkronisasi inkremental | Referensi |
|---|---|---|---|
| Instans sumber ApsaraDB for MongoDB | Izin baca pada database sumber, admin, dan local | Oplog (direkomendasikan untuk sinkronisasi latensi rendah) atau ChangeStream | Manage the permissions of MongoDB database users |
| Instans tujuan AnalyticDB for PostgreSQL | Izin baca dan tulis pada database tujuan. Gunakan akun awal atau akun dengan izin RDS_SUPERUSER. | N/A | Membuat dan mengelola akun database serta Mengelola pengguna dan izin |
Pemilihan antara Oplog dan ChangeStream:
| Metode | Persyaratan | Catatan |
|---|---|---|
| Oplog (direkomendasikan) | Oplog diaktifkan dan menyimpan data log minimal selama 7 hari | Diaktifkan secara default baik pada MongoDB self-managed maupun ApsaraDB for MongoDB. Latensi lebih rendah karena pengambilan log yang cepat. |
| ChangeStream | MongoDB 4.0 atau versi lebih baru; change streams diaktifkan | Tidak mendukung sinkronisasi dua arah. Diperlukan untuk kluster Amazon DocumentDB non-elastis (atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster). |
Batasan
Batasan database sumber
| Limit | Detail |
|---|---|
| Bandwidth | Server database sumber harus memiliki bandwidth keluar yang cukup; jika tidak, kecepatan sinkronisasi akan terpengaruh. |
| Pemetaan nama koleksi | Saat mengonfigurasi pemetaan nama untuk koleksi, satu tugas mendukung hingga 1.000 koleksi. Untuk koleksi lebih banyak, buat beberapa tugas atau sinkronkan seluruh database. |
Sharded cluster: keunikan _id | Field _id di setiap koleksi harus unik; jika tidak, ketidakkonsistenan data dapat terjadi. |
| Sharded cluster: batas node Mongos | Jumlah node Mongos tidak boleh melebihi 10. |
| Sharded cluster: dokumen yatim (orphaned documents) | Instans sumber tidak boleh mengandung dokumen yatim. Dokumen yatim menyebabkan ketidakkonsistenan data dan kegagalan tugas. Lihat dokumentasi MongoDB dan How do I delete orphaned documents? |
| Tipe sumber yang tidak didukung | Instans ApsaraDB for MongoDB standalone, kluster Azure Cosmos DB for MongoDB, dan kluster elastis Amazon DocumentDB tidak didukung sebagai sumber. DTS tidak dapat terhubung ke database MongoDB melalui endpoint SRV. |
| Retensi oplog atau change stream | Oplog harus diaktifkan dan menyimpan data log minimal selama tujuh hari, atau change streams harus diaktifkan. Jika DTS tidak dapat mengakses perubahan selama tujuh hari terakhir, sinkronisasi gagal dan ketidakkonsistenan atau kehilangan data dapat terjadi. Hal ini tidak dicakup oleh SLA DTS. |
Pembatasan selama sinkronisasi:
Selama sinkronisasi data penuh, jangan memodifikasi skema database atau koleksi, atau mengubah data bertipe ARRAY. Tindakan tersebut menyebabkan kegagalan tugas atau ketidakkonsistenan data.
Jika sumber berupa sharded cluster, jangan menjalankan perintah yang mengubah distribusi data—
shardCollection,reshardCollection,unshardCollection,moveCollection, ataumovePrimary—selama tugas berjalan. Tindakan tersebut menyebabkan ketidakkonsistenan data.Jika balancer aktif pada sumber sharded cluster, latensi dapat meningkat selama sinkronisasi.
Batasan lainnya
| Batas | Detail |
|---|---|
| Tipe objek | Hanya koleksi yang dapat dipilih sebagai objek sinkronisasi. |
| Persyaratan kunci primer | Tabel tujuan harus memiliki kunci primer unik bersifat kolom tunggal (bukan kunci primer komposit). Ekspresi bson_value("_id") harus ditetapkan ke kolom kunci primer. |
| Nama kolom yang dicadangkan | Tabel tujuan tidak boleh berisi kolom bernama _id atau _value. |
| Tabel append-optimized | Tabel tujuan tidak boleh berupa tabel append-optimized (AO). |
| Database yang dikecualikan | DTS tidak dapat menyinkronkan data dari database admin, config, atau local. |
| Transaksi | Informasi transaksi tidak dipertahankan. Transaksi ditulis ke tujuan sebagai catatan individual. |
| Presisi FLOAT/DOUBLE | DTS menggunakan ROUND(COLUMN,PRECISION) untuk mengambil nilai dari kolom FLOAT dan DOUBLE. Presisi default adalah 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Pastikan hal ini memenuhi kebutuhan Anda. |
| Pemulihan otomatis tugas | DTS mencoba memulihkan tugas yang gagal hingga tujuh hari. Sebelum mengalihkan beban kerja ke tujuan, hentikan atau lepas tugas yang gagal, atau jalankan REVOKE untuk menghapus izin tulis DTS pada tujuan. Jika tidak, data sumber dapat menimpa data tujuan setelah pemulihan otomatis. |
| Perhitungan latensi | DTS menghitung latensi sinkronisasi inkremental berdasarkan waktu data terbaru yang disinkronkan. Jika tidak ada penulisan pada sumber dalam periode panjang, latensi yang dilaporkan mungkin tidak akurat. Lakukan update pada sumber untuk memperbarui pembacaan latensi. |
| Kegagalan tugas DTS | Jika tugas DTS gagal, tim dukungan DTS akan mencoba memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas mungkin dimodifikasi. Parameter database tidak dimodifikasi. |
Buat tugas sinkronisasi
Langkah 1: Buka halaman Sinkronisasi Data
Gunakan salah satu metode berikut:
Konsol DTS
Masuk ke Konsol DTS.
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi akan dijalankan.
Konsol DMS
Langkah-langkah dapat berbeda tergantung pada mode dan tata letak konsol DMS. Lihat Simple mode dan Customize the layout and style of the DMS console.
Masuk ke 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 berada.
Langkah 2: Konfigurasi database sumber dan tujuan
Klik Create Task, lalu konfigurasi parameter di bawah ini.
| Bagian | Parameter | Deskripsi |
|---|---|---|
| N/A | Task Name | Masukkan nama deskriptif untuk mengidentifikasi tugas. Nama tidak perlu unik. DTS akan menghasilkan nama secara otomatis jika Anda melewati bidang ini. |
| Source Database | Select Existing Connection | Jika instans sumber sudah terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika tidak, konfigurasi parameter berikut secara manual. Di konsol DMS, pilih instans dari Select a DMS database instance. |
| Database Type | Pilih MongoDB. | |
| Access Method | Pilih Alibaba Cloud Instance. | |
| Instance Region | Pilih wilayah tempat instans sumber ApsaraDB for MongoDB berada. | |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk menggunakan instans di bawah Akun Alibaba Cloud saat ini. | |
| Architecture | Pilih arsitektur instans sumber: Replica Set atau Sharded Cluster. Jika Anda memilih Sharded Cluster, konfigurasikan juga Shard account dan Shard password. | |
| Migration Method | Pilih cara DTS membaca data inkremental dari sumber: Oplog (direkomendasikan jika oplog diaktifkan) atau ChangeStream (untuk MongoDB 4.0+ atau kluster Amazon DocumentDB non-elastis). Jika Sharded Cluster dipilih untuk Architecture dan ChangeStream untuk Migration Method, kredensial shard tidak diperlukan. | |
| Instance ID | Pilih ID instans sumber ApsaraDB for MongoDB. | |
| Authentication Database | Masukkan nama database autentikasi. Nilai default adalah admin. | |
| Database Account | Masukkan akun database. Lihat Required permissions. | |
| Database Password | Masukkan password untuk akun database. | |
| Encryption | Pilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL sesuai kebutuhan Anda. Opsi yang tersedia bergantung pada Access Method dan Architecture. Opsi yang ditampilkan di konsol DTS memiliki prioritas. Catatan SSL-encrypted tidak tersedia jika Architecture adalah Sharded Cluster dan Migration Method adalah Oplog. Untuk replica set MongoDB self-managed dengan SSL-encrypted dipilih, unggah sertifikat CA untuk memverifikasi koneksi. | |
| Destination Database | Select Existing Connection | Jika instans tujuan sudah terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi otomatis parameter lainnya. Jika tidak, konfigurasi parameter berikut secara manual. Di konsol DMS, pilih instans dari Select a DMS database instance. |
| Database Type | Pilih AnalyticDB for PostgreSQL. | |
| Access Method | Pilih Alibaba Cloud Instance. | |
| Instance Region | Pilih wilayah tempat instans tujuan AnalyticDB for PostgreSQL berada. | |
| Instance ID | Pilih ID instans tujuan AnalyticDB for PostgreSQL. | |
| Database Name | Masukkan nama database di instans tujuan yang akan menerima data yang disinkronkan. | |
| Database Account | Masukkan akun database. Lihat Required permissions. | |
| Database Password | Masukkan password untuk akun database. |
Langkah 3: Uji konektivitas
Klik Test Connectivity and Proceed di bagian bawah halaman.
DTS secara otomatis menambahkan blok CIDR-nya ke pengaturan keamanan database sumber dan tujuan. Untuk informasi lebih lanjut, lihat Add the CIDR blocks of DTS servers.
Jika database sumber atau tujuan bersifat self-managed dan Access Method bukan Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 4: Konfigurasi objek yang akan disinkronkan
Pada langkah Configure Objects, atur parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Secara default, Incremental Data Synchronization dipilih. Secara opsional pilih Full Data Synchronization. Schema Synchronization tidak didukung. |
| DDL and DML Operations to Be Synchronized | Pilih operasi DDL dan DML yang akan disinkronkan selama sinkronisasi data inkremental di tingkat instans. Untuk mengonfigurasi di tingkat koleksi, klik kanan koleksi di bagian Selected Objects. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (default): Pemeriksaan Awal memverifikasi bahwa tidak ada tabel tujuan yang memiliki nama sama dengan koleksi sumber. Jika ada nama duplikat, tugas tidak dapat dimulai. Gunakan pemetaan nama objek untuk mengganti nama objek. Lihat Map object names. Ignore Errors and Proceed: Melewati pemeriksaan nama duplikat. Peringatan Hal ini dapat menyebabkan ketidakkonsistenan data. Selama sinkronisasi data penuh, jika catatan dengan kunci primer yang sama sudah ada di tujuan, DTS mempertahankan catatan tujuan yang ada. Selama sinkronisasi data inkremental, DTS menimpa catatan tujuan yang ada. |
| Source Objects | Pilih koleksi dari Source Objects lalu klik ikon |
| Selected Objects | Konfigurasi pemetaan nama database, pemetaan nama tabel, dan pemetaan field seperti dijelaskan dalam langkah-langkah berikut. |
Konfigurasi pemetaan nama database:
Di Selected Objects, klik kanan database yang berisi koleksi yang akan disinkronkan.

Ubah Database Name menjadi nama skema di instans tujuan AnalyticDB for PostgreSQL.

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

Klik OK.
Konfigurasi pemetaan nama tabel:
Di Selected Objects, klik kanan koleksi.

Ubah Table Name menjadi nama tabel di instans tujuan.

(Opsional) Tentukan kondisi filter untuk menyinkronkan subset data. Lihat Specify filter conditions.

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

Konfigurasi pemetaan field:
DTS menghasilkan ekspresi bson_value() default untuk setiap field dalam koleksi. Tinjau dan perbarui pemetaan sebagai berikut.
Di kolom Assign Value, ekspresi
bson_value()menampilkan nama field sumber dalam tanda kutip. Misalnya,bson_value("age")memetakan fieldagedari MongoDB.(Opsional) Klik ikon
di samping baris untuk menghapus field yang tidak perlu disinkronkan.Konfigurasi pemetaan berdasarkan apakah ekspresi default sesuai:
Field dengan ekspresi yang sesuai
Atur Column Name menjadi nama kolom tujuan.
Pilih Type untuk setiap kolom. Pastikan tipe tersebut kompatibel dengan field sumber.
(Opsional) Atur Length dan Precision.
Ulangi untuk semua kolom.
Field dengan ekspresi yang tidak sesuai
CatatanMisalnya, untuk field bersarang dengan hubungan induk-anak.
Klik ikon
di samping baris.Klik + Add Column.

Atur Column Name, Type, Length, dan Precision.
Masukkan ekspresi
bson_value()di Assign Value. Untuk field bersarang, tentukan setiap level hierarki (lihat Field mapping example).PentingTetapkan
bson_value("_id")ke kolom kunci primer tabel tujuan.Tentukan path field lengkap dalam ekspresi
bson_value()untuk setiap kolom. Menentukan hanya field tingkat atas (misalnya,bson_value("person")) mencegah DTS menulis data inkremental ke subfield.
Ulangi untuk semua kolom.
Klik OK.
Langkah 5: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings untuk mengonfigurasi parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menggunakan kluster bersama. Untuk meningkatkan stabilitas, beli kluster khusus. Lihat What is a DTS dedicated cluster. |
| Retry Time for Failed Connections | Rentang waktu selama DTS mencoba koneksi yang gagal. Nilai valid: 10–1.440 menit. Default: 720 menit. Atur minimal 30 menit. Jika sumber atau tujuan yang sama digunakan di beberapa tugas, waktu retry terpendek yang dikonfigurasi berlaku. DTS menagih instans selama periode retry. |
| Retry Time for Other Issues | Rentang waktu selama DTS mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1.440 menit. Default: 10 menit. Atur minimal 10 menit. Nilai ini harus lebih kecil daripada Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Batasi penggunaan sumber daya selama sinkronisasi data 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. |
| Only one data type for primary key _id in a table of the data to be synchronized | Tentukan apakah field _id memiliki satu tipe data di seluruh dokumen dalam koleksi. Yes: DTS melewati pemindaian tipe data dan hanya menyinkronkan dokumen dengan satu tipe _id per koleksi. No: DTS memindai semua tipe data _id dan menyinkronkan semua dokumen. Tersedia hanya jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Batasi penggunaan sumber daya selama sinkronisasi data inkremental dengan mengatur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Beri label lingkungan pada instans DTS. Opsional. |
| Configure ETL | Aktifkan fitur ekstrak, transformasi, muat (ETL) untuk menerapkan transformasi data selama sinkronisasi. Lihat What is ETL? dan Configure ETL in a data migration or data synchronization task. |
| Monitoring and Alerting | Konfigurasi peringatan untuk memberi tahu kontak jika tugas gagal atau latensi sinkronisasi melebihi ambang batas. Lihat Configure monitoring and alerting when you create a DTS task. |
Langkah 6: Jalankan Pemeriksaan Awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat parameter API untuk konfigurasi tugas ini, arahkan kursor ke tombol lalu klik Preview OpenAPI parameters.
DTS menjalankan Pemeriksaan Awal sebelum memulai tugas. Tugas hanya dimulai setelah Pemeriksaan Awal berhasil.
Jika Pemeriksaan Awal gagal, klik View Details di samping setiap item yang gagal, selesaikan masalahnya, lalu jalankan Pemeriksaan Awal lagi.
Jika Pemeriksaan Awal memicu peringatan: jika peringatan tidak dapat diabaikan, selesaikan dan jalankan ulang. Jika dapat diabaikan, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again.
Langkah 7: Beli dan mulai instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasi parameter berikut.
| Bagian | Parameter | Deskripsi |
|---|---|---|
| New Instance Class | Billing Method | Subscription: Bayar di muka untuk periode tetap. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak diperlukan lagi untuk menghentikan tagihan. |
| Resource Group Settings | Pilih kelompok sumber daya untuk instans. Default: default resource group. Lihat What is Resource Management? | |
| Instance Class | Pilih kelas instans berdasarkan kecepatan sinkronisasi yang dibutuhkan. Lihat Instance classes of data synchronization instances. | |
| Subscription Duration | Tentukan durasi langganan dan jumlah instans yang akan dibuat. Tersedia untuk 1–9 bulan, atau 1, 2, 3, atau 5 tahun. Tersedia hanya untuk metode penagihan Subscription. |
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start. Di kotak dialog, klik OK.
Tugas muncul di daftar tugas. Anda dapat memantau progres sinkronisasi di sana.
Contoh pemetaan field
Contoh ini menunjukkan cara memetakan field dari dokumen MongoDB bersarang ke kolom datar di AnalyticDB for PostgreSQL.
Struktur dokumen sumber:
{
"_id": "62cd344c85c1ea6a2a9f****",
"person": {
"name": "neo",
"age": 26,
"sex": "male"
}
}Skema tabel tujuan:
| Nama kolom | Tipe | Catatan |
|---|---|---|
| mongo_id | varchar | Kolom kunci primer |
| person_name | varchar | |
| person_age | decimal |
Konfigurasi pemetaan field di DTS:
| Nama kolom | Tipe | Assign Value |
|---|---|---|
| mongo_id | STRING | bson_value("_id") |
| person_name | STRING | bson_value("person","name") |
| person_age | DECIMAL | bson_value("person","age") |
Setelah sinkronisasi, tabel tujuan berisi:
| mongo_id | person_name | person_age |
|---|---|---|
| 62cd344c85c1ea6a2a9f**** | neo | 26 |
Selalu tentukan path field lengkap dalam bson_value() untuk field bersarang. Menggunakan bson_value("person") alih-alih bson_value("person","name") memetakan seluruh objek person sebagai satu nilai dan mencegah DTS menulis pembaruan inkremental ke subfield individual.