全部产品
Search
文档中心

DataWorks:Sumber data MySQL

更新时间:Feb 04, 2026

Sumber data MySQL menyediakan saluran dua arah untuk membaca dari dan menulis ke MySQL. Topik ini menjelaskan kemampuan sinkronisasi data DataWorks untuk MySQL.

Versi MySQL yang didukung

  • Baca dan tulis offline:

    Mendukung MySQL 5.5.x, MySQL 5.6.x, MySQL 5.7.x, dan MySQL 8.0.x. Kompatibel dengan Amazon RDS for MySQL, Azure MySQL, dan Amazon Aurora MySQL.

    Sinkronisasi offline mendukung pembacaan data dari view.

  • Baca real-time:

    Data Integration membaca data MySQL secara real-time dengan berlangganan log biner MySQL. Sinkronisasi real-time didukung untuk MySQL 5.5.x, 5.6.x, 5.7.x, dan 8.0.x. Untuk versi 8.0.x, semua fitur didukung kecuali fitur baru seperti functional indexes. Kompatibel dengan Amazon RDS for MySQL, Azure MySQL, dan Amazon Aurora MySQL.

    Penting

    Untuk menyinkronkan data dari database DRDS for MySQL, jangan konfigurasikan sebagai sumber data MySQL. Untuk informasi selengkapnya, lihat Konfigurasikan sumber data DRDS.

Batasan

Baca real-time

  • Tidak mendukung sinkronisasi data dari instans hanya baca MySQL versi sebelum 5.6.x.

  • Tidak mendukung sinkronisasi tabel yang berisi functional indexes.

  • XA ROLLBACK tidak didukung.

    Untuk data dalam transaksi yang berada dalam status XA PREPARE, sinkronisasi real-time akan menulis data tersebut ke tujuan. Jika terjadi XA ROLLBACK, sinkronisasi real-time tidak akan melakukan rollback data tersebut. Untuk menangani skenario ini, Anda harus menghapus tabel secara manual dari tugas sinkronisasi real-time, lalu menambahkannya kembali untuk memulai ulang sinkronisasi.

  • Hanya mendukung format ROW untuk binary logging server MySQL.

  • Sinkronisasi real-time tidak menyinkronkan catatan di tabel terkait yang dihapus oleh operasi cascade delete.

  • Untuk database Amazon Aurora MySQL, Anda harus terhubung ke instans database utama atau writer. Hal ini karena AWS tidak mengizinkan Anda mengaktifkan fitur binary logging pada read replica Aurora MySQL. Tugas sinkronisasi real-time memerlukan log biner untuk melakukan pembaruan inkremental.

  • Sinkronisasi real-time untuk operasi DDL Online hanya mendukung penambahan kolom (Add Column) ke tabel MySQL menggunakan Data Management DMS.

  • Tidak mendukung pembacaan prosedur tersimpan dari MySQL.

Baca offline

  • Ketika plugin MySQL Reader menyinkronkan data dari beberapa tabel dalam database ter-shard, jumlah tugas ter-shard secara default sama dengan jumlah tabel. Untuk mengaktifkan sharding pada satu tabel, Anda harus mengatur jumlah tugas konkuren ke nilai yang lebih besar dari jumlah tabel.

  • Tidak mendukung pembacaan prosedur tersimpan dari MySQL.

Tipe data yang didukung

Untuk daftar lengkap tipe data setiap versi MySQL, lihat dokumentasi resmi MySQL. Tabel berikut mencantumkan tipe data utama yang didukung di MySQL 8.0.x sebagai contoh.

Tipe data

Baca offline (MySQL Reader)

Tulis offline (MySQL Writer)

Pembacaan Real-Time

Tulis real-time

TINYINT

Didukung

Didukung

Didukung

Didukung

SMALLINT

Didukung

Didukung

Didukung

Didukung

INTEGER

Didukung

Didukung

Didukung

Didukung

BIGINT

Didukung

Didukung

Didukung

Didukung

FLOAT

Didukung

Didukung

Didukung

Didukung

DOUBLE

Didukung

Didukung

Didukung

Didukung

DECIMAL/NUMERIC

Didukung

Didukung

Didukung

Didukung

REAL

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

