Sumber data ApsaraDB for OceanBase memungkinkan Anda membaca dan menulis data ke ApsaraDB for OceanBase. Gunakan sumber data ini untuk mengonfigurasi tugas sinkronisasi data di DataWorks. Topik ini menjelaskan fitur-fitur yang tersedia untuk menyinkronkan data dengan ApsaraDB for OceanBase.
Versi yang didukung
ApsaraDB for OceanBase Reader dan ApsaraDB for OceanBase Writer mendukung versi OceanBase berikut untuk operasi pembacaan dan penulisan batch:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Batasan
Pembacaan batch
ApsaraDB for OceanBase mendukung mode tenant Oracle dan MySQL. Saat mengonfigurasi klausa where untuk penyaringan data atau kolom fungsi dalam parameter column, pastikan sintaksnya sesuai dengan batasan SQL dari mode tenant yang bersangkutan. Jika tidak, pernyataan SQL mungkin gagal.
Anda dapat membaca data dari sebuah view.
Selama pembacaan batch, jangan ubah data yang sedang disinkronkan untuk mencegah masalah kualitas data, seperti duplikasi atau kehilangan data.
Jika Anda mengonfigurasi sumber data untuk Read by Partition, akun yang digunakan untuk mengakses sumber data memerlukan izin system.
Penulisan batch
Tugas sinkronisasi memerlukan setidaknya izin insert into.... Izin tambahan mungkin diperlukan tergantung pada pernyataan yang Anda tentukan dalam parameter preSql dan postSql.
Kami merekomendasikan menggunakan metode batch untuk menulis data. Metode ini hanya mengirim permintaan penulisan ketika jumlah baris yang terakumulasi mencapai ambang batas yang telah ditentukan.
ApsaraDB for OceanBase mendukung mode tenant Oracle dan MySQL. Saat mengonfigurasi parameter preSql dan postSql, pastikan sintaksnya sesuai dengan batasan SQL dari mode tenant yang bersangkutan. Jika tidak, pernyataan SQL mungkin gagal.
Pembacaan real-time
Fitur ini hanya mendukung mode tenant MySQL OceanBase.
Untuk menyinkronkan data real-time, Anda harus mengaktifkan fitur binlog. Untuk informasi lebih lanjut, lihat Operasi terkait Binlog (Instans Alibaba Cloud), , atau Operasi terkait Binlog (Instans OB Cloud).
Tugas sinkronisasi database penuh real-time tidak mendukung sumber data dalam mode connection string.
Untuk tugas sinkronisasi database penuh real-time, versi database harus V3.0 atau lebih baru.
ApsaraDB for OceanBase adalah database relasional terdistribusi yang dapat mengintegrasikan data dari beberapa database yang tersebar secara fisik menjadi satu database logis. Namun, saat menyinkronkan data secara real-time dari ApsaraDB for OceanBase ke AnalyticDB for MySQL, Anda hanya dapat menyinkronkan data dari satu database fisik. Sinkronisasi data dari database logis tidak didukung.
Prasyarat
Sebelum menyinkronkan data menggunakan DataWorks, siapkan lingkungan ApsaraDB for OceanBase Anda agar dapat mengonfigurasi dan menjalankan tugas sinkronisasi data dengan benar.
Konfigurasi daftar putih
Tambahkan Blok CIDR dari VPC tempat serverless resource group atau grup sumber daya eksklusif untuk Integrasi Data berada ke daftar putih instans OceanBase Anda. Untuk informasi lebih lanjut, lihat Konfigurasi Daftar Putih Alamat IP.
Buat akun dan berikan izin
Buat akun database dengan izin operasi yang diperlukan pada database OceanBase. Untuk informasi lebih lanjut, lihat Buat akun.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.
Pengembangan tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi batch tabel tunggal
Sumber data yang didukung: Semua jenis sumber data yang didukung oleh Data Integration.
Panduan konfigurasi: Konfigurasi tugas sinkronisasi batch
Sinkronisasi real-time tabel tunggal
Sumber data yang didukung: Kafka
Panduan konfigurasi: Konfigurasi tugas sinkronisasi database penuh real-time
Sinkronisasi real-time database penuh
Sumber data yang didukung: MySQL
Panduan konfigurasi: Konfigurasi tugas sinkronisasi database penuh real-time
Lampiran: Skrip dan parameter
Konfigurasi tugas sinkronisasi batch menggunakan editor kode
Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Gunakan Editor Kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Contoh skrip Reader
{
"type": "job",
"steps": [
{
"stepType": "apsaradb_for_OceanBase", // Nama plug-in.
"parameter": {
"datasource": "", // Nama sumber data.
"where": "",
"column": [ // Kolom.
"id",
"name"
],
"splitPk": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" // Jumlah catatan data kotor yang diizinkan.
},
"speed": {
"throttle": true, // Jika diatur ke false, parameter mbps tidak berlaku dan tidak ada pembatasan kecepatan. Jika diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent": 1, // Konkurensi.
"mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
}
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Bawaan |
datasource | Nama sumber data ApsaraDB for OceanBase di DataWorks. Anda dapat mengonfigurasi koneksi menggunakan parameter jdbcUrl atau username. | Ya | Tidak ada |
jdbcUrl | String koneksi JDBC untuk database tujuan. Anda dapat menentukan beberapa alamat koneksi untuk sebuah database dalam bentuk array JSON. Jika beberapa alamat dikonfigurasi, ApsaraDB for OceanBase Reader akan memeriksa alamat IP tersebut secara berurutan hingga menemukan alamat yang valid. Jika semua koneksi gagal, ApsaraDB for OceanBase Reader akan melaporkan error. Catatan Parameter jdbcUrl harus disertakan dalam blok konfigurasi connection. Format jdbcUrl harus sesuai dengan spesifikasi resmi ApsaraDB for OceanBase dan dapat mencakup informasi kontrol koneksi. Contoh: | Tidak | Tidak ada |
username | Username untuk sumber data. | Tidak | Tidak ada |
password | Password untuk username yang ditentukan. | Tidak | Tidak ada |
table | Tabel-tabel dari mana Anda ingin menyinkronkan data. Anda dapat menentukan beberapa tabel dalam bentuk array JSON. Jika Anda mengonfigurasi beberapa tabel, pastikan skema mereka identik. ApsaraDB for OceanBase Reader tidak memverifikasi konsistensi skema antar tabel. Catatan Parameter table harus disertakan dalam blok konfigurasi connection. | Ya | Tidak ada |
column | Kumpulan kolom yang akan disinkronkan. Tentukan kolom-kolom tersebut dalam bentuk array JSON. Secara default, semua kolom digunakan. Contoh:
| Ya | Tidak ada |
splitPk | Saat ApsaraDB for OceanBase Reader mengekstraksi data, jika Anda menentukan parameter splitPk, sistem akan menggunakan kolom yang direpresentasikan oleh splitPk untuk melakukan sharding data. Proses ini memulai tugas konkuren untuk sinkronisasi data dan meningkatkan efisiensinya.
| Tidak | Kosong |
where | ApsaraDB for OceanBase Reader membuat kueri SQL berdasarkan column, table, dan kondisi where yang ditentukan untuk mengekstraksi data. Sebagai contoh, selama pengujian, Anda dapat mengatur kondisi where menjadi limit 10. Dalam skenario bisnis umum, Anda mungkin menyinkronkan data hari ini dengan mengatur kondisi where menjadi
| Tidak | Tidak ada |
querySql | Dalam beberapa skenario bisnis, parameter where mungkin tidak cukup untuk menggambarkan kondisi penyaringan. Anda dapat menggunakan parameter ini untuk menentukan pernyataan SQL penyaringan kustom. Jika parameter ini dikonfigurasi, sistem sinkronisasi data akan mengabaikan parameter table, column, dan splitPk serta menggunakan isi parameter ini untuk menyaring data. Saat Anda mengonfigurasi querySql, ApsaraDB for OceanBase Reader mengabaikan parameter table, column, where, dan splitPk. | Tidak | Tidak ada |
fetchSize | Jumlah catatan data yang diambil dalam setiap batch dari server database. Nilai ini menentukan jumlah interaksi jaringan antara Data Integration dan server serta dapat secara signifikan meningkatkan kinerja ekstraksi data. Catatan Nilai fetchSize yang besar (>2048) dapat menyebabkan error Out of Memory (OOM) dalam proses sinkronisasi data. | Tidak | 1.024 |
Contoh skrip Writer
{
"type":"job",
"version":"2.0",// Nomor versi.
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"apsaradb_for_OceanBase",// Nama plug-in.
"parameter":{
"datasource": "Nama sumber data",
"column": [// Kolom.
"id",
"name"
],
"table": "apsaradb_for_OceanBase_table",// Nama tabel.
"preSql": [ // Pernyataan SQL yang akan dieksekusi sebelum tugas sinkronisasi data dijalankan.
"delete from @table where db_id = -1"
],
"postSql": [// Pernyataan SQL yang akan dieksekusi setelah tugas sinkronisasi data selesai.
"update @table set db_modify_time = now() where db_id = 1"
],
"obWriteMode": "insert",
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan data kotor yang diizinkan.
},
"speed":{
"throttle":true,// Jika diatur ke false, parameter mbps tidak berlaku dan tidak ada pembatasan kecepatan. Jika diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":1, // Konkurensi.
"mbps":"12"// Laju pembatasan kecepatan. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Bawaan |
datasource | Nama sumber data ApsaraDB for OceanBase di DataWorks. Anda dapat mengonfigurasi koneksi menggunakan parameter jdbcUrl atau username. | Tidak | Tidak ada |
jdbcUrl | String koneksi JDBC untuk database tujuan. Parameter jdbcUrl harus disertakan dalam blok konfigurasi connection.
| Ya | Tidak ada |
username | Username untuk sumber data. | Ya | Tidak ada |
password | Password untuk username yang ditentukan. | Ya | Tidak ada |
table | Nama tabel tujuan. Tentukan nama dalam bentuk array JSON. Catatan Parameter table harus disertakan dalam blok konfigurasi connection. | Ya | Tidak ada |
column | Kolom-kolom di tabel tujuan tempat Anda ingin menulis data. Pisahkan nama kolom dengan koma. Contoh: Catatan Parameter column wajib diisi dan tidak boleh kosong. | Ya | Tidak ada |
obWriteMode | Mode penulisan untuk tabel tujuan. Parameter ini opsional.
| Tidak | insert |
onClauseColumns | Catatan Parameter ini digunakan dalam mode tenant Oracle dan wajib diisi saat Konfigurasikan parameter ini dengan kolom kunci primer atau kolom kendala unik. Pisahkan beberapa kolom dengan koma. Contoh: | Tidak | Tidak ada |
obUpdateColumns | Catatan Parameter ini berlaku saat Kolom-kolom yang akan diperbarui saat terjadi konflik penulisan data. Pisahkan beberapa kolom dengan koma. Contoh: | Tidak | Semua kolom |
preSql | Pernyataan SQL yang akan dieksekusi sebelum operasi penulisan. Jika pernyataan SQL perlu beroperasi pada tabel, gunakan | Tidak | Tidak ada |
postSql | Pernyataan SQL yang akan dieksekusi setelah operasi penulisan selesai. | Tidak | Tidak ada |
batchSize | Jumlah catatan yang akan dikomit dalam setiap batch. Nilai ini dapat sangat mengurangi interaksi jaringan antara sistem sinkronisasi data dan server, sehingga meningkatkan throughput secara keseluruhan. Catatan Nilai batchSize yang lebih besar dari 2048 dapat menyebabkan error OOM dalam proses sinkronisasi data. | Tidak | 1.024 |