All Products
Search
Document Center

DataWorks:TiDB

Last Updated:Mar 01, 2026

Sumber data TiDB memungkinkan Anda membaca data secara offline. Topik ini menjelaskan dukungan DataWorks terhadap sinkronisasi data untuk TiDB.

Versi TiDB yang didukung

  • Baca offline: Mendukung versi database TiDB 7.x dan 8.x.

  • Tulis offline: Tidak didukung.

  • Baca dan tulis real-time: Tidak didukung.

Catatan

TiDB sangat kompatibel dengan protokol MySQL serta mendukung fitur-fitur umum dan sintaks MySQL 5.7 dan MySQL 8.0. DataWorks menggunakan protokol MySQL untuk membaca data dari TiDB dalam sinkronisasi data offline. Untuk informasi lebih lanjut mengenai kompatibilitas antara TiDB dan MySQL, lihat Compatibility with MySQL.

Tipe field yang didukung

Untuk informasi selengkapnya mengenai semua tipe field TiDB yang didukung, lihat Data Type Overview. Tabel berikut mencantumkan dukungan untuk tipe field utama.

Tipe Field

Baca Offline (TiDB Reader)

TINYINT

Didukung

SMALLINT

Didukung

MEDIUMINT

Didukung

INTEGER

Didukung

BIGINT

Didukung

FLOAT

Didukung

DOUBLE

Didukung

DECIMAL

Didukung

CHAR

Didukung

VARCHAR

Didukung

JSON

Didukung

TEXT

Didukung

TINYTEXT

Didukung

MEDIUMTEXT

Didukung

LONGTEXT

Didukung

VARBINARY

Didukung

BINARY

Didukung

BLOB

Didukung

TINYBLOB

Didukung

MEDIUMBLOB

Didukung

LONGBLOB

Didukung

ENUM

Didukung

SET

Didukung

BOOLEAN

Didukung

BIT

Didukung

DATE

Didukung

DATETIME

Didukung

TIMESTAMP

Didukung

TIME

Didukung

YEAR

Didukung

Prasyarat: Persiapkan lingkungan TiDB

Sebelum melakukan sinkronisasi data di DataWorks, Anda harus menyiapkan lingkungan TiDB terlebih dahulu agar dapat mengonfigurasi dan menjalankan tugas sinkronisasi data TiDB dengan benar. Bagian berikut menjelaskan langkah-langkah persiapan tersebut.

Konfirmasi versi TiDB

Data Integration memerlukan versi TiDB 7.x atau 8.x. Pastikan database TiDB Anda memenuhi persyaratan versi ini. Untuk memeriksa versi saat ini, jalankan pernyataan berikut di database TiDB Anda.

SELECT TIDB_VERSION()\G

*************************** 1. row ***************************
TIDB_VERSION(): Release Version: v8.1.1
Edition: Community
Git Commit Hash: 821e491a20fbab36604b36b647b5bae26a2c1418
Git Branch: HEAD
UTC Build Time: 2024-08-27 19:16:25
GoVersion: go1.21.10
Race Enabled: false
Check Table Before Drop: false
Store: tikv
1 row in set (0.00 sec)

Konfigurasikan izin akun

Buat akun TiDB khusus untuk DataWorks agar dapat mengakses sumber data tersebut.

  1. (Opsional) Buat akun. Untuk informasi selengkapnya, lihat User Account Management.

  2. Konfigurasikan izin.

    Untuk pembacaan data offline dari TiDB, akun ini harus memiliki izin baca (SELECT) pada tabel-tabel yang ingin Anda sinkronkan.

    Anda dapat menjalankan perintah berikut untuk memberikan izin kepada akun tersebut atau 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 dan tetapkan password. Ini memungkinkan akun login ke database dari host mana pun. Tanda persen (%) menunjukkan host apa pun.
    GRANT SELECT ON *.* TO 'sync_account'@'%'; // Berikan izin SELECT pada database kepada akun sinkronisasi.

    *.* memberikan izin tertentu kepada akun tersebut pada semua tabel di seluruh database. Anda juga dapat memberikan izin hanya pada tabel tertentu di database target. Misalnya, untuk memberikan izin pada tabel user di database test, jalankan pernyataan berikut: GRANT SELECT ON test.user TO 'sync_account'@'%';.

    Catatan

    Pernyataan REPLICATION SLAVE memberikan izin global. Anda tidak dapat menggunakan pernyataan ini untuk memberikan izin pada tabel tertentu di database target kepada akun sinkronisasi.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, tambahkan sumber data yang diperlukan ke DataWorks sesuai petunjuk dalam Data source management. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Lampiran: Contoh skrip TiDB dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, konfigurasikan parameter terkait dalam skrip sesuai dengan format skrip terpadu. Untuk informasi selengkapnya, lihat Configure a task in the code editor. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