VARCHAR

Didukung

Didukung

Didukung

Didukung

JSON

Didukung

Didukung

Didukung

Didukung

TEXT

Didukung

Didukung

Didukung

Didukung

MEDIUMTEXT

Didukung

Didukung

Didukung

Didukung

LONGTEXT

Didukung

Didukung

Didukung

Didukung

VARBINARY

Didukung

Didukung

Didukung

Didukung

BINARY

Didukung

Didukung

Didukung

Didukung

TINYBLOB

Didukung

Didukung

Didukung

Didukung

MEDIUMBLOB

Didukung

Didukung

Didukung

Didukung

LONGBLOB

Didukung

Didukung

Didukung

Didukung

ENUM

Didukung

Didukung

Didukung

Didukung

SET

Didukung

Didukung

Didukung

Didukung

BOOLEAN

Didukung

Didukung

Didukung

Didukung

BIT

Didukung

Didukung

Didukung

Didukung

DATE

Didukung

Didukung

Didukung

Didukung

DATETIME

Didukung

Didukung

Didukung

Didukung

TIMESTAMP

Didukung

Didukung

Didukung

Didukung

TIME

Didukung

Didukung

Didukung

Didukung

YEAR

Didukung

Didukung

Didukung

Didukung

LINESTRING

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

POLYGON

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

MULTIPOINT

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

MULTILINESTRING

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

MULTIPOLYGON

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

GEOMETRYCOLLECTION

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

Persiapan

Sebelum mengonfigurasi sumber data MySQL di DataWorks, lengkapi persiapan yang dijelaskan dalam bagian ini untuk memastikan tugas selanjutnya berjalan sesuai harapan.

Bagian berikut menjelaskan persiapan yang diperlukan untuk menyinkronkan data MySQL.

Konfirmasi versi MySQL

Data Integration memiliki persyaratan versi tertentu untuk MySQL. Untuk informasi selengkapnya, lihat bagian Versi MySQL yang didukung. Anda dapat menjalankan pernyataan berikut di database MySQL Anda untuk memeriksa versi saat ini.

SELECT version();

Konfigurasikan izin akun

Buat akun MySQL khusus untuk DataWorks mengakses sumber data. Prosedurnya sebagai berikut.

  1. Opsional: Buat akun.

    Untuk informasi selengkapnya, lihat Buat akun MySQL.

  2. Konfigurasikan izin.

    • Offline

      Sinkronisasi offline

      • Untuk membaca data dari MySQL, akun harus memiliki izin SELECT pada tabel target.

      • Untuk menulis data ke MySQL, akun harus memiliki izin INSERT, DELETE, dan UPDATE pada tabel target.

    • Sinkronisasi real-time

      Untuk sinkronisasi real-time, akun harus memiliki izin SELECT, REPLICATION SLAVE, dan REPLICATION CLIENT pada database.

    Anda dapat menjalankan perintah berikut untuk memberikan izin kepada akun, atau Anda dapat langsung memberikan izin SUPER. Pada pernyataan berikut, ganti 'sync_account' dengan akun yang telah Anda buat.

    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'password'; //Buat akun sinkronisasi, atur kata sandi, dan izinkan login ke database dari host mana pun. Tanda persen (%) menunjukkan host apa pun.
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%'; // Berikan izin SELECT, REPLICATION SLAVE, dan REPLICATION CLIENT pada database ke akun sinkronisasi.

    *.* memberikan izin yang ditentukan pada semua tabel di semua database. Anda juga dapat memberikan izin pada tabel tertentu di database target. Misalnya, untuk memberikan izin `SELECT` dan `REPLICATION CLIENT` pada tabel user di database test, jalankan pernyataan berikut: GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.

    Catatan

    REPLICATION SLAVE adalah izin global. Anda tidak dapat memberikan izin ini pada tabel tertentu di database target.

Aktifkan binary logging MySQL (hanya untuk sinkronisasi real-time)

Data Integration melakukan sinkronisasi real-time data inkremental dengan berlangganan log biner MySQL. Sebelum mengonfigurasi tugas sinkronisasi di DataWorks, Anda harus mengaktifkan layanan binary logging MySQL. Prosedurnya sebagai berikut:

