All Products
Search
Document Center

DataWorks:Sumber data MySQL

Last Updated:Jul 08, 2026

Sumber data MySQL memungkinkan sinkronisasi dua arah dengan MySQL. Topik ini menjelaskan bagaimana DataWorks mendukung sinkronisasi tersebut melalui Data Integration.

Versi MySQL yang didukung

  • Baca dan tulis offline:

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

    Sinkronisasi offline dapat membaca dari view.

  • Baca real-time:

    Data Integration menggunakan subscription real-time untuk membaca data dari MySQL. Mendukung sinkronisasi real-time untuk versi MySQL 5.5.x, 5.6.x, 5.7.x, dan 8.0.x, tetapi tidak mendukung fitur baru MySQL 8.0 seperti functional index. Fitur ini juga kompatibel dengan Amazon RDS for MySQL, Azure Database for MySQL, dan Amazon Aurora MySQL.

    Penting

    Jika Anda perlu menyinkronkan data dari DRDS, jangan mengonfigurasinya sebagai sumber data MySQL. Sebaliknya, konfigurasikan langsung sebagai sumber data DRDS. Untuk petunjuknya, lihat Konfigurasi sumber data DRDS.

Batasan

Sinkronisasi real-time

  • Anda tidak dapat menyinkronkan data dari instans read-only instance MySQL yang menjalankan versi lebih lama dari 5.6.x.

  • Menyinkronkan tabel yang berisi functional index tidak didukung.

  • XA ROLLBACK tidak didukung.

    Untuk transaksi dalam status XA PREPARE, sinkronisasi real-time menulis data ke tujuan. Jika perintah XA ROLLBACK dikeluarkan, sinkronisasi real-time tidak membatalkan (rollback) data yang telah dipersiapkan. Untuk menangani skenario ini, Anda harus menghapus tabel secara manual dari tugas sinkronisasi real-time, lalu menambahkannya kembali untuk melakukan resinkronisasi.

  • Format binary log server MySQL harus diatur ke ROW.

  • Sinkronisasi real-time tidak menyinkronkan penghapusan bertingkat (cascading deletes) pada tabel terkait.

  • Untuk database Amazon Aurora MySQL, Anda harus terhubung ke instans primary/writer Anda. Anda tidak dapat mengaktifkan fitur Binlog pada read replica Aurora MySQL, dan tugas sinkronisasi real-time memerlukan Binlog untuk pembaruan inkremental.

  • Untuk perubahan DDL online pada tabel MySQL, sinkronisasi real-time hanya mendukung penambahan kolom (Add Column) melalui Data Management Service (DMS).

  • Membaca stored procedure dari MySQL tidak didukung.

Sinkronisasi offline

  • Saat menggunakan plugin MySQL Reader untuk menyinkronkan beberapa tabel dari database ter-shard, Anda harus mengatur concurrency ke nilai yang lebih besar dari jumlah tabel agar pemisahan tabel (table splitting) aktif. Jika tidak, sistem akan membuat satu tugas per tabel.

  • Membaca stored procedure dari MySQL tidak didukung.

Tipe data yang didukung

Untuk daftar lengkap tipe data MySQL di setiap versi, lihat dokumentasi resmi MySQL. Tabel ini mencantumkan status dukungan untuk tipe data utama, menggunakan MySQL 8.0.x sebagai contoh.

Type

Baca offline (MySQL Reader)

Tulis offline (MySQL Writer)

Baca 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

Prasyarat

Untuk memastikan tugas sinkronisasi data berjalan dengan benar, siapkan lingkungan MySQL Anda sebelum menambahkannya sebagai sumber data di DataWorks.

Topik ini menjelaskan prasyarat yang diperlukan.

Verifikasi versi MySQL

Data Integration hanya mendukung versi MySQL tertentu. Untuk informasi selengkapnya, lihat bagian Versi MySQL yang didukung. Anda dapat memeriksa versi database MySQL Anda dengan menjalankan perintah berikut:

SELECT version();

Konfigurasi izin akun

