All Products
Search
Document Center

DataWorks:Sumber data PolarDB

Last Updated:Aug 25, 2026

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

Catatan
  • 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.

  1. Buat akun.

    Untuk informasi selengkapnya, lihat Buat dan kelola akun database.

  2. 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

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

Mengapa error terus-menerus dilaporkan ketika tugas sinkronisasi real-time berjalan untuk menyinkronkan data dari Oracle, PolarDB, atau MySQL?

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 true, data dibaca dari database sekunder. Jika Anda mengabaikan parameter ini, nilai default false digunakan, dan data dibaca dari database utama.

Tidak

false

column

Kolom dalam tabel sumber yang ingin Anda sinkronkan. Nilainya harus berupa array JSON. Parameter ini wajib dan tidak boleh kosong. Contoh: ["*"].

  • Anda dapat memilih subset kolom untuk diekspor.

  • Anda dapat mengatur ulang urutan kolom yang akan diekspor terlepas dari skema tabel.

  • Anda dapat menggunakan konstanta. Anda harus mengikuti sintaks SQL. Contoh: ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"].

    • id: nama kolom biasa.

    • table: nama kolom yang juga merupakan kata kunci yang dicadangkan.

    • 1: konstanta integer.

    • 'mingya.wmy': konstanta string. Perhatikan bahwa konstanta string harus diapit tanda kutip tunggal.

    • 'null': konstanta string.

    • to_char(a+1): fungsi yang menghitung panjang string.

    • 2.3: bilangan titik mengambang.

    • true: Nilai Boolean.

  • Parameter column wajib dan tidak boleh kosong. Anda harus menentukan kolom yang ingin disinkronkan.

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.

  • Kami menyarankan Anda menggunakan primary key tabel sebagai nilai parameter splitPk. Primary key biasanya terdistribusi merata, sehingga mencegah hotspot data pada shard yang dibuat.

  • Parameter splitPk hanya mendukung sharding data berbasis integer. Tipe data string, floating-point, date, dan lainnya tidak didukung. Jika Anda menentukan kolom dengan tipe data yang tidak didukung, sharding data dinonaktifkan dan data disinkronkan dalam satu thread.

  • Jika Anda tidak menentukan parameter splitPk atau menyetelnya ke null, sinkronisasi data menggunakan satu thread.

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 splitFactor adalah 5, data dibagi menjadi 25 shard dan diproses oleh 5 thread konkuren.

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 where ke gmt_create>$bizdate.

  • Kondisi where memungkinkan Anda melakukan sinkronisasi inkremental secara efisien. Jika Anda tidak menentukan klausa where, semua data akan disinkronkan.

  • Kami menyarankan agar Anda tidak menentukan LIMIT 10 sebagai kondisi where karena hal ini tidak sesuai dengan batasan klausa WHERE.

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 select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, PolarDB Reader langsung mengabaikan parameter column, table, dan where. Parameter querySql memiliki prioritas lebih tinggi daripada parameter table, column, where, dan splitPk. datasource digunakan untuk mengurai informasi seperti username dan password.

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 dengan INSERT INTO di Antarmuka tanpa kode.

    • update: sesuai dengan ON DUPLICATE KEY UPDATE di Antarmuka tanpa kode.

    • replace: sesuai dengan REPLACE INTO di Antarmuka tanpa kode.

    Untuk informasi selengkapnya tentang mode dan contohnya, lihat bagian Detail parameter writeMode di bawah ini.

    Catatan

    Untuk PolarDB for PostgreSQL, hanya mode insert yang 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 TRUNCATE untuk 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 writeMode disetel ke update. Anda dapat menentukan beberapa kolom, dipisahkan dengan koma. Contoh: "updateColumn": ["name", "age"].

    Catatan

    Parameter ini hanya didukung untuk PolarDB for MySQL.

    Tidak

    Tidak ada

  • Detail parameter writeMode

    Perbandingan

    insert (sesuai dengan INSERT INTO di Antarmuka tanpa kode)

    update (sesuai dengan ON DUPLICATE KEY UPDATE di Antarmuka tanpa kode)

    replace (sesuai dengan REPLACE INTO di 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    |     |
      +----+---------+-----+