Kode berikut menyediakan contoh skrip untuk membaca data:

Catatan

Komentar dalam contoh JSON berikut hanya untuk tujuan demonstrasi. Hapus komentar tersebut saat mengonfigurasi skrip.

{
  "type": "job",
  "version": "2.0",
  "steps":
  [
    {
      "stepType": "tidb",
      "parameter":
      {
        "column":
        [
          "id",
          "name"
        ],
        "where": "",
        "splitPk": "id",
        "connection":
        [
          {
            "selectedDatabase": "test_database",
            "datasource": "test_datasource",
            "table":
            [
              "test_table"
            ]
          }
        ]
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "odps",
      "parameter":
      {
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting":
  {
    "errorLimit":
    {
      "record": "0"
    },
    "speed":
    {
      "throttle": false,
      "concurrent": 3
    }
  },
  "order":
  {
    "hops":
    [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Parameter skrip Reader

Script parameter name

Description

Required

Default value

datasource

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

Yes

None

table

Nama tabel tempat data akan disinkronkan.

Contoh berikut menunjukkan penggunaan lanjutan parameter table untuk mengonfigurasi rentang:

  • Anda dapat membaca data dari tabel terpartisi (sharded tables) dengan mengonfigurasi rentang. Misalnya, 'table_[0-99]' menunjukkan bahwa data dibaca dari 'table_0', 'table_1', 'table_2', hingga 'table_99'.

  • Jika akhiran numerik nama tabel Anda memiliki 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]"]'.

Yes

None

column

Kolom-kolom yang akan disinkronkan dari tabel yang ditentukan. Gunakan array JSON untuk menggambarkan bidang-bidang tersebut. Untuk menyinkronkan semua kolom, atur parameter ini menjadi ["*"].

  • Pemangkasan kolom (Column pruning): Anda dapat memilih kolom tertentu untuk diekspor.

  • Pengubahan urutan kolom (Column reordering): Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

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

    • id adalah nama kolom biasa.

    • table adalah nama kolom yang juga merupakan kata tercadang (reserved word).

    • 1 adalah konstanta integer.

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

    • Mengenai null:

      • "" menunjukkan string kosong.

      • null menunjukkan nilai null.

      • 'null' menunjukkan string "null".

    • Fungsi to_char(a+1) 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.

Yes

None

splitPk

Saat TiDB Reader mengekstraksi data, jika Anda menentukan splitPk, sistem akan menggunakan field yang ditentukan untuk mempartisi data. Hal ini memungkinkan tugas sinkronisasi berjalan secara konkuren dan meningkatkan efisiensi.

  • Gunakan primary key tabel sebagai splitPk. Primary key biasanya terdistribusi merata, sehingga membantu mencegah hot spot data pada shard yang dihasilkan.

  • Saat ini, splitPk hanya mendukung partisi data berbasis integer. Fitur ini tidak mendukung tipe data lain seperti string, bilangan titik mengambang, atau tanggal. Jika Anda menentukan tipe data yang tidak didukung, fitur splitPk akan diabaikan dan data disinkronkan melalui satu saluran saja.

  • Jika Anda tidak menentukan splitPk atau nilainya kosong, data disinkronkan dari tabel melalui satu saluran saja.

No

None

where

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

  • Kondisi where memungkinkan sinkronisasi data inkremental yang efisien. Jika Anda tidak menentukan klausa where, atau kunci maupun nilainya tidak diberikan, semua data akan disinkronkan.

  • Sintaks limit tidak didukung dalam kondisi where.

No

None