Sumber data PolarDB memungkinkan Anda membaca dan menulis data ke PolarDB. Anda dapat mengonfigurasi tugas sinkronisasi menggunakan Antarmuka tanpa kode atau mode skrip.
Batasan
Batch read and write
Anda dapat membaca data dari views.
Real-time read
Jika Anda menggunakan kluster PolarDB for MySQL sebagai sumber, Anda harus mengaktifkan binary log. PolarDB for MySQL adalah database cloud-native yang sepenuhnya kompatibel dengan MySQL. Secara default, PolarDB for MySQL menggunakan log fisik tingkat tinggi alih-alih binary log. Untuk integrasi yang lebih baik dengan ekosistem MySQL, PolarDB memungkinkan Anda mengaktifkan binary log.
Tipe data yang didukung
Batch read
Tabel berikut mencantumkan pemetaan tipe data untuk PolarDB Reader.
|
Category |
PolarDB data type |
|
Integer |
INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT |
|
Floating-point |
FLOAT, DOUBLE, dan DECIMAL |
|
String |
VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT |
|
Date and time |
DATE, DATETIME, TIMESTAMP, TIME, dan YEAR |
|
Boolean |
BIT dan BOOL |
|
Binary |
TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY |
-
Tipe data yang tidak tercantum dalam tabel tidak didukung.
-
Plugin PolarDB Reader memperlakukan TINYINT(1) sebagai integer.
Batch write
Seperti halnya PolarDB Reader, PolarDB Writer mendukung sebagian besar—namun tidak semua—tipe data PolarDB. Pastikan tipe data Anda didukung.
Tabel berikut mencantumkan pemetaan tipe data untuk PolarDB Writer.
|
Kategori |
Tipe data PolarDB |
|
Integer |
INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT, dan YEAR |
|
Floating-point |
FLOAT, DOUBLE, dan DECIMAL |
|
String |
VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT |
|
Date and time |
DATE, DATETIME, TIMESTAMP, dan TIME |
|
Boolean |
BOOL |
|
Binary |
TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY |
Prasyarat
Konfigurasikan daftar putih alamat IP
Tambahkan Blok CIDR dari VPC yang berisi Serverless resource group atau Exclusive Resource Group for Data Integration ke daftar putih alamat IP kluster PolarDB Anda. Untuk informasi selengkapnya, lihat Set a cluster whitelist.
Buat akun dan berikan izin
Buat akun dan berikan izin yang diperlukan.
Buat akun database untuk sinkronisasi data. Akun tersebut harus memiliki izin SELECT, REPLICATION SLAVE, REPLICATION CLIENT pada database.
-
Buat akun.
Untuk informasi selengkapnya, lihat Buat dan kelola akun database.
-
Berikan izin.
Jalankan perintah berikut untuk memberikan izin yang diperlukan kepada akun tersebut. Atau, Anda dapat memberikan izin
SUPER.-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';
Aktifkan binary logging
Untuk informasi selengkapnya, lihat Enable binary logging.
Tambahkan sumber data
Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Data source configuration. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami makna parameter saat menambahkan sumber data.
Konfigurasikan tugas sinkronisasi
Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.
Konfigurasikan tugas batch tabel tunggal
-
Untuk informasi selengkapnya, lihat Configure a task in the codeless UI dan Configure a task in script mode.
-
Untuk daftar lengkap parameter dan demo skrip, lihat Appendix: Script demo and parameters.
Konfigurasikan sinkronisasi real-time untuk tabel atau database
Untuk informasi selengkapnya, lihat Configure a real-time synchronization task (legacy).
Konfigurasikan pembacaan batch seluruh database dan sinkronisasi real-time inkremental
Untuk informasi selengkapnya, lihat Configure a real-time full-database synchronization task.
FAQ
Lampiran: Demo skrip dan parameter
Konfigurasikan 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 Script mode configuration. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.
Demo skrip Reader
Kode berikut memberikan contoh skrip untuk membaca data dari satu tabel dalam database. Untuk informasi selengkapnya tentang parameter, lihat bagian deskripsi parameter.
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "test_005", // Nama sumber data.
"column": [ // Nama kolom sumber.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"where": "id=1001", // Kondisi filter.
"splitPk": "id", // Kunci sharding.
"table": "PolarDB_person", // Nama tabel sumber.
"useReadonly": "false" // Menentukan apakah akan membaca data dari database sekunder.
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
],
"version": "2.0", // Nomor versi.
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": { // Toleransi error.
"record": ""
},
"speed": {
"concurrent": 6, // Tingkat konkurensi.
"throttle": true, // Jika throttle disetel ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle disetel ke true, pembatasan kecepatan diaktifkan.
"mbps":"12" // Laju pembatasan, dalam MB/s.
}
}
}
Parameter skrip Reader
|
Parameter |
Deskripsi |
Wajib |
Default |
|
datasource |
Nama sumber data. Dalam mode skrip, nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan. |
Ya |
Tidak ada |
|
table |
Nama tabel sumber tempat Anda ingin menyinkronkan data. |
Ya |
Tidak ada |
|
useReadonly |
Menentukan apakah akan membaca data dari database sekunder. Jika Anda menyetel parameter ini ke |
Tidak |
false |
|
column |
Kolom dalam tabel sumber yang ingin Anda sinkronkan. Nilainya harus berupa array JSON. Parameter ini wajib dan tidak boleh kosong. Contoh:
|
Ya |
Tidak ada |
|
splitPk |
Kunci sharding. Anda dapat menentukan kolom untuk parameter splitPk guna melakukan sharding data, yang memungkinkan pemrosesan konkuren dan meningkatkan efisiensi sinkronisasi data.
|
Tidak |
Tidak ada |
|
splitFactor |
Faktor sharding. Parameter ini menentukan jumlah shard. Jika Anda mengonfigurasi tingkat konkurensi, data akan di-shard menjadi concurrency × splitFactor shard. Misalnya, jika konkurensi adalah 5 dan Catatan
Kami menyarankan Anda menyetel parameter ini ke nilai antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM). |
Tidak |
5 |
|
where |
Kondisi filter. Misalnya, untuk menyinkronkan hanya data hari ini, setel parameter
|
Tidak |
Tidak ada |
|
querySql (Mode lanjutan, tidak tersedia di Antarmuka tanpa kode) |
Dalam beberapa skenario, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk menentukan kueri SQL kustom. Saat parameter ini dikonfigurasi, sistem sinkronisasi data mengabaikan parameter column, table, dan where serta langsung menggunakan isi parameter ini untuk memfilter data. Misalnya, untuk menyinkronkan data setelah penggabungan tabel ganda, gunakan |
Tidak |
Tidak ada |
Demo skrip Writer
Kode berikut memberikan contoh konfigurasi skrip. Untuk informasi selengkapnya tentang parameter, lihat bagian deskripsi parameter.
{
"type": "job",
"steps": [
{
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"parameter": {
"postSql": [], // Pernyataan SQL yang akan dijalankan setelah tugas sinkronisasi selesai.
"datasource": "test_005", // Nama sumber data.
"column": [ // Nama kolom tujuan.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"writeMode": "insert", // Mode penulisan.
"batchSize": 256, // Jumlah catatan yang dikirimkan dalam setiap batch.
"table": "PolarDB_person_copy", // Nama tabel tujuan.
"preSql": [] // Pernyataan SQL yang akan dijalankan sebelum tugas sinkronisasi dimulai.
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0", // Nomor versi.
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": { // Toleransi error.
"record": ""
},
"speed": {
"throttle":true, // Jika throttle disetel ke false, parameter mbps tidak berlaku dan pembatasan kecepatan dinonaktifkan. Jika throttle disetel ke true, pembatasan kecepatan diaktifkan.
"concurrent":6, // Tingkat konkurensi.
"mbps":"12" // Laju pembatasan, dalam MB/s.
}
}
}
Parameter skrip Writer
-
Semua parameter
Parameter
Deskripsi
Wajib
Default
datasource
Nama sumber data. Dalam mode skrip, nilai parameter ini harus sama dengan nama sumber data yang telah ditambahkan.
Ya
Tidak ada
table
Nama tabel tujuan tempat Anda ingin menyinkronkan data.
Ya
Tidak ada
writeMode
Mode penulisan. Nilai yang valid:
-
insert: sesuai denganINSERT INTOdi Antarmuka tanpa kode. -
update: sesuai denganON DUPLICATE KEY UPDATEdi Antarmuka tanpa kode. -
replace: sesuai denganREPLACE INTOdi Antarmuka tanpa kode.
Untuk informasi selengkapnya tentang mode dan contohnya, lihat bagian Detail parameter writeMode di bawah ini.
CatatanUntuk PolarDB for PostgreSQL, hanya mode
insertyang didukung. Untuk memperbarui data dan mencegah konflik primary key, hapus data duplikat sebelum menjalankan tugas sinkronisasi batch. Metode berikut direkomendasikan:-
Metode 1: Di parameter preSql (yang sesuai dengan Pre-Import Statement di Antarmuka tanpa kode), konfigurasikan pernyataan
TRUNCATEuntuk membersihkan tabel tujuan. -
Metode 2: Proses tabel tujuan di node hulu untuk mencegah konflik primary key selama sinkronisasi data.
Tidak
insert
column
Kolom tujuan tempat Anda ingin menulis data. Pisahkan kolom dengan koma (,). Contoh:
"column": ["id", "name", "age"]. Untuk menulis data ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh:"column": ["*"].Ya
Tidak ada
preSql
Menentukan satu atau beberapa pernyataan SQL yang akan dijalankan sebelum tugas dimulai. Antarmuka tanpa kode mendukung satu pernyataan, sedangkan mode skrip mendukung beberapa pernyataan, seperti pernyataan untuk membersihkan data yang ada.
Tidak
Tidak ada
postSql
Menentukan satu atau beberapa pernyataan SQL yang akan dijalankan setelah tugas selesai. Antarmuka tanpa kode mendukung satu pernyataan, sedangkan mode skrip mendukung beberapa pernyataan, seperti pernyataan untuk menambahkan timestamp.
Tidak
Tidak ada
batchSize
Jumlah catatan yang dikirimkan dalam setiap batch. Nilai yang lebih besar dapat meningkatkan throughput dengan mengurangi interaksi jaringan dengan PolarDB, tetapi nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM).
Tidak
1024
updateColumn
Kolom yang akan diperbarui ketika terjadi konflik primary key atau unique index. Parameter ini hanya berlaku ketika
writeModedisetel keupdate. Anda dapat menentukan beberapa kolom, dipisahkan dengan koma. Contoh:"updateColumn": ["name", "age"].CatatanParameter ini hanya didukung untuk PolarDB for MySQL.
Tidak
Tidak ada
-
-
Detail parameter writeMode
Perbandingan
insert(sesuai denganINSERT INTOdi Antarmuka tanpa kode)update(sesuai denganON DUPLICATE KEY UPDATEdi Antarmuka tanpa kode)replace(sesuai denganREPLACE INTOdi Antarmuka tanpa kode)Strategi penanganan konflik
Jika terjadi konflik primary key atau unique index, baris yang bertentangan tidak ditulis ke tabel tujuan dan diproses sebagai data kotor.
Jika tidak terjadi konflik primary key atau unique index, mode ini berfungsi sama seperti mode INSERT INTO. Jika terjadi konflik, baris baru hanya memperbarui field yang ditentukan dari baris yang sudah ada.
Jika tidak terjadi konflik primary key atau unique index, mode ini berfungsi sama seperti mode INSERT INTO. Jika terjadi konflik, baris yang sudah ada dihapus dan baris baru dimasukkan, sehingga secara efektif mengganti semua field-nya.
Contoh data
-
Tabel sumber
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Tabel tujuan awal
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | | +----+---------+-----+ -
Setelah tugas dijalankan, satu baris ditulis ke tabel tujuan dan satu baris dicatat sebagai data kotor.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | wangwu | | +----+---------+-----+
-
Skenario 1: Tugas dikonfigurasi untuk menyinkronkan hanya beberapa kolom:
"column": ["id","name"]-
Tabel sumber
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Tabel tujuan awal
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Setelah tugas dijalankan, dua baris ditulis ke tabel tujuan dan tidak ada data kotor yang dicatat.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | 3 | +----+---------+-----+
-
-
Skenario 2: Tugas dikonfigurasi untuk menyinkronkan semua kolom:
"column": ["id","name","age"]-
Tabel sumber
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Tabel tujuan awal
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Setelah tugas dijalankan, dua baris ditulis ke tabel tujuan dan tidak ada data kotor yang dicatat.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+
-
-
Tabel sumber
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Tabel tujuan awal
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Setelah tugas dijalankan, dua baris ditulis ke tabel tujuan dan tidak ada data kotor yang dicatat.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+
-