Kami menyarankan membuat akun MySQL khusus untuk DataWorks mengakses sumber data.

  1. Opsional: Buat akun.

    Untuk petunjuk detail, lihat Buat akun MySQL.

  2. Berikan izin.

    • Batch

      Dalam skenario sinkronisasi batch:

      • Untuk membaca data dari MySQL, akun harus memiliki izin baca (SELECT) pada tabel yang ingin Anda sinkronkan.

      • Untuk menulis data ke MySQL, akun harus memiliki izin tulis (INSERT, DELETE, dan UPDATE) pada tabel yang ingin Anda sinkronkan.

      Catatan

      Jika Anda hanya perlu membaca data dari MySQL untuk sinkronisasi tanpa menulis kembali data, Anda hanya perlu memberikan izin SELECT kepada akun tersebut. Izin INSERT, DELETE, dan UPDATE tidak diperlukan untuk sinkronisasi read-only.

    • Real-time

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

    Anda dapat menjalankan perintah berikut untuk memberikan izin yang diperlukan. Atau, Anda dapat memberikan izin SUPER kepada akun tersebut. Pada perintah berikut, ganti 'sync_account' dengan nama akun yang Anda buat.

    -- Opsional: Buat akun sinkronisasi yang dapat terhubung dari host mana pun ('%').
    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password'; 
    -- Berikan izin yang diperlukan kepada akun sinkronisasi.
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';

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

    Catatan

    Izin REPLICATION SLAVE adalah izin global dan tidak dapat diberikan untuk database atau tabel tertentu.

Aktifkan binlog MySQL (hanya untuk sinkronisasi real-time)

Data Integration melakukan sinkronisasi data inkremental real-time dengan berlangganan binlog MySQL. Sebelum mengonfigurasi tugas sinkronisasi di DataWorks, Anda harus mengaktifkan binlog MySQL.

Penting
  • Jika binlog sedang dikonsumsi, database tidak dapat menghapusnya. Latensi tinggi pada tugas sinkronisasi real-time dapat menunda penghapusan binlog sumber, yang berpotensi menghabiskan ruang disk. Kami menyarankan Anda mengonfigurasi alert latensi untuk tugas Anda dan memantau ruang disk database.

  • Simpan binlog minimal selama 72 jam. Jika tugas gagal dan binlog tidak lagi tersedia, Anda tidak dapat mengatur ulang checkpoint ke posisi sebelum kegagalan, yang dapat menyebabkan kehilangan data. Dalam kasus ini, Anda harus menggunakan sinkronisasi batch untuk mengisi kembali data.

  1. Periksa apakah binlog diaktifkan.

    • Jalankan pernyataan berikut untuk memeriksa apakah binlog diaktifkan.

      SHOW variables LIKE "log_bin";

      Jika nilai yang dikembalikan adalah ON, berarti binlog diaktifkan.

    • Untuk memeriksa status binlog pada database replika, jalankan pernyataan berikut.

      SHOW variables LIKE "log_slave_updates";

      Jika nilai yang dikembalikan adalah ON, berarti binlog diaktifkan pada database replika.

    Jika nilai yang dikembalikan tidak sesuai harapan:

  2. Periksa format binlog.

    Jalankan pernyataan berikut untuk memeriksa format binlog.

    SHOW variables LIKE "binlog_format";

    Kemungkinan nilai yang dikembalikan:

    • Nilai kembali ROW menunjukkan bahwa format binlog yang diaktifkan adalah ROW.

    • STATEMENT: Format binlog adalah STATEMENT.

    • MIXED: Format binlog adalah MIXED.

    Penting

    Sinkronisasi real-time DataWorks hanya mendukung format ROW. Jika nilai yang dikembalikan bukan ROW, Anda harus mengubah pengaturan binlog_format.

  3. Periksa apakah full row image dicatat.

    Jalankan pernyataan berikut untuk memeriksa pengaturan row image.

    SHOW variables LIKE "binlog_row_image";

    Kemungkinan nilai yang dikembalikan:

    • FULL: Full row image dicatat.

    • MINIMAL: Minimal row image dicatat, bukan full row image.

    Penting

    Sinkronisasi real-time DataWorks hanya mendukung server MySQL yang telah mengaktifkan full row image untuk binlog. Jika nilai yang dikembalikan bukan FULL, Anda harus mengubah pengaturan binlog_row_image.

Konfigurasi izin baca binlog OSS

Saat menambahkan sumber data MySQL, jika Anda mengatur Configuration Mode ke ApsaraDB for RDS dan instans RDS for MySQL Anda berada di wilayah yang sama dengan ruang kerja DataWorks Anda, Anda dapat mengaktifkan Read binlogs from OSS. Dengan fitur ini diaktifkan, DataWorks mengambil binlog dari OSS jika akses langsung ke binlog RDS for MySQL gagal, sehingga mencegah gangguan pada tugas sinkronisasi real-time.

