全部产品
Search
文档中心

DataWorks:Sumber data MySQL

更新时间:Nov 25, 2025

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, 5.6.x, 5.7.x, dan 8.0.x, serta 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 versi 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. Solusi ini kompatibel dengan Amazon RDS for MySQL, Azure MySQL, dan Amazon Aurora MySQL.

    Penting

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

Batasan

Baca real-time

  • Sinkronisasi data dari instans hanya baca MySQL tidak didukung.

  • Menyinkronkan tabel yang berisi functional indexes tidak didukung.

  • XA ROLLBACK tidak didukung.

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

  • Hanya format ROW untuk binary logging server MySQL yang didukung.

  • 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 Anda. 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 operasi DDL online hanya mendukung penambahan kolom (Add Column) ke tabel MySQL menggunakan Data Management DMS.

  • Membaca stored procedures dari MySQL tidak didukung.

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.

  • Membaca stored procedures dari MySQL tidak didukung.

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)

Baca real-time

Penulisan 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 di 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();

Konfigurasi 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. Konfigurasi izin.

    • Luring

      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. Dalam pernyataan berikut, ganti 'sync_account' dengan akun yang 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. Konfigurasi peringatan latensi untuk tugas Anda dan pantau disk space database Anda.

  • Anda harus menyimpan log biner setidaknya selama 72 jam. Hal 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 memodifikasi 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 memodifikasi konfigurasi binlog_row_image.

Konfigurasi 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. Hal 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. Konfigurasi parameter kunci berikut dan klik Grant permissions.

      • Atur Resource Scope ke Tingkat Akun.

      • Atur Policy ke Kebijakan Sistem.

      • 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 kunci:

      • Atur Principal Type ke Akun Alibaba Cloud.

      • Atur Principal Name ke Akun Alibaba Cloud Lain 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 kunci:

      • Atur Policy ke Kebijakan Sistem.

      • Atur Policy Name ke AliyunDataWorksAccessingRdsOSSBinlogPolicy.

    3. Modifikasi kebijakan kepercayaan untuk peran RAM yang dibuat. Untuk informasi selengkapnya, lihat Modifikasi 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 adalah instans RDS Alibaba Cloud, Anda dapat membuat sumber data dalam mode instans Alibaba Cloud. Tabel berikut menjelaskan parameter-parameternya:

Parameter

Deskripsi

Nama Sumber Data

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

Mode Konfigurasi

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

Akun Alibaba Cloud

Pilih akun yang memiliki instans. 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 Akun Alibaba Cloud Lain, Anda harus menentukan informasi berikut:

  • ID Akun Alibaba Cloud Lain: ID akun Alibaba Cloud yang memiliki instans.

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

Wilayah

Wilayah tempat instans berada.

Instance

Nama instans yang ingin Anda hubungkan.

Konfigurasi Instans Sekunder

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

Alamat Instans

Setelah memilih instans yang benar, klik Dapatkan Titik Akhir Terbaru untuk melihat titik akhir publik atau privat, VPC, dan vSwitch instans.

Database

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

Username/Password

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

Aktifkan Pembacaan Log Biner dari OSS

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

Metode Autentikasi

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

Versi

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

Nama Sumber Data

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

Mode Konfigurasi

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

Pratinjau String Koneksi JDBC

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

Alamat Koneksi

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

Port: Port database. Nilai default adalah 3306.

Nama Database

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

Username/Password

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

Versi

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

Metode Autentikasi

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

Parameter Lanjutan

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

Nilai: 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 kelompok sumber daya dapat terhubung ke sumber data. Jika tidak, tugas selanjutnya tidak dapat dijalankan. Konfigurasi jaringan yang diperlukan tergantung 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 instruksi, lihat Konfigurasi tugas sinkronisasi real-time di DataStudio.

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

Untuk instruksi, lihat Konfigurasi 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

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 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 dari mana data akan disinkronkan. Tugas integrasi data hanya dapat membaca data dari satu tabel.

Contoh berikut menunjukkan 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 ke '"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 ini. 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, [*].

  • Pemangkasan 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. Parameter ini tidak boleh kosong.

Ya

Tidak ada

splitPk

Saat MySQL Reader mengekstrak data, menentukan parameter splitPk 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 memberikan splitPk atau meninggalkan 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 untuk hari ini. Anda dapat mengatur kondisi where ke 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 ke `limit 10`. Hal 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 konten parameter ini untuk memfilter data. Misalnya, untuk 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 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, parameter tersebut 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 masing-masing 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. Hal 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 yang akan disinkronkan data.

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 seperti 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 seperti 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 adalah NULL. Saat 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 yang akan ditulis data. 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 dapat secara signifikan 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 saat terjadi konflik primary key atau unique index. Pisahkan field dengan koma (,), misalnya, "updateColumn":["name","age"].

Tidak

Tidak ada