Anda dapat menggunakan Data Transmission Service (DTS) untuk menyinkronkan data inkremental dari instans ApsaraDB for MongoDB kluster sharded ke fungsi Function Compute. Anda juga dapat menulis kode fungsi untuk memproses lebih lanjut data yang disinkronkan.
Prasyarat
Instans sumber ApsaraDB for MongoDB kluster sharded telah dibuat. Untuk informasi lebih lanjut, lihat Membuat Instans Kluster Sharded.
Layanan tujuan dan fungsi telah dibuat dengan parameter Handler Type diatur ke Event Handler. Untuk informasi lebih lanjut tentang cara membuat fungsi, lihat Membuat Fungsi dengan Cepat.
Catatan penggunaan
Kategori | Deskripsi |
Batas pada database sumber |
|
Batas lainnya |
|
Penagihan
Tipe sinkronisasi | Biaya konfigurasi tugas |
Sinkronisasi data inkremental | Dikenakan biaya. Untuk informasi lebih lanjut, lihat Ikhtisar penagihan. |
Operasi yang mendukung sinkronisasi data
Tipe sinkronisasi | Deskripsi |
Sinkronisasi data inkremental | Menggunakan oplogTugas DTS tidak menyinkronkan data inkremental dari database yang dibuat setelah tugas mulai berjalan. DTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:
Menggunakan change streamsDTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:
|
Izin yang diperlukan untuk akun database
Database | Izin yang diperlukan | Referensi |
Instans sumber ApsaraDB for MongoDB | Izin baca pada database sumber, admin, dan local. |
Prosedur
Gunakan salah satu metode berikut untuk pergi ke halaman Sinkronisasi Data dan pilih wilayah tempat instans sinkronisasi data berada.
Konsol DTS
Masuk ke Konsol DTS.
Di bilah navigasi sebelah kiri, klik Data Synchronization.
Di pojok kiri atas halaman, pilih wilayah tempat tugas sinkronisasi data berada.
Konsol DMS
CatatanOperasi aktual mungkin bervariasi berdasarkan mode dan tata letak Konsol DMS. Untuk informasi lebih lanjut, lihat Mode Sederhana dan Sesuaikan Tata Letak dan Gaya Konsol DMS.
Masuk ke Konsol DMS.
Di bilah navigasi atas, gerakkan pointer ke Data + AI dan pilih .
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi data berada.
Klik Create Task untuk pergi ke halaman konfigurasi tugas.
Konfigurasikan database sumber dan tujuan. Tabel berikut menjelaskan parameter.
Bagian
Parameter
Deskripsi
T/A
Task Name
Nama tugas DTS. DTS secara otomatis menghasilkan nama tugas. Kami sarankan Anda menentukan nama deskriptif yang memudahkan identifikasi tugas. Anda tidak perlu menentukan nama tugas yang unik.
Source Database
Select Existing Connection
Jika Anda menggunakan instans database yang terdaftar dengan DTS, pilih instans dari daftar drop-down. DTS secara otomatis mengisi parameter database berikut untuk instans tersebut. Untuk informasi lebih lanjut, lihat Kelola koneksi database.
CatatanDi Konsol DMS, Anda dapat memilih instans database dari daftar drop-down Select a DMS database instance.
Jika Anda gagal mendaftarkan instans dengan DTS, atau Anda tidak perlu menggunakan instans yang terdaftar dengan DTS, Anda harus mengonfigurasi informasi database berikut.
Database Type
Tipe database sumber. Pilih MongoDB.
Access Method
Metode akses database sumber. Pilih Alibaba Cloud Instance.
Instance Region
Wilayah tempat instans MongoDB sumber berada.
Replicate Data Across Alibaba Cloud Accounts
Menentukan apakah data disinkronkan di seluruh akun Alibaba Cloud. Dalam contoh ini, No dipilih.
Architecture
Arsitektur tempat database sumber diterapkan. Pilih Sharded Cluster.
Migration Method
Metode yang digunakan untuk menyinkronkan data inkremental dari database sumber. Pilih metode berdasarkan kebutuhan bisnis Anda. Nilai valid:
Oplog (direkomendasikan):
Opsi ini tersedia jika fitur oplog diaktifkan untuk database sumber.
CatatanSecara default, fitur oplog diaktifkan untuk kedua database MongoDB yang dikelola sendiri dan instans ApsaraDB for MongoDB. Fitur ini memungkinkan Anda menyinkronkan data inkremental dengan latensi rendah karena kecepatan penarikan log yang cepat. Oleh karena itu, kami sarankan Anda memilih Oplog untuk parameter Metode Migrasi.
ChangeStream:
Opsi ini tersedia jika change streams diaktifkan untuk database sumber. Untuk informasi lebih lanjut, lihat Change Streams.
CatatanJika database sumber adalah kluster inelastis Amazon DocumentDB, Anda hanya dapat mengatur parameter Metode Migrasi ke ChangeStream.
Jika Anda memilih Sharded Cluster untuk parameter Architecture, Anda tidak perlu mengonfigurasi parameter Shard account dan Shard password.
Instance ID
ID instans MongoDB sumber.
Authentication Database
Nama database otentikasi yang menyimpan akun dan kata sandi database dari instans ApsaraDB for MongoDB sumber. Jika Anda tidak mengubah nama database otentikasi sebelumnya, nilai defaultnya adalah admin.
Database Account
Akun database dari instans ApsaraDB for MongoDB sumber. Untuk informasi tentang izin yang diperlukan untuk akun tersebut, lihat bagian Izin yang diperlukan untuk akun database dalam topik ini.
Database Password
Kata sandi yang digunakan untuk mengakses database.
Shard account
Akun yang digunakan untuk mengakses shard dalam instans ApsaraDB for MongoDB sumber.
Shard password
Kata sandi akun shard dari instans ApsaraDB for MongoDB sumber.
Encryption
Menentukan apakah akan mengenkripsi koneksi ke database sumber. Anda dapat memilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL berdasarkan kebutuhan bisnis Anda. Opsi yang tersedia untuk parameter Encryption ditentukan oleh nilai yang dipilih untuk parameter Access Method dan Architecture. Opsi yang ditampilkan di Konsol DTS yang berlaku.
CatatanJika parameter Architecture disetel ke Sharded Cluster, dan parameter Migration Method disetel ke Oplog untuk database ApsaraDB for MongoDB, parameter Enkripsi SSL-encrypted tidak tersedia.
Jika database sumber adalah database MongoDB yang dikelola sendiri yang menggunakan arsitektur Replica Set, parameter Access Method tidak disetel ke Alibaba Cloud Instance, dan parameter Enkripsi disetel ke SSL-encrypted, Anda dapat mengunggah sertifikat otoritas sertifikasi (CA) untuk memverifikasi koneksi ke database sumber.
Destination Database
Select Existing Connection
Jika Anda menggunakan instans database yang terdaftar dengan DTS, pilih instans dari daftar drop-down. DTS secara otomatis mengisi parameter database berikut untuk instans tersebut. Untuk informasi lebih lanjut, lihat Kelola koneksi database.
CatatanDi Konsol DMS, Anda dapat memilih instans database dari daftar drop-down Select a DMS database instance.
Jika Anda gagal mendaftarkan instans dengan DTS, atau Anda tidak perlu menggunakan instans yang terdaftar dengan DTS, Anda harus mengonfigurasi informasi database berikut.
Database Type
Tipe database tujuan. Pilih Function Compute.
Access Method
Metode akses database tujuan. Pilih Alibaba Cloud Instance.
Instance Region
Wilayah tempat database tujuan berada. Secara default, nilainya sama dengan parameter Instance Region dari database sumber dan tidak dapat diubah.
Service
Nama layanan tempat fungsi tujuan berada.
Function
Fungsi tujuan yang menerima data yang disinkronkan.
Service Version and Alias
Versi atau alias layanan. Konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda.
Jika Anda memilih Default Version, nilai parameter Service Version tetap pada LATEST.
Jika Anda memilih Specified Version, Anda harus mengonfigurasi parameter Service Version.
Jika Anda memilih Specified Alias, Anda harus mengonfigurasi parameter Service Alias.
CatatanUntuk informasi lebih lanjut tentang istilah Function Compute, lihat Istilah.
Klik Test Connectivity and Proceed di bagian bawah halaman.
CatatanPastikan blok CIDR server DTS dapat ditambahkan secara otomatis atau manual ke pengaturan keamanan database sumber dan tujuan untuk mengizinkan akses dari server DTS. Untuk informasi lebih lanjut, lihat Tambahkan Blok CIDR Server DTS.
Jika database sumber atau tujuan adalah database yang dikelola sendiri dan parameter Access Method tidak disetel ke Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Konfigurasikan objek yang akan disinkronkan.
Di langkah Configure Objects, konfigurasikan objek yang ingin Anda sinkronkan.
Parameter
Deskripsi
Synchronization Types
Secara default, Incremental Data Synchronization dipilih dan Anda tidak dapat mengubah nilainya.
Data Format
Format penyimpanan data yang disinkronkan ke fungsi tujuan. Hanya format Canal Json yang didukung.
CatatanUntuk informasi lebih lanjut tentang parameter format Canal JSON, lihat bagian Canal Json dari topik Format data kluster Kafka.
Source Objects
Pilih satu atau lebih objek dari bagian Source Objects dan klik ikon
untuk menambahkan objek ke bagian Selected Objects.CatatanPilih database atau koleksi sebagai objek yang akan disinkronkan.
Selected Objects
Di bagian Selected Objects, centang data yang ingin Anda sinkronkan.
CatatanUntuk menghapus objek yang dipilih, pilih objek yang ingin Anda hapus di bagian Selected Objects dan klik ikon
.Untuk menyinkronkan data inkremental berdasarkan database atau koleksi, klik kanan Selected Objects dan pilih operasi dalam kotak dialog yang muncul.
Klik Next: Advanced Settings untuk mengonfigurasi pengaturan lanjutan.
Parameter
Deskripsi
Dedicated Cluster for Task Scheduling
Secara default, DTS menjadwalkan tugas ke kluster bersama jika Anda tidak menentukan kluster khusus. Jika Anda ingin meningkatkan stabilitas instans sinkronisasi data, beli kluster khusus. Untuk informasi lebih lanjut, lihat Apa itu Kluster Khusus DTS?
Retry Time for Failed Connections
Rentang waktu ulang untuk koneksi gagal. Jika database sumber atau tujuan gagal terhubung setelah tugas sinkronisasi data dimulai, DTS segera mencoba kembali koneksi dalam rentang waktu tersebut. Nilai valid: 10 hingga 1440. Unit: menit. Nilai default: 720. Kami sarankan Anda mengatur parameter ini ke nilai lebih dari 30. Jika DTS berhasil menyambungkan kembali ke database sumber dan tujuan dalam rentang waktu yang ditentukan, DTS melanjutkan tugas sinkronisasi data. Jika tidak, tugas sinkronisasi data gagal.
CatatanJika Anda menentukan rentang waktu ulang yang berbeda untuk beberapa tugas sinkronisasi data yang memiliki database sumber atau tujuan yang sama, rentang waktu ulang terpendek yang berlaku.
Saat DTS mencoba kembali koneksi, Anda akan dikenakan biaya untuk instans DTS. Kami sarankan Anda menentukan rentang waktu ulang berdasarkan kebutuhan bisnis Anda. Anda juga dapat melepaskan instans DTS sesegera mungkin setelah instans sumber dan tujuan dilepaskan.
Retry Time for Other Issues
Rentang waktu percobaan ulang untuk masalah lain. Sebagai contoh, jika operasi DDL atau DML gagal dilakukan setelah tugas sinkronisasi data dimulai, DTS segera mencoba kembali operasi tersebut dalam rentang waktu yang ditentukan. Nilai valid: 1 sampai 1440. Satuan: menit. Nilai default: 10. Kami menyarankan Anda mengatur parameter ini ke nilai yang lebih besar dari 10. Jika operasi yang gagal berhasil dilakukan dalam rentang waktu yang ditentukan, DTS melanjutkan tugas sinkronisasi data. Jika tidak, tugas sinkronisasi data gagal.
PentingNilai parameter Retry Time for Other Issues harus lebih kecil daripada nilai parameter Retry Time for Failed Connections.
Obtain the entire document after it is updated.
Menentukan apakah akan menyinkronkan data lengkap dokumen setelah operasi pembaruan ke database tujuan selama sinkronisasi data inkremental.
CatatanParameter ini tersedia hanya jika Anda mengatur Migration Method ke ChangeStream.
Yes: menyinkronkan data lengkap dokumen setelah operasi pembaruan.
No: hanya menyinkronkan data yang diperbarui.
Enable Throttling for Incremental Data Synchronization
Menentukan apakah akan mengaktifkan pembatasan untuk sinkronisasi data inkremental. Anda dapat mengaktifkan pembatasan untuk sinkronisasi data inkremental berdasarkan kebutuhan bisnis Anda. Untuk mengonfigurasi pembatasan, Anda harus mengatur parameter RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). Ini mengurangi beban pada server database tujuan.
Environment Tag
Tag lingkungan yang digunakan untuk mengidentifikasi instans DTS. Anda dapat memilih tag lingkungan berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, Anda tidak perlu mengonfigurasi parameter ini.
Configure ETL
Menentukan apakah akan mengaktifkan fitur extract, transform, dan load (ETL). Untuk informasi lebih lanjut, lihat Apa itu ETL? Nilai valid:
Yes: mengonfigurasi fitur ETL. Anda dapat memasukkan pernyataan pemrosesan data di editor kode. Untuk informasi lebih lanjut, lihat Konfigurasikan ETL dalam Tugas Migrasi Data atau Sinkronisasi Data.
No: tidak mengonfigurasi fitur ETL.
Monitoring and Alerting
Menentukan apakah akan mengonfigurasi peringatan untuk instans sinkronisasi data. Jika tugas gagal atau latensi sinkronisasi melebihi ambang batas tertentu, kontak peringatan akan menerima notifikasi. Nilai valid:
No: tidak mengaktifkan peringatan.
Yes: mengonfigurasi peringatan. Dalam hal ini, Anda juga harus mengonfigurasi ambang batas peringatan dan pengaturan notifikasi peringatan. Untuk informasi lebih lanjut, lihat bagian "Konfigurasikan Pemantauan dan Peringatan saat Membuat Tugas DTS" dari topik Konfigurasikan Pemantauan dan Peringatan.
Simpan pengaturan tugas dan jalankan pra-pemeriksaan.
Untuk melihat parameter yang harus ditentukan saat Anda memanggil operasi API terkait untuk mengonfigurasi tugas DTS, gerakkan pointer ke Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters.
Jika Anda tidak perlu melihat atau telah melihat parameter, klik Next: Save Task Settings and Precheck di bagian bawah halaman.
CatatanSebelum Anda dapat memulai tugas sinkronisasi data, DTS melakukan pra-pemeriksaan. Anda hanya dapat memulai tugas sinkronisasi data setelah tugas tersebut lulus pra-pemeriksaan.
Jika tugas sinkronisasi data gagal dalam pra-pemeriksaan, klik View Details di sebelah setiap item yang gagal. Setelah Anda menganalisis penyebab berdasarkan hasil pemeriksaan, atasi masalah tersebut. Lalu, jalankan kembali pra-pemeriksaan.
Jika peringatan dipicu untuk suatu item selama pra-pemeriksaan:
Jika item peringatan tidak dapat diabaikan, klik View Details di sebelah item yang gagal dan atasi masalah tersebut. Lalu, jalankan pra-pemeriksaan lagi.
Jika item peringatan dapat diabaikan, klik Confirm Alert Details. Di kotak dialog Lihat Detail, klik Ignore. Di pesan yang muncul, klik OK. Lalu, klik Precheck Again untuk menjalankan pra-pemeriksaan lagi. Jika Anda mengabaikan item peringatan, ketidaksesuaian data mungkin terjadi, dan bisnis Anda mungkin terpapar risiko potensial.
Beli instans.
Tunggu hingga Success Rate menjadi 100%. Lalu, klik Next: Purchase Instance.
Di halaman buy, konfigurasikan parameter Metode Penagihan dan Kelas Instans untuk tugas sinkronisasi data. Tabel berikut menjelaskan parameter.
Bagian
Parameter
Deskripsi
New Instance Class
Metode Penagihan
Langganan: Anda membayar langganan saat membuat instans sinkronisasi data. Metode penagihan langganan lebih hemat biaya daripada metode penagihan bayar sesuai pemakaian untuk penggunaan jangka panjang.
Bayar sesuai pemakaian: Instans bayar sesuai pemakaian ditagih per jam. Metode penagihan bayar sesuai pemakaian cocok untuk penggunaan jangka pendek. Jika Anda tidak lagi memerlukan instans sinkronisasi data bayar sesuai pemakaian, Anda dapat melepaskan instans untuk mengurangi biaya.
Pengaturan Grup Sumber Daya
Grup sumber daya tempat instans sinkronisasi data berada. Nilai default: default resource group. Untuk informasi lebih lanjut, lihat Apa itu Manajemen Sumber Daya?
Kelas Instans
DTS menyediakan kelas instans yang bervariasi dalam kecepatan sinkronisasi. Anda dapat memilih kelas instans berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Kelas instans tugas sinkronisasi data.
Durasi Langganan
Jika Anda memilih metode penagihan langganan, tentukan durasi langganan dan jumlah instans sinkronisasi data yang ingin Anda buat. Durasi langganan bisa satu hingga sembilan bulan, satu tahun, dua tahun, tiga tahun, atau lima tahun.
CatatanParameter ini tersedia hanya jika Anda memilih metode penagihan Subscription.
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start. Di kotak dialog yang muncul, klik OK.
Anda dapat melihat kemajuan tugas dalam daftar tugas.
Format data yang diterima oleh fungsi tujuan
Data yang diterima oleh fungsi tujuan adalah tipe Objek. Data inkremental dari database sumber disimpan di bidang Records dalam format array. Setiap elemen dalam array menunjukkan catatan data tipe Objek. Tabel berikut menjelaskan bidang dalam catatan data tipe Objek.
Fungsi tujuan menerima data yang mencatat dua jenis operasi SQL berikut:
DDL: operasi pada perubahan skema data, seperti CreateIndex, CreateCollection, DropIndex, dan DropCollection.
DML: operasi pada manajemen data, seperti INSERT, UPDATE, dan DELETE.
Parameter | Kategori | Deskripsi |
| Boolean | Menunjukkan apakah operasi tersebut adalah operasi DDL. Nilai valid:
|
| String | Tipe operasi SQL.
|
| String | Nama database MongoDB. |
| String | Nama koleksi dalam database MongoDB. |
| String | Nama kunci utama dalam database MongoDB. Atur nilainya ke _id. |
| Long | Waktu ketika operasi dilakukan pada database sumber. Nilainya adalah timestamp UNIX 13-bit. Unit: milidetik. Catatan Anda dapat menggunakan mesin pencari untuk mendapatkan konverter timestamp UNIX. |
| Long | Waktu ketika operasi mulai dilakukan pada database tujuan. Nilainya adalah timestamp UNIX 13-bit. Unit: milidetik. Catatan Anda dapat menggunakan mesin pencari untuk mendapatkan konverter timestamp UNIX. |
| Array Objek | Array yang hanya berisi satu elemen tipe Objek. Kunci elemen adalah doc, dan nilai elemen adalah string JSON. Catatan Deserialize nilai untuk mendapatkan catatan data. |
old | Array Objek | Array tempat data asli disimpan. Format bidang ini sama dengan bidang data. Penting Bidang ini tersedia dan memiliki format yang sama dengan bidang |
| Int | Nomor seri operasi. |
Contoh Operasi DDL dan Data yang Diterima oleh Fungsi Tujuan
Membuat Koleksi
Pernyataan SQL
db.createCollection("testCollection")Data yang Diterima oleh Fungsi Tujuan
{
'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
Pernyataan SQL
db.testCollection.drop()Data yang Diterima oleh Fungsi Tujuan
{
'Records': [{
'data': [{
'doc': '{"drop": "testCollection"}'
}],
'pkNames': ['_id'],
'type': 'DDL',
'es': 1694056577000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': True,
'table': 'testCollection',
'ts': 1694056577789
}]
}Buat Indeks
Pernyataan SQL
db.testCollection.createIndex({name:1})Data yang Diterima oleh Fungsi Tujuan
{
'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
Pernyataan SQL
db.testCollection.dropIndex({name:1})Data yang Diterima oleh Fungsi Tujuan
{
'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 Operasi DML dan Data yang Diterima oleh Fungsi Tujuan
Sisipkan Data
Pernyataan SQL
// Sisipkan beberapa catatan data sekaligus.
db.runCommand({insert: "user", documents: [{"name":"jack","age":20},{"name":"lili","age":20}]})
// Sisipkan satu catatan data pada satu waktu.
db.user.insert({"name":"jack","age":20})
db.user.insert({"name":"lili","age":20})Data yang Diterima oleh Fungsi Tujuan
{
'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
Pernyataan SQL
db.user.update({"name":"jack"},{$set:{"age":30}})Data yang Diterima oleh Fungsi Tujuan
{
'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
Pernyataan SQL
db.user.remove({"name":"jack"})Data yang Diterima oleh Fungsi Tujuan
{
'Records': [{
'data': [{
'doc': '{"_id": {"$oid": "64f9397f6e255f74d65a****"}}'
}],
'pkNames': ['_id'],
'type': 'DELETE',
'es': 1694055452000,
'database': 'MongoDBTest',
'id': 0,
'isDdl': False,
'table': 'user',
'ts': 1694055452852
}]
}