Jika Anda menggunakan Alibaba Cloud RAM User atau Alibaba Cloud RAM Role untuk OSS binlog access identity, Anda juga harus memberikan izin yang diperlukan.

  • RAM user

    1. Masuk ke konsol Resource Access Management (RAM), buka halaman Users, lalu temukan RAM user target.

    2. Pada kolom Operations, klik Add Permissions.

    3. Konfigurasi parameter berikut lalu klik OK.

      • Scope: Alibaba Cloud account

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

      image

  • RAM role

    1. Masuk ke konsol Resource Access Management (RAM) dan buat RAM role. Untuk informasi selengkapnya, lihat Buat RAM role untuk akun Alibaba Cloud tepercaya.

      Parameter utama:

      • Select trusted entity: Alibaba Cloud account

      • Select account: Other Alibaba Cloud account. Masukkan ID akun Alibaba Cloud yang memiliki ruang kerja DataWorks.

      • Role name: Masukkan nama kustom.

    2. Berikan izin kepada RAM role. Untuk informasi selengkapnya, lihat Berikan izin kepada RAM role.

      Parameter utama:

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

    3. Ubah trust policy RAM role. Untuk informasi selengkapnya, lihat Edit trust policy RAM role.

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

Tambahkan sumber data

Mode instans Alibaba Cloud

Jika database MySQL Anda berjalan pada instans Alibaba Cloud RDS, kami menyarankan Anda membuat sumber data dalam mode instans Alibaba Cloud. Konfigurasikan parameter sebagai berikut:

Parameter

Deskripsi

Data Source Name

Nama sumber data harus unik dalam ruang kerja. Kami menyarankan menggunakan nama yang secara jelas mengidentifikasi bisnis dan lingkungan, misalnya, rds_mysql_order_dev.

Configuration Mode

Pilih mode instans Alibaba Cloud. Untuk informasi selengkapnya tentang mode konfigurasi, lihat Skenario 1: Instance Mode (Current Cloud Account) dan Skenario 2: Instance Mode (Other Cloud Account).

Alibaba Cloud Account

Pilih akun cloud tempat instans tersebut berada. Jika Anda memilih Another Alibaba Cloud Account, Anda harus mengonfigurasi izin cross-account. Untuk informasi selengkapnya, lihat Cross-Account Authorization (RDS, Hive, or Kafka).

Jika Anda memilih akun cloud lain, berikan informasi berikut:

  • Main account ID: ID akun utama yang memiliki instans tersebut.

  • RAM role name: Peran RAM yang disediakan oleh akun cloud lain. Peran ini harus memiliki izin yang diperlukan untuk mengakses instans target.

Region

Wilayah instans.

Instance

Pilih nama instans yang akan dihubungkan.

Standby library settings

Jika instans RDS Anda memiliki read-only instance (instans standby), Anda dapat mengonfigurasi tugas untuk membaca data darinya. Hal ini mencegah operasi baca mengganggu performa instans utama.

Instance Address

Setelah memilih instans yang benar, klik Get Latest Address untuk melihat informasi seperti alamat publik/pribadi, VPC, dan VSwitch-nya.

Database

Nama database tempat sumber data terhubung. Pastikan pengguna yang ditentukan memiliki izin yang diperlukan untuk mengakses database ini.

Access identity

Pilih sumber kredensial yang digunakan DataWorks untuk mengakses MySQL. Opsi berikut didukung:

  • Username and password: Masukkan username dan password untuk database MySQL. DataWorks menyimpannya dengan enkripsi simetris. Jika Anda menggunakan instans RDS, Anda dapat membuat dan mengelolanya di bagian account management instans tersebut.

  • Key Management Service: Gunakan rahasia generik yang di-host di Alibaba Cloud Key Management Service (KMS). Anda harus terlebih dahulu membuat rahasia generik di KMS. Untuk informasi selengkapnya, lihat Kelola dan gunakan rahasia generik. Kemudian, di sumber data, pilih Kms Region tempat rahasia generik KMS berada, lalu pilih rahasia generik target dari KMS List. Konten rahasia generik KMS mendukung dua format JSON berikut:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Catatan

    Setelah konten rahasia generik KMS diubah, DataWorks menyimpan cache rahasia tersebut hingga 5 menit. Rahasia baru akan berlaku paling lambat dalam waktu 5 menit.

