Layanan Transmisi Data (DTS) mendukung sinkronisasi data inkremental dari instans set replika ApsaraDB for MongoDB ke fungsi tertentu di Function Compute (FC). Anda dapat menulis kode fungsi untuk melakukan pemrosesan tambahan terhadap data yang telah disinkronkan.
Prasyarat
Anda telah membuat instans set replika ApsaraDB for MongoDB sebagai sumber. Untuk informasi lebih lanjut, lihat Buat instans set replika.
-
Anda telah membuat layanan dan fungsi tujuan serta mengatur Handler Type menjadi Event Handler. Untuk membuat fungsi, lihat Buat fungsi dengan cepat.
CatatanHanya Function Compute (FC) 2.0 yang didukung.
Catatan penggunaan
Jenis | Deskripsi |
Batasan database sumber |
|
Batasan lainnya |
|
Kasus khusus | Jika database sumber Anda adalah MongoDB yang dikelola sendiri:
Catatan Jika Anda memilih sinkronisasi seluruh database, buat tabel heartbeat. Lakukan pembaruan atau penulisan ke tabel ini setiap detik. |
Penagihan
Jenis sinkronisasi | Biaya konfigurasi tugas |
Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Operasi sinkronisasi yang didukung
Jenis sinkronisasi | Deskripsi |
Sinkronisasi inkremental | OplogSinkronisasi data inkremental tidak mereplikasi database yang dibuat setelah tugas dimulai. Perubahan berikut direplikasi:
Change streamPerubahan berikut direplikasi:
|
Izin yang diperlukan untuk akun database
Database | Izin yang diperlukan | Metode pembuatan dan otorisasi |
Instans sumber ApsaraDB for MongoDB | Izin baca pada database sumber, admin, dan local. |
Jika Anda menggunakan ChangeStream sebagai metode sinkronisasi inkremental, akun database sumber memerlukan izin baca Change Streams di seluruh instans (seperti readAnyDatabase). Jika sumbernya adalah instans ApsaraDB for MongoDB dengan akun kustom, Anda juga harus memberikan izin baca pada database admin. Untuk detailnya, lihat Izin akun root yang ditentukan saat pembuatan instans.
Prosedur
-
Buka halaman daftar tugas sinkronisasi di wilayah tujuan. Anda dapat menggunakan salah satu dari dua metode berikut:
Dari Konsol DTS
-
Masuk ke Konsol Data Transmission Service (DTS).
-
Di panel navigasi sebelah kiri, klik Data Synchronization.
-
Di pojok kiri atas halaman, pilih wilayah tempat instans sinkronisasi berada.
Dari Konsol DMS
CatatanOperasi aktual dapat berbeda tergantung pada mode dan tata letak Konsol DMS. Untuk informasi lebih lanjut, lihat Mode sederhana dan Sesuaikan tata letak dan gaya antarmuka DMS.
-
Masuk ke Data Management (DMS).
-
Di bilah menu atas, pilih .
-
Di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.
-
-
Klik Create Task untuk membuka halaman konfigurasi tugas.
Konfigurasikan database sumber dan tujuan.
Kategori
Konfigurasi
Deskripsi
N/A
Task Name
DTS secara otomatis menghasilkan nama tugas. Kami merekomendasikan agar Anda menentukan nama deskriptif untuk memudahkan identifikasi. Nama tersebut tidak harus unik.
Source Database
Select Existing Connection
-
Untuk menggunakan instans database yang telah ditambahkan ke sistem (baru dibuat atau disimpan), pilih instans database dari daftar drop-down. Informasi database akan dikonfigurasi secara otomatis.
CatatanDi Konsol DMS, item konfigurasi ini bernama Select a DMS database instance..
-
Jika Anda belum menambahkan instans database ke sistem, atau tidak perlu menggunakan instans yang sudah ditambahkan, konfigurasikan informasi database berikut secara manual.
Database Type
Jenis database sumber. Pilih MongoDB.
Access Method
Pilih Alibaba Cloud Instance.
Instance Region
Pilih wilayah instans sumber ApsaraDB for MongoDB.
Replicate Data Across Alibaba Cloud Accounts
Menentukan apakah data disinkronkan lintas Akun Alibaba Cloud. Dalam contoh ini, pilih No.
Architecture
Pilih Replica Set.
Migration Method
Pilih metode untuk sinkronisasi data inkremental sesuai kebutuhan Anda.
-
Oplog (Direkomendasikan):
Opsi ini tersedia jika Oplog diaktifkan untuk database sumber.
CatatanOplog diaktifkan secara default untuk database MongoDB yang dikelola sendiri dan instans ApsaraDB for MongoDB. Metode ini menawarkan latensi lebih rendah untuk tugas sinkronisasi inkremental karena log diambil lebih cepat. Kami merekomendasikan memilih Oplog.
-
ChangeStream:
Opsi ini tersedia jika Change Streams diaktifkan untuk database sumber.
Catatan-
Jika database sumber adalah instans Amazon DocumentDB (non-elastic cluster), Anda hanya dapat memilih ChangeStream.
-
Jika Anda mengatur Architecture database sumber menjadi Sharded Cluster, Anda tidak perlu menentukan Shard account dan Shard password.
-
Instance ID
Pilih ID instans sumber ApsaraDB for MongoDB.
Authentication Database
Masukkan nama database autentikasi untuk akun instans sumber ApsaraDB for MongoDB. Nama default adalah admin.
Database Account
Masukkan akun database untuk instans sumber ApsaraDB for MongoDB. Untuk persyaratan izin, lihat Persyaratan izin untuk akun database.
Database Password
Masukkan kata sandi yang sesuai dengan akun database.
Encryption
DTS mendukung tiga metode koneksi: Non-encrypted, SSL-encrypted, dan Mongo Atlas SSL. Opsi untuk Encryption bervariasi berdasarkan Access Method dan Architecture yang dipilih. Opsi yang ditampilkan di konsol berlaku.
Catatan-
Database MongoDB dengan Architecture Sharded Cluster dan Migration Method Oplog tidak mendukung SSL-encrypted.
-
Jika sumbernya adalah database MongoDB yang dikelola sendiri (Access Method bukan Alibaba Cloud Instance) dengan arsitektur Replica Set, dan Anda memilih SSL-encrypted, DTS juga memungkinkan Anda mengunggah sertifikat CA untuk memverifikasi koneksi.
Destination Database
Select Existing Connection
-
Untuk menggunakan instans database yang telah ditambahkan ke sistem (baru dibuat atau disimpan), pilih instans database dari daftar drop-down. Informasi database akan dikonfigurasi secara otomatis.
CatatanDi Konsol DMS, item konfigurasi ini bernama Select a DMS database instance..
-
Jika Anda belum menambahkan instans database ke sistem, atau tidak perlu menggunakan instans yang sudah ditambahkan, konfigurasikan informasi database berikut secara manual.
Database Type
Pilih Function Compute.
Access Method
Pilih Alibaba Cloud Instance.
Instance Region
Secara default, nilainya sama dengan Instance Region database sumber dan tidak dapat diubah.
Service
Nama layanan Function Compute tujuan.
Function
Fungsi tujuan di Function Compute (FC) yang menerima data.
Service Version and Alias
Pilih opsi sesuai kebutuhan.
Default Version: Service Version tetap di LATEST.
Specified Version: Pilih Service Version.
Specified Alias: Pilih Service Alias.
CatatanUntuk informasi lebih lanjut tentang istilah Function Compute, lihat Istilah.
-
-
Setelah menyelesaikan konfigurasi, klik Test Connectivity and Proceed di bagian bawah halaman.
Catatan-
Pastikan blok CIDR alamat IP server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan untuk mengizinkan akses dari server DTS. Hal ini dapat dilakukan secara otomatis atau manual. Untuk informasi lebih lanjut, lihat Tambahkan blok CIDR alamat IP server DTS ke daftar putih.
-
Jika database sumber atau tujuan adalah database yang dikelola sendiri (di mana Access Method bukan Alibaba Cloud Instance), Anda juga harus mengklik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
-
Konfigurasikan objek tugas.
Di halaman Configure Objects, konfigurasikan objek yang akan disinkronkan.
Konfigurasi
Deskripsi
Synchronization Types
Hanya Incremental Data Synchronization yang didukung, dan dipilih secara default.
Data Format
Format penyimpanan data yang disinkronkan ke fungsi FC. Hanya Canal Json yang didukung.
CatatanUntuk deskripsi parameter dan contoh format Canal Json, lihat Deskripsi Canal Json.
Source Objects
Di kotak Source Objects, klik objek yang akan disinkronkan, lalu klik
untuk memindahkannya ke kotak Selected Objects.CatatanAnda dapat memilih objek pada tingkat database atau koleksi.
Selected Objects
Di kotak Selected Objects, konfirmasi data yang akan disinkronkan.
CatatanUntuk menghapus objek, pilih objek tersebut di kotak Selected Objects lalu klik
.Untuk memfilter operasi pembaruan inkremental berdasarkan database atau koleksi, klik kanan objek di kotak Selected Objects dan pilih operasi di kotak dialog yang muncul.
Klik Next: Advanced Settings untuk mengonfigurasi parameter lanjutan.
Konfigurasi
Catatan
Dedicated Cluster for Task Scheduling
Secara default, DTS menjadwalkan tugas pada kluster bersama, dan Anda tidak perlu memilih kluster. Untuk kinerja yang lebih stabil, Anda dapat membeli kluster khusus untuk menjalankan tugas sinkronisasi DTS. Untuk informasi lebih lanjut, lihat Apa itu kluster khusus DTS?.
Retry Time for Failed Connections
Setelah tugas sinkronisasi dimulai, jika koneksi ke database sumber atau tujuan gagal, DTS melaporkan error dan segera mulai mencoba koneksi ulang. Durasi percobaan ulang default adalah 720 menit. Anda juga dapat menentukan durasi kustom antara 10 hingga 1.440 menit. Kami merekomendasikan agar Anda mengatur durasi minimal 30 menit. Jika DTS berhasil terhubung kembali ke database dalam durasi yang ditentukan, tugas sinkronisasi akan dilanjutkan secara otomatis. Jika tidak, tugas akan gagal.
Catatan-
Jika Anda memiliki beberapa instans DTS (misalnya, Instans A dan Instans B) yang berbagi sumber atau tujuan yang sama, dan Anda mengatur waktu percobaan ulang jaringan menjadi 30 menit untuk Instans A dan 60 menit untuk Instans B, durasi yang lebih pendek yaitu 30 menit akan digunakan untuk keduanya.
-
Karena DTS membebankan biaya berdasarkan waktu proses tugas selama periode percobaan ulang koneksi, kami merekomendasikan agar Anda menyesuaikan durasi percobaan ulang sesuai kebutuhan bisnis atau segera melepas instans DTS setelah instans database sumber dan tujuan dilepas.
Retry Time for Other Issues
Setelah tugas sinkronisasi dimulai, jika terjadi masalah non-konektivitas lainnya pada database sumber atau tujuan (seperti exception eksekusi DDL atau DML), DTS melaporkan error dan segera memulai operasi percobaan ulang berkelanjutan. Durasi percobaan ulang default adalah 10 menit. Anda juga dapat menyesuaikan durasi percobaan ulang dalam rentang 1 hingga 1.440 menit. Kami merekomendasikan agar Anda mengaturnya minimal 10 menit. Jika operasi terkait berhasil dalam durasi percobaan ulang yang ditetapkan, tugas sinkronisasi akan dilanjutkan secara otomatis. Jika tidak, tugas akan gagal.
PentingNilai untuk Retry Time for Other Issues harus lebih kecil daripada nilai untuk Retry Time for Failed Connections.
Obtain the entire document after it is updated.
Saat sinkronisasi data inkremental, tentukan apakah akan menyinkronkan data lengkap dokumen yang sesuai dengan operasi pembaruan ke tujuan.
CatatanItem konfigurasi ini hanya tersedia ketika Migration Method diatur ke ChangeStream.
Yes: Menyinkronkan data lengkap dokumen yang berisi field yang diperbarui.
PentingFitur ini berdasarkan kemampuan native MongoDB dan dapat meningkatkan beban pada database sumber. Hal ini dapat mengurangi kecepatan pengumpulan data inkremental dan menyebabkan latensi pada instans sinkronisasi.
Jika DTS gagal mendapatkan data lengkap, hanya data field yang diperbarui yang disinkronkan.
No: Hanya menyinkronkan data field yang diperbarui.
Enable Throttling for Incremental Data Synchronization
Anda juga dapat mengatur batas laju untuk tugas sinkronisasi inkremental. Untuk mengurangi tekanan pada database tujuan, atur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Jika diperlukan, pilih tag lingkungan untuk mengidentifikasi instans. Untuk contoh ini, tidak perlu pemilihan.
Configure ETL
Pilih apakah akan mengaktifkan fitur ekstrak, transformasi, muat (ETL). Untuk informasi lebih lanjut, lihat Apa itu ETL? Nilai yang valid:
-
Yes: Mengaktifkan fitur ETL. Masukkan pernyataan pemrosesan data di editor kode. Untuk informasi lebih lanjut, lihat Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data.
-
No: Menonaktifkan fitur ETL.
Monitoring and Alerting
Tentukan apakah akan mengonfigurasi peringatan. Jika sinkronisasi gagal atau latensi melebihi ambang batas yang ditentukan, notifikasi akan dikirim ke kontak peringatan.
-
No: Tidak ada peringatan yang dikonfigurasi.
-
Yes: Konfigurasi peringatan dengan mengatur ambang batas peringatan dan menentukan pemberitahuan peringatan. Untuk informasi lebih lanjut, lihat Konfigurasi pemantauan peringatan selama konfigurasi tugas.
-
-
Simpan tugas dan jalankan pemeriksaan awal.
-
Untuk melihat parameter API untuk mengonfigurasi instans ini, arahkan kursor ke tombol Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters di balon informasi.
-
Jika Anda telah selesai melihat parameter API, klik Next: Save Task Settings and Precheck di bagian bawah halaman.
Catatan-
Sebelum pekerjaan sinkronisasi dimulai, DTS menjalankan pemeriksaan awal. Pekerjaan hanya dapat dimulai setelah semua item pemeriksaan awal lolos.
-
Jika pemeriksaan awal gagal, klik View Details untuk item yang gagal. Perbaiki masalah sesuai petunjuk, lalu jalankan pemeriksaan awal lagi.
-
Jika pemeriksaan awal mengembalikan peringatan:
-
Jika item pemeriksaan gagal dan tidak dapat diabaikan, klik View Details di sebelah item tersebut. Ikuti instruksi untuk memperbaiki masalah, lalu jalankan pemeriksaan awal lagi.
-
Untuk item pemeriksaan yang dapat diabaikan, Anda dapat mengklik Confirm Alert Details, Ignore, OK, dan Precheck Again secara berurutan untuk melewati peringatan dan menjalankan pemeriksaan awal ulang. Jika Anda memilih untuk mengabaikan item peringatan, hal ini dapat menyebabkan masalah seperti inkonsistensi data dan menimbulkan risiko bagi bisnis Anda.
-
-
Beli instans.
-
Ketika Success Rate mencapai 100%, klik Next: Purchase Instance.
-
Di halaman Purchase, pilih metode penagihan dan spesifikasi link untuk instans sinkronisasi data. Tabel berikut menjelaskan parameter-parameter ini secara rinci.
Kategori
Parameter
Deskripsi
New Instance Class
Billing Method
-
Subscription: Anda membayar saat membuat instans. Ini cocok untuk kebutuhan jangka panjang dan lebih hemat biaya dibandingkan bayar sesuai penggunaan. Semakin lama durasi langganan, semakin tinggi diskonnya.
-
Pay-as-you-go: Anda dikenai biaya per jam. Ini cocok untuk kebutuhan jangka pendek. Anda dapat melepas instans segera setelah digunakan untuk menghemat biaya.
Resource Group Configuration
Kelompok sumber daya tempat instans berada. Default-nya adalah kelompok sumber daya default. Untuk informasi lebih lanjut, lihat Apa itu Resource Management?.
Link Specification
DTS menyediakan spesifikasi sinkronisasi dengan tingkat kinerja berbeda. Spesifikasi link sinkronisasi memengaruhi laju sinkronisasi. Anda dapat memilih spesifikasi berdasarkan skenario bisnis Anda. Untuk informasi lebih lanjut, lihat Spesifikasi link sinkronisasi data.
Subscription Duration
Dalam mode subscription, pilih durasi dan jumlah untuk instans langganan. Anda dapat memilih langganan bulanan dari 1 hingga 9 bulan, atau langganan tahunan selama 1, 2, 3, atau 5 tahun.
CatatanOpsi ini hanya tersedia ketika metode penagihan adalah Subscription.
-
-
Setelah menyelesaikan konfigurasi, baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
-
Klik Buy and Start. Di kotak dialog OK, klik OK.
Anda dapat melihat progres tugas di halaman Data Synchronization.
-
Langkah selanjutnya
Jika tugas DTS gagal karena satu catatan data yang akan disinkronkan melebihi 16 MB, Anda dapat memodifikasi objek sinkronisasi atau menggunakan fitur ETL untuk memfilter data objek besar. Untuk informasi lebih lanjut, lihat Modifikasi konfigurasi ETL tugas sinkronisasi yang ada dan Modifikasi objek sinkronisasi.
Tulis kode fungsi sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Ikhtisar Pengembangan Kode.
Format data yang diterima oleh layanan tujuan
Data yang diterima FC bertipe Object. Data inkremental dari database sumber disimpan dalam field Records sebagai array. Setiap elemen dalam array adalah catatan data bertipe Object. Tabel berikut menjelaskan field-field dari Object tersebut.
FC menerima dua jenis data: DML dan DDL.
DDL: Mencatat perubahan struktur database, seperti CreateIndex, CreateCollection, DropIndex, dan DropCollection.
DML: Mencatat operasi data di database, seperti INSERT, UPDATE, dan DELETE.
Field | Kategori | Catatan |
| Boolean | Menunjukkan apakah operasi tersebut merupakan operasi Data Definition Language (DDL). Nilai yang valid:
|
| String | Jenis operasi SQL.
|
| String | Nama database MongoDB. |
| String | Nama koleksi MongoDB. |
| String | Nama primary key untuk MongoDB tetap _id. |
| Long | Waktu eksekusi operasi di database sumber. Nilainya adalah stempel waktu UNIX 13 digit. Satuan: milidetik. Catatan Gunakan mesin pencari untuk menemukan konverter stempel waktu UNIX. |
| Long | Waktu mulai penulisan ke database tujuan. Ini adalah stempel waktu UNIX 13 digit dalam milidetik. Catatan Gunakan mesin pencari untuk menemukan konverter stempel waktu UNIX. |
| Object Array | Array berisi satu elemen bertipe Object. Kuncinya adalah doc dan nilainya adalah string JSON. Catatan Deserialisasi nilai tersebut untuk mendapatkan catatan data. |
old | Object Array | Data sebelum pembaruan. Formatnya sama dengan field `data`. Penting Field ini hanya ada ketika |
| Int | Nomor seri operasi. |
Contoh format data operasi DDL
Buat koleksi
SQL statement
db.createCollection("testCollection")Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"create": "testCollection", "idIndex": {"v": 2, "key": {"_id": 1}, "name": "_id_"}}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056437000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': 'testCollection',
'ts': 1694056437510
}]
}Hapus koleksi
SQL statement
db.testCollection.drop()Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"drop": "testCollection"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056577000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': 'testCollection',
'ts': 1694056577789
}]
}Buat indeks
SQL statement
db.testCollection.createIndex({name:1})Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"createIndexes": "testCollection", "v": 2, "key": {"name": 1}, "name": "name_1"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056670000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': 'testCollection',
'ts': 1694056670719
}]
}Hapus indeks
SQL statement
db.testCollection.dropIndex({name:1})Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"dropIndexes": "testCollection", "index": "name_1"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056817000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': '$cmd',
'ts': 1694056818035
}]
}Contoh format data operasi DML
Masukkan data
SQL statement
// Bulk insert
db.runCommand({insert: "user", documents: [{"name":"jack","age":20},{"name":"lili","age":20}]})
// Insert one by one
db.user.insert({"name":"jack","age":20})
db.user.insert({"name":"lili","age":20})Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}, "name": "jack", "age": 20}'
}],
'pkNames': ['_id'],
'type': 'INSERT',
'es': 1694054783000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694054784427
}, {
'data': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}, "name": "lili", "age": 20}'
}],
'pkNames': ['_id'],
'type': 'INSERT',
'es': 1694054783000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694054784428
}]
}Perbarui data
SQL statement
db.user.update({"name":"jack"},{$set:{"age":30}}) Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"$set": {"age": 30}}'
}],
'pkNames': ['_id'],
'old': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}}'
}],
'type': 'UPDATE',
'es': 1694054989000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694054990555
}]
}Hapus data
SQL statement
db.user.remove({"name":"jack"})Data yang diterima FC
{
'Records': [{
'data': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}}'
}],
'pkNames': ['_id'],
'type': 'DELETE',
'es': 1694055452000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694055452852
}]
}