Penting
  • Jika log biner sedang digunakan, database tidak dapat menghapusnya. Jika tugas sinkronisasi real-time mengalami latensi tinggi, log biner di database sumber mungkin disimpan dalam waktu lama. Konfigurasikan peringatan latensi untuk tugas Anda dan pantau ruang disk database Anda.

  • Anda harus menyimpan log biner setidaknya selama 72 jam. Ini mencegah kehilangan data jika tugas gagal dan tidak dapat diatur ulang ke offset sebelumnya karena log biner telah dihapus. Dalam kasus ini, Anda harus melakukan sinkronisasi offline penuh untuk mengisi kembali data.

  1. Periksa apakah binary logging diaktifkan.

    • Jalankan pernyataan berikut untuk memeriksa apakah binary logging diaktifkan.

      SHOW variables LIKE "log_bin";

      Jika perintah mengembalikan ON, binary logging diaktifkan.

    • Jika Anda menyinkronkan data dari database sekunder, Anda juga dapat menjalankan pernyataan berikut untuk memeriksa apakah binary logging diaktifkan.

      SHOW variables LIKE "log_slave_updates";

      Jika perintah mengembalikan ON, binary logging diaktifkan pada database sekunder.

    Jika hasilnya tidak sesuai:

  2. Periksa format log biner.

    Jalankan pernyataan berikut untuk memeriksa format log biner.

    SHOW variables LIKE "binlog_format";

    Nilai pengembalian yang mungkin dijelaskan sebagai berikut:

    • ROW: Format log biner adalah ROW.

    • STATEMENT: Format log biner adalah STATEMENT.

    • MIXED: Format log biner adalah MIXED.

    Penting

    Sinkronisasi real-time DataWorks hanya mendukung format ROW untuk binary logging server MySQL. Jika perintah mengembalikan nilai selain ROW, Anda harus mengubah format log biner.

  3. Periksa apakah full row image logging diaktifkan.

    Jalankan pernyataan berikut untuk memeriksa apakah full row image logging diaktifkan.

    SHOW variables LIKE "binlog_row_image";

    Nilai pengembalian yang mungkin dijelaskan sebagai berikut:

    • FULL: Full row image logging diaktifkan untuk log biner.

    • MINIMAL: Minimal row image logging diaktifkan untuk log biner. Full row image logging tidak diaktifkan.

    Penting

    Sinkronisasi real-time DataWorks hanya mendukung server MySQL yang mengaktifkan full row image logging. Jika perintah mengembalikan nilai selain FULL, Anda harus mengubah konfigurasi binlog_row_image.

Konfigurasikan otorisasi untuk membaca log biner dari OSS

Saat menambahkan sumber data MySQL, jika Anda mengatur Configuration Mode ke Alibaba Cloud Instance Mode dan instans RDS for MySQL berada di wilayah yang sama dengan ruang kerja DataWorks, Anda dapat mengaktifkan Enable Binary Log Reading from OSS. Setelah mengaktifkan fitur ini, jika DataWorks tidak dapat mengakses log biner RDS, sistem akan mencoba mendapatkan log biner dari OSS. Ini mencegah tugas sinkronisasi real-time terganggu.

Jika Anda mengatur Identity to Access Binary Logs from OSS ke Alibaba Cloud RAM User atau Alibaba Cloud RAM Role, Anda juga harus mengonfigurasi izin akun seperti dijelaskan di bawah ini.

  • Pengguna RAM Alibaba Cloud

    1. Login ke Konsol RAM dan temukan pengguna RAM yang ingin Anda berikan izin.

    2. Pada kolom Actions, klik Add Permissions.

    3. Konfigurasikan parameter utama berikut dan klik Grant permissions.

      • Atur Resource Scope ke Account Level.

      • Atur Policy ke System Policy.

      • Atur Policy Name ke AliyunDataWorksAccessingRdsOSSBinlogPolicy.

      image

  • Peran RAM Alibaba Cloud

    1. Login ke Konsol RAM dan buat peran RAM. Untuk informasi selengkapnya, lihat Buat peran RAM untuk akun Alibaba Cloud tepercaya.

      Parameter utama:

      • Atur Principal Type ke Alibaba Cloud Account.

      • Atur Principal Name ke Other Alibaba Cloud Account dan masukkan ID akun Alibaba Cloud yang memiliki ruang kerja DataWorks.

      • Atur Role Name ke nama kustom.

    2. Berikan izin kepada peran RAM yang dibuat. Untuk informasi selengkapnya, lihat Berikan izin kepada peran RAM.

      Parameter utama:

      • Atur Policy ke System Policy.

      • Atur Policy Name ke AliyunDataWorksAccessingRdsOSSBinlogPolicy.

    3. Ubah kebijakan kepercayaan untuk peran RAM yang dibuat. Untuk informasi selengkapnya, lihat Ubah kebijakan kepercayaan peran RAM.

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "<Alibaba_Cloud_account_ID_of_the_DataWorks_user>@di.dataworks.aliyuncs.com",
                          "<Alibaba_Cloud_account_ID_of_the_DataWorks_user>@dataworks.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }

Tambahkan sumber data

Mode instans Alibaba Cloud

Jika database MySQL Anda merupakan instans RDS Alibaba Cloud, Anda dapat membuat sumber data dalam mode instans Alibaba Cloud. Tabel berikut menjelaskan parameter-parameternya:

Parameter

Deskripsi

Data Source Name

Nama sumber data. Nama harus unik dalam ruang kerja. Gunakan nama yang mengidentifikasi bisnis dan lingkungan, misalnya rds_mysql_order_dev.

Configuration Mode

Pilih mode instans Alibaba Cloud. Untuk informasi selengkapnya, lihat Skenario 1: Mode instans (akun Alibaba Cloud saat ini) dan Skenario 2: Mode instans (akun Alibaba Cloud lain).

Alibaba Cloud Account

Pilih akun tempat instans berada. Jika Anda memilih Other Alibaba Cloud Account, Anda harus mengonfigurasi izin cross-account. Untuk informasi selengkapnya, lihat Otorisasi cross-account (RDS, Hive, atau Kafka).

Jika Anda memilih Other Alibaba Cloud Account, Anda harus menentukan informasi berikut:

  • Other Alibaba Cloud Account ID: ID akun Alibaba Cloud tempat instans berada.

  • RAM Role for Authorization: Peran RAM yang disediakan oleh akun Alibaba Cloud lain. Peran ini harus memiliki izin untuk menggunakan instans tujuan.

Region

Wilayah tempat instans berada.

Instance

Nama instans yang ingin Anda hubungkan.

Configure Secondary Instance

Jika sumber data memiliki instans hanya baca (read replica), Anda dapat memilih read replica untuk operasi baca saat mengonfigurasi tugas. Ini mencegah gangguan pada database utama dan tidak memengaruhi performanya.

Instance Address

Setelah memilih instans yang benar, klik Get Latest Endpoint untuk melihat endpoint publik atau pribadi, VPC, dan vSwitch instans.

Database

Nama database yang perlu diakses oleh sumber data. Pastikan pengguna yang ditentukan memiliki izin untuk mengakses database tersebut.

Username/Password

Username dan password akun database MySQL. Jika Anda menggunakan instans RDS, Anda dapat membuat dan mengelola akun di bagian Account Management instans.

Enable Binary Log Reading from OSS

Jika Anda mengaktifkan fitur ini, ketika DataWorks tidak dapat mengakses log biner RDS, sistem akan mencoba mendapatkan log biner dari OSS. Ini mencegah tugas sinkronisasi real-time terganggu. Untuk informasi selengkapnya tentang konfigurasi, lihat Konfigurasikan otorisasi untuk membaca log biner dari OSS. Kemudian, atur OSS Binlog Access Identity berdasarkan konfigurasi otorisasi.

Authentication Method

Anda dapat memilih No Authentication atau SSL Authentication. Jika memilih SSL Authentication, autentikasi SSL harus diaktifkan pada instans itu sendiri. Siapkan file sertifikat dan unggah ke Certificate File Management.

Version

Anda dapat login ke server MySQL dan menjalankan perintah `SELECT VERSION()` untuk melihat nomor versi.

Mode string koneksi

Anda juga dapat membuat sumber data dalam mode string koneksi untuk fleksibilitas yang lebih besar. Tabel berikut menjelaskan parameter-parameternya:

Parameter

Deskripsi

Data Source Name

Nama sumber data. Nama harus unik dalam ruang kerja. Gunakan nama yang mengidentifikasi bisnis dan lingkungan, misalnya rds_mysql_order_dev.

Configuration Mode

Pilih Connection String Mode. Mode ini menghubungkan ke database menggunakan URL JDBC.

JDBC Connection String Preview

Setelah Anda memasukkan endpoint dan nama database, DataWorks secara otomatis menggabungkannya menjadi URL JDBC untuk Anda pratinjau.

Connection Address

Host IP: Alamat IP atau nama domain host database. Jika database adalah instans RDS Alibaba Cloud, Anda dapat melihat endpoint di halaman produk instans.

Port: Port database. Nilai default adalah 3306.

Database Name

Nama database yang perlu diakses oleh sumber data. Pastikan pengguna yang ditentukan memiliki izin untuk mengakses database tersebut.

Username/Password

Username dan password akun database MySQL. Jika Anda menggunakan instans RDS, Anda dapat membuat dan mengelola akun di bagian Account Management instans.

Version

Anda dapat login ke server MySQL dan menjalankan perintah `SELECT VERSION()` untuk melihat nomor versi.

Authentication Method

Anda dapat memilih No Authentication atau SSL Authentication. Jika memilih SSL Authentication, autentikasi SSL harus diaktifkan pada instans itu sendiri. Siapkan file sertifikat dan unggah ke Authentication File Management.

Advanced Parameters

Parameter: Klik daftar drop-down parameter dan pilih nama parameter yang didukung, seperti connectTimeout.

Value: Masukkan nilai untuk parameter yang dipilih, seperti 3000.

URL kemudian diperbarui secara otomatis menjadi: jdbc:mysql://192.168.90.28:3306/test?connectTimeout=50000.

Penting

Anda harus memastikan bahwa kelompok sumber daya dapat terhubung ke sumber data. Jika tidak, tugas selanjutnya tidak dapat dijalankan. Konfigurasi jaringan yang diperlukan bergantung pada lingkungan jaringan dan mode koneksi sumber data Anda. Untuk informasi selengkapnya, lihat Uji konektivitas.

Kembangkan tugas sinkronisasi data: Panduan proses sinkronisasi MySQL

Untuk informasi tentang titik masuk dan prosedur mengonfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Panduan mengonfigurasi tugas sinkronisasi offline untuk satu tabel

Panduan mengonfigurasi tugas sinkronisasi real-time untuk satu tabel

Untuk petunjuk, lihat Konfigurasikan tugas sinkronisasi real-time di DataStudio.

Panduan mengonfigurasi tugas sinkronisasi tingkat database: offline, penuh dan inkremental (real-time), serta ter-shard (real-time)

Untuk petunjuk, lihat Konfigurasikan tugas sinkronisasi di Data Integration.

FAQ

Untuk informasi selengkapnya tentang masalah umum lainnya di Data Integration, lihat FAQ tentang Data Integration.

Lampiran: Contoh skrip MySQL dan deskripsi 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 Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

Bagian ini memberikan contoh konfigurasi untuk satu tabel dalam satu database dan untuk tabel ter-shard:

Catatan

