Sumber data ApsaraDB for OceanBase memungkinkan Anda membaca dari dan menulis ke ApsaraDB for OceanBase. Anda dapat menggunakan sumber data ini untuk mengonfigurasi dan menjalankan tugas sinkronisasi data. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan DataWorks untuk ApsaraDB for OceanBase.
Versi yang didukung
Plugin ApsaraDB for OceanBase Reader dan ApsaraDB for OceanBase Writer mendukung operasi pembacaan dan penulisan data batch untuk versi ApsaraDB for OceanBase berikut:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Batasan
Pembacaan batch
ApsaraDB for OceanBase menyediakan dua mode tenant: Oracle dan MySQL. Saat Anda mengonfigurasi klausa where atau kolom fungsi pada parameter column, sintaks Anda harus kompatibel dengan mode tenant instans tersebut. Jika tidak, pernyataan SQL mungkin gagal.
Anda dapat membaca data dari sebuah view.
Untuk mencegah masalah kualitas data seperti duplikasi atau kehilangan data, jangan memodifikasi data selama tugas sinkronisasi batch sedang berjalan.
Jika Anda mengonfigurasi sumber data untuk read data by partition, akun yang digunakan untuk mengakses sumber data harus memiliki izin system.
Penulisan batch
Akun yang digunakan untuk tugas ini memerlukan setidaknya izin insert into.... Izin tambahan mungkin diperlukan tergantung pada pernyataan SQL yang Anda tentukan dalam parameter preSql dan postSql.
Kami menyarankan Anda menggunakan metode batch untuk menulis data. Metode ini hanya menginisiasi permintaan penulisan setelah jumlah baris tertentu terkumpul.
ApsaraDB for OceanBase menyediakan dua mode tenant: Oracle dan MySQL. Saat Anda mengonfigurasi parameter preSql dan postSql, sintaksnya harus kompatibel dengan mode tenant instans Anda. Jika tidak, pernyataan SQL mungkin gagal dieksekusi.
Pembacaan real-time
Hanya mode tenant MySQL dari ApsaraDB for OceanBase yang didukung.
Untuk menyinkronkan data secara real-time, Anda harus mengaktifkan fitur Binlog. Untuk informasi selengkapnya, lihat Operasi terkait Binlog (instans Alibaba Cloud) dan Operasi terkait Binlog (instans OceanBase Cloud).
Untuk sinkronisasi real-time seluruh database, sumber data yang menggunakan string koneksi tidak didukung.
Untuk sinkronisasi real-time seluruh database, instans ApsaraDB for OceanBase harus menggunakan versi V3.0 atau yang lebih baru.
ApsaraDB for OceanBase adalah database relasional terdistribusi yang dapat mengonsolidasikan data dari beberapa database fisik yang tersebar menjadi satu database logis tunggal. Namun, saat Anda menyinkronkan data secara real-time dari ApsaraDB for OceanBase ke AnalyticDB for MySQL, Anda hanya dapat menyinkronkan data dari satu database fisik. Anda tidak dapat menyinkronkan data dari database logis.
Sebelum memulai
Sebelum Anda dapat mengonfigurasi dan menjalankan tugas sinkronisasi data ApsaraDB for OceanBase di DataWorks, Anda harus mengonfigurasi instans ApsaraDB for OceanBase Anda. Bagian ini menjelaskan persiapan yang diperlukan.
Konfigurasi daftar putih
Tambahkan blok CIDR dari resource group arsitektur tanpa server atau grup sumber daya eksklusif untuk Integrasi Data ke daftar putih instans ApsaraDB for OceanBase Anda. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP.
Buat akun dan berikan izin
Buat akun database untuk sinkronisasi data. Akun ini harus memiliki izin operasional yang diperlukan pada instans ApsaraDB for OceanBase. Untuk informasi selengkapnya, lihat Buat akun.
Tambahkan sumber data
Sebelum Anda 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.
Konfigurasi tugas sinkronisasi data
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Sinkronisasi batch untuk satu tabel
Sumber data yang didukung: Semua jenis sumber data yang didukung oleh Data Integration.
Panduan konfigurasi: Konfigurasi tugas di antarmuka tanpa kode
Sinkronisasi real-time untuk satu tabel
Sumber data yang didukung: Kafka
Panduan konfigurasi: Konfigurasi tugas sinkronisasi real-time seluruh database
Sinkronisasi real-time untuk seluruh database
Sumber data yang didukung: MySQL
Panduan konfigurasi: Konfigurasi tugas sinkronisasi real-time seluruh database
Lampiran: Contoh 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 selengkapnya, 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 plugin.
"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 error yang diizinkan.
},
"speed": {
"throttle": true, // Menentukan apakah pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent": 1, // Jumlah thread konkuren.
"mbps":"12"// Laju transmisi maksimum. Satuan: MB/s.
}
}
}Parameter skrip Reader
Parameter | Deskripsi | Wajib | Bawaan |
datasource | Nama sumber data ApsaraDB for OceanBase. Anda dapat menentukan koneksi menggunakan parameter ini atau kombinasi parameter jdbcUrl, username, dan | Ya | Tidak ada |
jdbcUrl | URL JDBC database sumber. Anda dapat menentukan beberapa URL koneksi dalam bentuk array JSON. Jika Anda menentukan beberapa URL, plugin ApsaraDB for OceanBase Reader akan mencoba menghubungkannya secara berurutan hingga berhasil membuat koneksi yang valid. Jika semua koneksi gagal, tugas akan gagal. Catatan Parameter jdbcUrl harus bersarang di dalam parameter connection. jdbcUrl String koneksi, yang harus ditentukan sesuai spesifikasi resmi ApsaraDB for OceanBase. Misalnya, | Tidak | Tidak ada |
username | Username untuk akun database. | Tidak | Tidak ada |
password | Password untuk akun database. | Tidak | Tidak ada |
table | Tabel tempat data dibaca. Anda dapat menentukan beberapa tabel dalam bentuk array JSON. Jika Anda menentukan beberapa tabel, pastikan skema tabel tersebut sama. Plugin ApsaraDB for OceanBase Reader tidak memeriksa konsistensi logis antar tabel. Catatan Parameter table harus bersarang di dalam parameter connection. | Ya | Tidak ada |
column | Kolom yang akan dibaca dari tabel yang ditentukan. Tentukan kolom dalam bentuk array JSON. Untuk membaca semua kolom, atur parameter ini ke
| Ya | Tidak ada |
splitPk | Saat ApsaraDB for OceanBase Reader mengekstraksi data, menentukan parameter splitPk menunjukkan bahwa Anda ingin menggunakan kolom yang diwakili oleh splitPk untuk sharding data. Akibatnya, sinkronisasi data memulai tugas konkuren, yang meningkatkan efisiensi.
| Tidak | Kosong |
where | Kondisi filter yang ditambahkan ke kueri SQL. Plugin ApsaraDB for OceanBase Reader membangun kueri SQL berdasarkan parameter column, table, dan where yang ditentukan. Misalnya, Anda dapat mengatur parameter where ke limit 10 untuk tujuan pengujian. Untuk skenario bisnis yang memerlukan sinkronisasi inkremental, Anda dapat mengatur parameter where ke kondisi seperti
| Tidak | Tidak ada |
querySql | Menentukan pernyataan SQL kustom untuk memfilter data. Ini berguna ketika parameter where tidak cukup untuk menggambarkan kondisi filter yang kompleks. Jika Anda mengonfigurasi parameter ini, plugin akan mengabaikan parameter table, column, dan splitPk. Saat Anda mengonfigurasi querySql, ApsaraDB for OceanBase Reader mengabaikan parameter table, column, where, dan splitPk. | Tidak | Tidak ada |
fetchSize | Jumlah catatan yang diambil dari server database dalam satu batch. Nilai yang lebih besar dapat mengurangi jumlah interaksi jaringan antara Data Integration dan server, yang secara signifikan dapat meningkatkan kinerja ekstraksi data. Catatan Nilai fetchSize yang besar (>2048) dapat menyebabkan error kehabisan memori (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 plugin.
"parameter":{
"datasource": "Nama sumber data",
"column": [// Kolom.
"id",
"name"
],
"table": "apsaradb_for_OceanBase_table",// Nama tabel.
"preSql": [ // Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi dijalankan.
"delete from @table where db_id = -1"
],
"postSql": [// Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi dijalankan.
"update @table set db_modify_time = now() where db_id = 1"
],
"obWriteMode": "insert",
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// Jumlah catatan error yang diizinkan.
},
"speed":{
"throttle":true,// Menentukan apakah pembatasan kecepatan diaktifkan. Jika throttle diatur ke false, parameter mbps tidak berlaku. Jika throttle diatur ke true, pembatasan kecepatan diaktifkan.
"concurrent":1, // Jumlah thread konkuren.
"mbps":"12"// Laju transmisi maksimum. Satuan: MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}Parameter skrip Writer
Parameter | Deskripsi | Wajib | Bawaan |
datasource | Nama sumber data ApsaraDB for OceanBase. Anda dapat menentukan koneksi menggunakan parameter ini atau kombinasi parameter jdbcUrl, username, dan | Tidak | Tidak ada |
jdbcUrl | URL JDBC database tujuan. Parameter jdbcUrl harus bersarang di dalam parameter connection.
| Ya | Tidak ada |
username | Username untuk akun database. | Ya | Tidak ada |
password | Password untuk akun database. | Ya | Tidak ada |
table | Nama tabel tujuan. Anda hanya dapat menentukan satu tabel. Catatan Parameter table harus bersarang di dalam parameter connection. | Ya | Tidak ada |
column | Kolom di tabel tujuan tempat Anda ingin menulis data. Tentukan kolom sebagai array JSON berisi string. Contoh: Catatan Anda harus mengonfigurasi parameter column. Parameter ini tidak boleh dibiarkan kosong. | Ya | Tidak ada |
obWriteMode | Mengontrol mode penulisan yang digunakan untuk tabel tujuan. Nilai yang valid:
| Tidak | insert |
onClauseColumns | Catatan Parameter ini untuk mode tenant Oracle. Parameter ini wajib saat Kolom kunci primer atau kolom kendala unik. Untuk menentukan beberapa kolom, pisahkan dengan koma. Contoh: | Tidak | Tidak ada |
obUpdateColumns | Catatan Parameter ini hanya berlaku saat Kolom yang akan diperbarui saat terjadi konflik penulisan. Untuk menentukan beberapa kolom, pisahkan dengan koma. Contoh: | Tidak | Semua kolom |
preSql | Pernyataan SQL yang dieksekusi sebelum tugas menulis data ke tabel tujuan. Jika pernyataan SQL perlu mereferensikan nama tabel, gunakan variabel | Tidak | Tidak ada |
postSql | Pernyataan SQL yang dieksekusi setelah tugas menulis data ke tabel tujuan. | Tidak | Tidak ada |
batchSize | Jumlah catatan yang dikirimkan dalam satu batch. Nilai yang lebih besar dapat mengurangi jumlah interaksi jaringan antara sistem sinkronisasi data dan server database, yang secara signifikan dapat meningkatkan throughput keseluruhan. Catatan Nilai batchSize yang besar (>2048) dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data. | Tidak | 1.024 |