Support OSS binlog reading

Jika diaktifkan, DataWorks mencoba mengambil binlog dari OSS ketika binlog RDS tidak dapat diakses. Hal ini mencegah gangguan pada tugas sinkronisasi real-time. Untuk informasi selengkapnya, lihat Konfigurasi otorisasi untuk membaca binlog OSS. Berdasarkan konfigurasi otorisasi Anda, atur OSS binlog access identity.

Authentication Method

Pilih tanpa autentikasi atau autentikasi SSL. Jika Anda memilih autentikasi SSL, pastikan fitur tersebut juga diaktifkan pada instans. Siapkan file sertifikat dan unggah ke Authentication File Management.

Version

Masuk ke server MySQL dan jalankan kueri SELECT VERSION() untuk memeriksa nomor versi.

Mode string koneksi

Anda juga dapat menggunakan mode string koneksi untuk membuat sumber data, yang menawarkan fleksibilitas lebih tinggi. Konfigurasikan parameter sebagai berikut:

Parameter

Deskripsi

Data Source Name

Nama sumber data harus unik dalam ruang kerja. Kami menyarankan menggunakan nama yang secara jelas mengidentifikasi bisnis dan lingkungan, misalnya, rds_mysql_order_dev.

Configuration Mode

Pilih User-created Data Store with Public IP Addresses. Dalam mode ini, URL JDBC digunakan untuk terhubung ke database.

Connection string preview

Setelah memasukkan alamat koneksi dan nama database, DataWorks secara otomatis menghasilkan pratinjau URL JDBC.

Connection Address

Alamat host: Masukkan alamat akses aktual server database. Pastikan alamat tersebut dapat diakses melalui jaringan dari kelompok sumber daya DataWorks. Skenario umum meliputi:

  • Akses dalam VPC yang sama: Masukkan alamat IP internal (private).

  • Akses melalui Internet atau gerbang NAT: Masukkan Alamat IP publik atau Alamat IP NAT.

Jika database adalah instans Alibaba Cloud RDS, Anda dapat menemukan alamat tersebut di halaman Database Connection pada detail instans.

Nomor port: Port database. Nilai default adalah 3306.

Database Name

Nama database tempat sumber data terhubung. Pastikan pengguna yang ditentukan memiliki izin yang diperlukan untuk mengakses database ini.

Access identity

Pilih sumber kredensial yang digunakan DataWorks untuk mengakses MySQL. Opsi berikut didukung:

  • Username and password: Masukkan username dan password untuk database MySQL. DataWorks menyimpannya dengan enkripsi simetris. Jika Anda menggunakan instans RDS, Anda dapat membuat dan mengelolanya di bagian account management instans tersebut.

  • Key Management Service: Gunakan rahasia generik yang di-host di Alibaba Cloud Key Management Service (KMS). Anda harus terlebih dahulu membuat rahasia generik di KMS. Untuk informasi selengkapnya, lihat Kelola dan gunakan rahasia generik. Kemudian, di sumber data, pilih Kms Region tempat rahasia generik KMS berada, lalu pilih rahasia generik target dari KMS List. Konten rahasia generik KMS mendukung dua format JSON berikut:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Catatan

    Setelah konten rahasia generik KMS diubah, DataWorks menyimpan cache rahasia tersebut hingga 5 menit. Rahasia baru akan berlaku paling lambat dalam waktu 5 menit.

Version

Masuk ke server MySQL dan jalankan kueri SELECT VERSION() untuk memeriksa nomor versi.

Authentication Method

Pilih tanpa autentikasi atau autentikasi SSL. Jika Anda memilih autentikasi SSL, pastikan fitur tersebut juga diaktifkan pada instans. Siapkan file sertifikat dan unggah ke Authentication File Management.

Advanced Parameters

Parameter: Pilih parameter yang didukung dari daftar drop-down, misalnya, connectTimeout.

Nilai: Masukkan nilai yang sesuai untuk parameter yang dipilih, misalnya, 3000.

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

Misalnya, jika Anda mengalami error terkait zona waktu atau perlu menentukan zona waktu, klik Add Property, pilih serverTimezone sebagai parameter, lalu masukkan zona waktu target seperti Asia/Shanghai. Simpan konfigurasi sumber data dan jalankan ulang tugas tersebut.

Penting