Komentar dalam contoh JSON berikut hanya untuk tujuan demonstrasi. Anda harus menghapus komentar saat mengonfigurasi skrip.

  • Satu tabel dalam satu database

    {
      "type": "job",
      "version": "2.0",// Nomor versi.
      "steps": [
        {
          "stepType": "mysql",// Nama plugin.
          "parameter": {
            "column": [// Nama kolom.
              "id"
            ],
            "connection": [
              {
                "querySql": [
                  "select a,b from join1 c join join2 d on c.id = d.id;"
                ],
                "datasource": ""// Nama sumber data.
              }
            ],
            "where": "",// Kondisi filter.
            "splitPk": "",// Kunci shard.
            "encoding": "UTF-8"// Format encoding.
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "stream",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "errorLimit": {
          "record": "0"// Jumlah catatan error yang diizinkan.
        },
        "speed": {
          "throttle": true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan laju transfer data tidak dibatasi. Jika throttle diatur ke true, laju transfer data dibatasi.
          "concurrent": 1,// Jumlah tugas konkuren.
          "mbps": "12"// Laju transfer data maksimum. 1 mbps = 1 MB/s.
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Tabel ter-shard

    Catatan

    Sharding memungkinkan MySQL Reader memilih beberapa tabel MySQL yang memiliki skema yang sama. Dalam konteks ini, sharding berarti menulis data dari beberapa tabel sumber MySQL ke satu tabel tujuan. Untuk mengonfigurasi sharding tingkat database, Anda dapat membuat tugas di Data Integration dan memilih fitur sharding tingkat database.

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "indexes": [
              {
                "type": "unique",
                "column": [
                  "id"
                ]
              }
            ],
            "envType": 0,
            "useSpecialSecret": false,
            "column": [
              "id",
              "buyer_name",
              "seller_name",
              "item_id",
              "city",
              "zone"
            ],
            "tableComment": "Tabel pesanan uji coba",
            "connection": [
              {
                "datasource": "rds_dataservice",
                "table": [
                  "rds_table"
                ]
              },
              {
                "datasource": "rds_workshop_log",
                "table": [
                  "rds_table"
                ]
              }
            ],
            "where": "",
            "splitPk": "id",
            "encoding": "UTF-8"
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "odps",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        },
        {
          "name": "Processor",
          "stepType": null,
          "category": "processor",
          "copies": 1,
          "parameter": {
            "nodes": [],
            "edges": [],
            "groups": [],
            "version": "2.0"
          }
        }
      ],
      "setting": {
        "executeMode": null,
        "errorLimit": {
          "record": ""
        },
        "speed": {
          "concurrent": 2,
          "throttle": false
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Nama tabel tempat data akan disinkronkan. Tugas integrasi data hanya dapat membaca data dari satu tabel.

Contoh penggunaan lanjutan parameter table untuk mengonfigurasi rentang:

  • Anda dapat mengonfigurasi rentang untuk membaca data dari tabel ter-shard. Misalnya, 'table_[0-99]' menentukan bahwa data dibaca dari 'table_0', 'table_1', 'table_2', hingga 'table_99'.

  • Jika tabel Anda memiliki akhiran numerik dengan panjang yang sama, seperti 'table_000', 'table_001', 'table_002', hingga 'table_999', Anda dapat mengatur parameter menjadi '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]'.

Catatan

Tugas membaca semua tabel yang cocok. Secara khusus, tugas membaca kolom yang ditentukan oleh parameter column di tabel-tabel tersebut. Jika tabel atau kolom tidak ada, tugas gagal.

Ya

Tidak ada

column

Kumpulan nama kolom yang akan disinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan informasi field. Secara default, semua kolom dikonfigurasi, misalnya [*].

  • Pemotongan kolom: Anda dapat memilih subset kolom untuk diekspor.

  • Pengurutan ulang kolom: Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

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

    • id adalah nama kolom biasa.

    • table adalah nama kolom yang merupakan kata tercadang.

    • 1 adalah konstanta integer.

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

    • Tentang null:

      • " " menunjukkan string kosong.

      • null menunjukkan nilai null.

      • 'null' menunjukkan string "null".

    • to_char(a+1) adalah fungsi untuk menghitung panjang string.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah Nilai Boolean.

  • Parameter column harus secara eksplisit menentukan kumpulan kolom yang akan disinkronkan. Tidak boleh kosong.

Ya

Tidak ada

splitPk

Saat MySQL Reader mengekstrak data, menentukan parameter splitPk akan melakukan sharding data berdasarkan field yang diwakili oleh splitPk. Hal ini memungkinkan sinkronisasi data berjalan sebagai tugas konkuren, yang meningkatkan efisiensi sinkronisasi.

  • Kami menyarankan Anda menggunakan primary key tabel untuk splitPk. Primary key biasanya terdistribusi merata, yang membantu mencegah hot spot data di shard.

  • Saat ini, splitPk hanya mendukung sharding untuk tipe data integer. Tidak mendukung string, bilangan titik mengambang, atau tanggal. Jika Anda menentukan tipe data yang tidak didukung, fungsi splitPk diabaikan, dan satu channel digunakan untuk sinkronisasi.

  • Jika Anda tidak menentukan splitPk, termasuk tidak menyediakan splitPk atau membiarkan nilai splitPk kosong, sinkronisasi data menggunakan satu channel untuk menyinkronkan data tabel.

Tidak

Tidak ada

splitFactor

Faktor sharding. Anda dapat mengonfigurasi jumlah shard untuk sinkronisasi data. Jika Anda mengonfigurasi beberapa thread konkuren, data di-shard menjadi `jumlah thread konkuren × splitFactor` bagian. Misalnya, jika jumlah thread konkuren adalah 5 dan splitFactor adalah 5, data di-shard menjadi 5 × 5 = 25 bagian dan diproses oleh 5 thread konkuren.

Catatan

Nilai yang direkomendasikan berkisar antara 1 hingga 100. Nilai yang terlalu besar dapat menyebabkan error kehabisan memori (OOM).

Tidak

5

where

Kondisi filter. Dalam banyak skenario bisnis, Anda mungkin hanya ingin menyinkronkan data hari ini. Anda dapat mengatur kondisi where menjadi gmt_create>$bizdate.

  • Kondisi where dapat digunakan untuk sinkronisasi inkremental yang efisien. Jika Anda tidak menentukan pernyataan where, atau jika kunci atau nilai where kosong, semua data disinkronkan.

  • Jangan mengatur kondisi where menjadi `limit 10`. Ini tidak sesuai dengan batasan klausa WHERE SQL MySQL.

Tidak

Tidak ada

querySql (Mode lanjutan. Parameter ini tidak didukung di Antarmuka tanpa kode.)

Dalam beberapa skenario bisnis, parameter `where` tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk mendefinisikan pernyataan SQL filter kustom. Jika Anda mengonfigurasi parameter ini, sistem mengabaikan parameter `tables`, `columns`, dan `splitPk` dan 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, MySQL Reader mengabaikan konfigurasi table, column, where, dan splitPk. Parameter querySql memiliki prioritas lebih tinggi daripada parameter table, column, where, dan splitPk. Parameter datasource digunakan untuk mengurai informasi seperti username dan password.

Catatan

Parameter querySql bersifat case-sensitive. Misalnya, jika Anda menulisnya sebagai querysql, itu tidak akan berlaku.

Tidak

Tidak ada

useSpecialSecret

Jika Anda memiliki beberapa sumber data sumber, tentukan apakah akan menggunakan password masing-masing sumber data. Nilai yang valid:

  • true

  • false

Jika Anda telah mengonfigurasi beberapa sumber data sumber dan setiap sumber data menggunakan username dan password yang berbeda, Anda dapat mengatur parameter ini ke true untuk menggunakan password masing-masing sumber data.

Tidak

false

Contoh skrip Writer

{
  "type": "job",
  "version": "2.0",// Nomor versi.
  "steps": [
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "mysql",// Nama plugin.
      "parameter": {
        "postSql": [],// Pernyataan SQL yang akan dijalankan setelah impor.
        "datasource": "",// Sumber data.
        "column": [// Nama kolom.
          "id",
          "value"
        ],
        "writeMode": "insert",// Mode tulis. Anda dapat mengatur ke insert, replace, atau update.
        "batchSize": 1024,// Jumlah catatan yang akan dikirimkan dalam satu batch.
        "table": "",// Nama tabel.
        "nullMode": "skipNull",// Kebijakan untuk menangani nilai null.
        "skipNullColumn": [// Kolom yang akan dilewati jika nilainya null.
          "id",
          "value"
        ],
        "preSql": [
          "delete from XXX;"// Pernyataan SQL yang akan dijalankan sebelum impor.
        ]
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {// Jumlah catatan error yang diizinkan.
      "record": "0"
    },
    "speed": {
      "throttle": true,// Jika throttle diatur ke false, parameter mbps tidak berlaku, dan laju transfer data tidak dibatasi. Jika throttle diatur ke true, laju transfer data dibatasi.
      "concurrent": 1,// Jumlah tugas konkuren.
      "mbps": "12"// Laju transfer data maksimum. Ini mencegah tekanan baca/tulis berlebihan pada database hulu/hilir. 1 mbps = 1 MB/s.
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Nama tabel tempat data akan disinkronkan.

Ya

Tidak ada

writeMode

Mode impor. Anda dapat memilih INSERT INTO, ON DUPLICATE KEY UPDATE, atau REPLACE INTO.

  • insert into: Jika terjadi konflik primary key atau unique index, baris yang bertentangan tidak ditulis dan dianggap sebagai data kotor.

    Jika Anda mengonfigurasi tugas di editor kode, atur writeMode ke insert.

  • on duplicate key update: Jika tidak terjadi konflik primary key atau unique index, perilakunya sama dengan insert into. Jika terjadi konflik, nilai field yang ditentukan pada baris yang ada diganti dengan nilai dari baris baru.

    Jika Anda mengonfigurasi tugas di editor kode, atur writeMode ke update.

  • replace into: Jika tidak terjadi konflik primary key atau unique index, perilakunya sama dengan insert into. Jika terjadi konflik, baris yang ada dihapus, dan baris baru dimasukkan. Baris baru menggantikan semua field baris yang ada.

    Jika Anda mengonfigurasi tugas di editor kode, atur writeMode ke replace.

Tidak

insert

nullMode

Kebijakan untuk menangani nilai null. Nilai yang valid:

  • writeNull: Jika field sumber memiliki nilai NULL, nilai NULL ditulis ke field tujuan.

  • skipNull: Jika field sumber memiliki nilai NULL, field tujuan tidak ditulis. Jika field tujuan memiliki nilai default yang ditentukan, nilai default tersebut digunakan. Jika tidak ada nilai default yang ditentukan, nilai kolom tersebut adalah NULL. Saat Anda mengonfigurasi parameter ini, Anda juga harus mengonfigurasi parameter skipNullColumn.

Penting

Jika Anda mengatur parameter ini ke skipNull, tugas secara dinamis menghasilkan pernyataan SQL untuk menulis data guna mendukung nilai default tujuan. Hal ini meningkatkan jumlah operasi FLUSH dan mengurangi kecepatan sinkronisasi. Dalam skenario terburuk, operasi FLUSH dilakukan untuk setiap catatan data.

Tidak

writeNull

skipNullColumn

Saat nullMode diatur ke skipNull, kolom yang dikonfigurasi untuk parameter ini tidak dipaksa ditulis sebagai NULL. Nilai default kolom yang sesuai digunakan dengan prioritas.

Format: ["c1","c2",...], di mana c1 dan c2 harus merupakan subset dari parameter column.

Tidak

Secara default, semua kolom yang dikonfigurasi untuk tugas.

column

Field di tabel tujuan tempat data akan ditulis. Pisahkan field dengan koma (,), misalnya "column":["id","name","age"]. Untuk menulis ke semua kolom secara berurutan, gunakan tanda bintang (*), misalnya "column":["*"].

Ya

Tidak ada

preSql

Pernyataan SQL yang akan dijalankan sebelum tugas sinkronisasi data dimulai. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, Anda dapat menghapus data lama dari tabel sebelum eksekusi: `TRUNCATE TABLE tablename`.

Catatan

Transaksi tidak didukung untuk beberapa pernyataan SQL.

Tidak

Tidak ada

postSql

Pernyataan SQL yang akan dijalankan setelah tugas sinkronisasi data selesai. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL. Misalnya, Anda dapat menambahkan timestamp: ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Catatan

Transaksi tidak didukung untuk beberapa pernyataan SQL.

Tidak

Tidak ada

batchSize

Jumlah catatan yang akan dikirimkan dalam satu batch. Nilai yang lebih besar secara signifikan dapat mengurangi interaksi jaringan antara sistem sinkronisasi data dan MySQL serta meningkatkan throughput keseluruhan. Jika nilai ini diatur terlalu tinggi, dapat menyebabkan error kehabisan memori (OOM) dalam proses sinkronisasi data.

Tidak

256

updateColumn

Saat writeMode diatur ke update, ini adalah field yang akan diperbarui ketika terjadi konflik primary key atau unique index. Pisahkan field dengan koma (,), misalnya "updateColumn":["name","age"].

Tidak

Tidak ada