Pastikan kelompok sumber daya DataWorks dapat terhubung ke database. Jika tidak, tugas selanjutnya akan gagal. Konfigurasi jaringan bergantung pada lingkungan database dan mode koneksi sumber data. Untuk informasi selengkapnya, lihat Uji konektivitas.

Alur kerja sinkronisasi MySQL

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

Konfigurasi sinkronisasi offline tabel tunggal

Konfigurasi sinkronisasi real-time tabel tunggal

Lihat Konfigurasi tugas sinkronisasi real-time (Legacy) untuk prosedurnya.

Konfigurasi sinkronisasi database penuh

Lihat Konfigurasi tugas sinkronisasi real-time database penuh untuk prosedurnya.

FAQ

Untuk masalah umum Data Integration lainnya, lihat FAQ tentang Data Integration.

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

Contoh skrip Reader

Topik ini menyediakan contoh konfigurasi untuk satu tabel dalam satu database dan untuk tabel ter-shard.

Catatan

Komentar dalam contoh JSON berikut hanya untuk keperluan demonstrasi. Hapus komentar sebelum menjalankan skrip.

  • Tabel tunggal dalam satu database

    {
      "type": "job",
      "version": "2.0",// Nomor versi.
      "steps": [
        {
          "stepType": "mysql",// Nama konektor.
          "parameter": {
            "column": [// Kolom yang akan dibaca.
              "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 maksimum catatan data kotor yang diizinkan.
        },
        "speed": {
          "throttle": true,// Atur ke true untuk mengaktifkan pembatasan laju. Jika false, pembatasan laju dinonaktifkan dan parameter 'mbps' diabaikan.
          "concurrent": 1,// Jumlah thread konkuren.
          "mbps": "12"// Batas laju. 1 mbps = 1 MB/s.
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Tabel ter-shard

    Catatan

    MySQL Reader dapat membaca data dari beberapa tabel MySQL yang memiliki skema yang sama. Dalam konteks ini, "tabel ter-shard" mengacu pada skenario di mana data dari beberapa tabel sumber ditulis ke satu tabel tujuan. Untuk menyinkronkan tabel ter-shard di tingkat database, buat tugas di Data Integration dan pilih fitur sharding database penuh.

    {
      "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",
            "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 Reader

Parameter

Deskripsi

Wajib

Default

datasource

Nama sumber data yang akan dibaca. Nama ini harus sesuai dengan sumber data yang dikonfigurasi di editor kode.

Ya

Tidak ada

table

Nama tabel sumber yang akan disinkronkan. Tugas Data Integration hanya dapat membaca data dari satu tabel logis.

Contoh berikut menunjukkan cara menggunakan pola lanjutan untuk parameter table:

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

  • Jika akhiran numerik dalam nama tabel Anda memiliki panjang konsisten, misalnya, 'table_000', 'table_001', dan 'table_002' hingga 'table_999', Anda dapat mengonfigurasinya sebagai '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]'.

Catatan

Tugas membaca kolom yang ditentukan dalam parameter column dari semua tabel yang cocok dengan pola. Tugas gagal jika tabel yang cocok atau kolom yang ditentukan tidak ada.

Ya

Tidak ada

column

Array JSON yang menentukan kolom yang akan dibaca dari tabel sumber. Untuk memilih semua kolom, gunakan ["*"].

  • Pemangkasan kolom: Anda dapat mengekspor subset kolom.

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

  • Nilai konstan: Anda dapat mengonfigurasi nilai konstan. Nilai-nilai tersebut harus mengikuti 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 kunci yang dicadangkan.

    • 1 adalah konstanta integer.

    • 'mingya.wmy' adalah konstanta string. Harus diapit tanda kutip tunggal.

    • Penanganan nilai null:

      • " " merepresentasikan string yang berisi satu spasi.

      • null merepresentasikan nilai NULL.

      • 'null' merepresentasikan string literal "null".

    • to_char(a+1) adalah fungsi konversi string.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah nilai boolean.

  • Anda harus secara eksplisit menentukan kolom dalam parameter column. Parameter ini tidak boleh kosong.

Ya

Tidak ada

splitPk

Saat MySQL Reader mengekstrak data, jika Anda menentukan parameter splitPk, berarti Anda ingin menggunakan bidang yang direpresentasikan oleh splitPk untuk sharding data. Data Integration kemudian meluncurkan tugas konkuren untuk melakukan sinkronisasi data, yang meningkatkan efisiensi sinkronisasi.

  • Untuk performa terbaik, gunakan primary key tabel sebagai splitPk.

  • Saat ini, splitPk hanya mendukung pemisahan data untuk tipe integer. Tidak mendukung tipe lain seperti string, titik mengambang, atau tanggal. Jika Anda menentukan tipe data yang tidak didukung, fitur splitPk diabaikan, dan satu saluran digunakan untuk sinkronisasi.

  • Jika Anda tidak menentukan splitPk, yaitu Anda tidak memberikan splitPk atau nilai splitPk kosong, sinkronisasi data diperlakukan sebagai sinkronisasi saluran tunggal untuk tabel tersebut.

Tidak

Tidak ada

splitFactor

Faktor sharding. Parameter ini mengontrol berapa banyak shard yang dibuat. Jika concurrency diaktifkan, data dibagi menjadi concurrency × splitFactor shard. Misalnya, jika concurrency adalah 5 dan splitFactor adalah 5, data dibagi menjadi 25 shard yang diproses oleh 5 thread konkuren.

Catatan

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

Tidak

5

where

Kondisi filter. Dalam skenario tipikal, untuk hanya menyinkronkan data hari ini, Anda dapat mengatur kondisi where menjadi gmt_create > $bizdate.

  • Klausa where memungkinkan Anda melakukan sinkronisasi inkremental secara efektif. Jika Anda tidak menentukan pernyataan where, termasuk tidak memberikan kunci atau nilai untuk where, sinkronisasi data diperlakukan sebagai sinkronisasi data penuh.

  • Jangan gunakan klausa seperti LIMIT 10, karena tidak valid dalam klausa WHERE MySQL.

Tidak

Tidak ada

querySql (Hanya tersedia di editor kode; tidak didukung di antarmuka tanpa kode.)

Dalam beberapa kasus penggunaan, parameter where tidak cukup untuk menggambarkan kondisi filter yang diperlukan. Anda dapat menggunakan parameter ini untuk menentukan kueri SQL kustom untuk filtering. Setelah parameter ini dikonfigurasi, sistem sinkronisasi data mengabaikan parameter tables, columns, dan splitPk dan langsung menggunakan konten parameter ini untuk memfilter data. Misalnya, jika Anda perlu menyinkronkan data setelah penggabungan beberapa tabel, gunakan select a,b from table_a join table_b on table_a.id = table_b.id. Saat Anda mengonfigurasi querySql, MySQL Reader langsung mengabaikan konfigurasi kondisi tabel, kolom, where, dan splitPk. Parameter querySql memiliki prioritas lebih tinggi daripada opsi table, column, where, dan splitPk. datasource digunakan untuk mengurai informasi seperti username dan password.

Catatan

Parameter querySql bersifat case-sensitive. Misalnya, querysql (huruf kecil) tidak akan berlaku.

Tidak

Tidak ada

useSpecialSecret

Menentukan apakah akan menggunakan password masing-masing sumber data individu saat Anda memiliki beberapa sumber data sumber. Nilai yang valid:

  • true

  • false

Jika Anda mengonfigurasi beberapa sumber data sumber yang memiliki username dan password berbeda, atur parameter ini ke true untuk menggunakan kredensial 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 konektor.
      "parameter": {
        "postSql": [],// Pernyataan SQL yang dijalankan setelah tugas.
        "datasource": "",// Nama sumber data.
        "column": [// Kolom yang akan ditulis.
          "id",
          "value"
        ],
        "writeMode": "insert",// Mode penulisan. Nilai yang valid: insert, replace, dan update.
        "batchSize": 1024,// Jumlah catatan per batch.
        "table": "",// Nama tabel tujuan.
        "nullMode": "skipNull",// Kebijakan untuk menangani nilai NULL.
        "skipNullColumn": [// Kolom yang akan dilewati jika bernilai NULL.
          "id",
          "value"
        ],
        "preSql": [
          "delete from XXX;"// Pernyataan SQL yang dijalankan sebelum tugas.
        ]
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {// Jumlah maksimum catatan data kotor yang diizinkan.
      "record": "0"
    },
    "speed": {
      "throttle": true,// Atur ke true untuk mengaktifkan pembatasan laju. Jika false, pembatasan laju dinonaktifkan dan parameter 'mbps' diabaikan.
      "concurrent": 1,// Jumlah thread konkuren.
      "mbps": "12"// Batas laju dalam MB/s untuk mencegah tekanan I/O berlebihan pada database. 1 mbps = 1 MB/s.
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parameter Writer

Parameter

Deskripsi

Wajib

Default

datasource

Nama sumber data tujuan. Nama ini harus sesuai dengan sumber data yang dikonfigurasi di editor kode.

Ya

Tidak ada

table

Nama tabel tujuan.

Ya

Tidak ada

writeMode

Mode penulisan. Opsi yang didukung sesuai dengan pernyataan MySQL INSERT INTO, ON DUPLICATE KEY UPDATE, dan REPLACE INTO:

  • insert: Jika terjadi konflik primary key atau unique index, tugas tidak menulis baris yang konflik dan mencatatnya sebagai data kotor.

    Jika Anda mengonfigurasi tugas dalam mode skrip, atur writeMode ke insert.

  • on duplicate key update: Jika tidak terjadi konflik dengan primary key atau unique index, pernyataan berperilaku sama seperti insert into. Jika terjadi konflik, pernyataan memperbarui nilai bidang yang ditentukan dengan nilai dari baris baru dan menulis data ke MySQL.

    Jika Anda mengonfigurasi tugas dalam mode skrip, atur writeMode ke update.

  • replace into: Saat tidak terjadi konflik dengan primary key atau unique index, berperilaku sama seperti insert into. Jika terjadi konflik, pertama-tama menghapus baris asli lalu memasukkan baris baru. Artinya, baris baru menggantikan semua bidang baris asli.

    Jika Anda mengonfigurasi tugas dalam mode skrip, atur writeMode ke replace.

Tidak

insert

nullMode

Menentukan kebijakan untuk menangani nilai NULL dari sumber. Nilai yang valid:

  • writeNull: Jika bidang sumber adalah NULL, nilai NULL ditulis ke bidang tujuan.

  • skipNull: Jika bidang sumber adalah NULL, bidang tujuan diabaikan dari operasi penulisan, memungkinkan nilai default database diterapkan. Jika tidak ada nilai default yang ditentukan, hasilnya biasanya NULL. Anda harus menentukan kolom yang berlaku dalam parameter skipNullColumn.

Penting

Saat dikonfigurasi sebagai skipNull, tugas secara dinamis membuat pernyataan SQL untuk menulis data guna mendukung nilai default di tujuan. Hal ini meningkatkan jumlah operasi FLUSH dan mengurangi kecepatan sinkronisasi. Dalam skenario terburuk, tugas akan melakukan FLUSH sekali untuk setiap catatan data.

Tidak

writeNull

skipNullColumn

Saat nullMode diatur ke skipNull, kolom yang ditentukan oleh parameter ini tidak dipaksa menjadi NULL. Sebaliknya, nilai default masing-masing digunakan jika tersedia.

Format: ["c1","c2",...]. Kolom yang ditentukan seperti c1 dan c2 harus merupakan subset dari kolom yang ditentukan dalam parameter column.

Tidak

Semua kolom yang dikonfigurasi untuk tugas.

column

Kolom tujuan yang akan ditulis, ditentukan sebagai array JSON string. Contoh: "column":["id","name","age"]. Untuk menulis ke semua kolom dalam urutan skema, gunakan tanda bintang (*). Contoh: "column":["*"].

Ya

Tidak ada

preSql

Satu atau beberapa pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi dimulai. Antarmuka tanpa kode hanya mendukung satu pernyataan, sedangkan editor kode mendukung beberapa. Misalnya, Anda dapat menghapus data yang ada dari tabel: TRUNCATE TABLE tablename.

Catatan

Transaksi tidak didukung untuk beberapa pernyataan SQL.

Tidak

Tidak ada

postSql

Satu atau beberapa pernyataan SQL yang dieksekusi setelah tugas sinkronisasi selesai. Antarmuka tanpa kode hanya mendukung satu pernyataan, sedangkan editor kode mendukung beberapa. Misalnya, Anda dapat menambahkan kolom timestamp dengan menggunakan pernyataan berikut: 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 per batch penulisan. Nilai yang lebih besar mengurangi round-trip jaringan dan dapat meningkatkan throughput, tetapi mengatur nilai terlalu tinggi dapat menyebabkan error kehabisan memori (OOM).

Tidak

256

updateColumn

Saat writeMode diatur ke update, parameter ini menentukan kolom mana yang akan diperbarui saat terjadi konflik primary key atau unique index. Tentukan kolom dalam array JSON. Contoh: "updateColumn":["name","age"].

Tidak

Tidak ada