All Products
Search
Document Center

DataWorks:FAQ sinkronisasi real-time

Last Updated:Mar 11, 2026

Topik ini menjawab pertanyaan yang sering diajukan mengenai sinkronisasi real-time.

Ikhtisar dokumen

Kategori

Pertanyaan terkait

Pedoman konfigurasi untuk tugas sinkronisasi real-time

Permasalahan umum saat menyinkronkan data MySQL

Apa yang harus dilakukan jika tugas sinkronisasi real-time MySQL berhenti membaca data

Permasalahan umum untuk Oracle, PolarDB, dan MySQL

Tugas sinkronisasi real-time untuk Oracle, PolarDB, atau MySQL gagal berulang kali

Pesan error dan solusi

Pesan error dan solusi

  • Error selama sinkronisasi real-time Kafka: Startup mode for the consumer set to timestampOffset, but no begin timestamp was specified.

  • Error selama sinkronisasi real-time MySQL:

    • Cannot replicate because the master purged required binary logs.

    • MySQLBinlogReaderException

    • show master status' has an error!

    • parse.exception.PositionNotFoundException: can't find start position forxxx

  • Error selama sinkronisasi real-time Hologres: permission denied for database xxx

  • Error saat menyinkronkan ke MaxCompute: ODPS-0410051:invalid credentials-accessKeyid not found

  • Error selama sinkronisasi real-time ke Oracle: logminer doesn't init, send HeartbeatRecord

Konfigurasi untuk sinkronisasi real-time

Sumber data yang didukung

Untuk daftar sumber data yang didukung, lihat Sumber Data yang Didukung untuk sinkronisasi real-time.

Latensi tinggi pada tugas sinkronisasi real-time

Jika Anda menemukan bahwa data tidak tersinkronisasi ke tabel tujuan, penyebabnya mungkin adalah latensi tinggi pada tugas sinkronisasi real-time. Periksa nilai Operation Center tugas tersebut di halaman Real-time Computing Nodes di Operation Center. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi latensi tinggi pada tugas sinkronisasi real-time?.

Latensi tinggi dapat disebabkan oleh hal-hal berikut:

Gejala

Penyebab

Solusi

Latensi sumber tinggi

Volume perubahan data yang tinggi di sumber.

Kenaikan latensi yang tiba-tiba menunjukkan lonjakan volume data di sumber pada waktu tertentu.

Jika pembaruan yang sering dan volume data besar di sumber menyebabkan latensi sinkronisasi tinggi, Anda dapat mengambil tindakan berikut:

  • Ubah konfigurasi tugas: Tingkatkan Concurrency tugas berdasarkan jumlah database atau tabel yang akan disinkronkan, sambil tetap berada dalam batas koneksi maksimum database sumber.

    Catatan

    Concurrency maksimum dibatasi oleh Concurrency maksimum yang didukung oleh Resource Group Anda. Spesifikasi Resource Group yang berbeda mendukung jumlah maksimum tugas atau Concurrency yang berbeda. Untuk detailnya, lihat Ikhtisar Resource Group DataWorks. Saat mengatur Concurrency, pertimbangkan jumlah koneksi maksimum yang diizinkan oleh database sumber, seperti instans RDS. Untuk LogHub, Anda dapat mengatur Concurrency berdasarkan jumlah shard.

  • Tingkatkan spesifikasi Resource Group: Jika volume data sumber meningkat atau jika Anda telah mengubah tugas sinkronisasi untuk membaca dari beberapa database atau tabel alih-alih satu, Resource Group saat ini mungkin tidak mampu menangani beban data tersebut. Dalam kasus ini, tingkatkan Resource Group Anda. Untuk detailnya, lihat Ubah spesifikasi.

Offset awal diatur terlalu dini.

Jika Anda mengatur Offset awal terlalu jauh ke masa lalu, tugas sinkronisasi real-time memerlukan waktu untuk mengejar data terkini.

Latensi tujuan tinggi

Masalah kinerja atau beban pada database tujuan.

Jika beban database tinggi, hanya menyesuaikan Concurrency tugas sinkronisasi tidak akan menyelesaikan masalah. Hubungi administrator basis data Anda untuk bantuan.

Latensi sumber dan tujuan tinggi

Sinkronisasi melalui internet menyebabkan penundaan akibat masalah jaringan.

Kami menyarankan membuat koneksi privat dan menyinkronkan data melalui jaringan internal.

Catatan

Sinkronisasi melalui internet memiliki risiko berikut: ketidakstabilan jaringan, kehilangan paket yang sering memengaruhi kinerja, dan keamanan yang lebih rendah.

Perbedaan kinerja signifikan antara database sumber dan tujuan atau beban database yang tinggi juga dapat menyebabkan latensi tinggi.

Jika beban database tinggi, hanya menyesuaikan Concurrency tugas sinkronisasi tidak akan menyelesaikan masalah. Hubungi administrator basis data Anda untuk bantuan.

Risiko penggunaan jaringan publik

Penggunaan internet untuk tugas sinkronisasi real-time memiliki risiko berikut:

  • Jaringan mungkin tidak stabil, dan masalah seperti kehilangan paket yang sering dapat memengaruhi kinerja sinkronisasi.

  • Menawarkan keamanan yang lebih rendah.

Format kolom dalam sinkronisasi real-time

Saat Data Integration menyinkronkan data dari MySQL, Oracle, LogHub, dan PolarDB ke DataHub atau Kafka secara real-time, lima kolom tambahan ditambahkan ke tujuan. Kolom-kolom ini digunakan untuk manajemen metadata, pengurutan, dan deduplikasi. Untuk informasi lebih lanjut, lihat Format kolom dalam sinkronisasi real-time.

Penanganan operasi TRUNCATE

Sinkronisasi real-time mendukung operasi TRUNCATE, yang berlaku selama penggabungan inkremental dan penuh-inkremental. Jika Anda memilih untuk mengabaikan operasi TRUNCATE, hal ini dapat menghasilkan data redundan selama sinkronisasi real-time.

Meningkatkan kecepatan dan kinerja sinkronisasi

Jika kecepatan penulisan sinkronisasi lambat, Anda dapat meningkatkan concurrency sisi tulis dan menyesuaikan parameter JVM. Parameter JVM bergantung pada frekuensi perubahan, bukan jumlah library yang disinkronkan. Jika mesin dalam resource group saat ini memiliki sumber daya yang cukup, mengalokasikan lebih banyak memori mengurangi frekuensi Full GC dan meningkatkan kinerja sinkronisasi real-time.Real-time synchronization 01Real-time synchronization 2

Menjalankan tugas dari konsol

Anda tidak dapat menjalankan tugas sinkronisasi real-time langsung dari antarmuka pengguna DataWorks. Setelah mengonfigurasi tugas, Anda harus mengirim dan menerapkan node real-time tersebut, lalu menjalankannya di lingkungan produksi. Untuk detailnya, lihat Mengoperasikan dan memelihara tugas sinkronisasi real-time.

Sinkronisasi lambat dengan MySQL

Perlambatan ini mungkin disebabkan oleh peningkatan jumlah binlog yang perlu diproses. Binlog dihasilkan pada level instans. Bahkan jika tugas sinkronisasi Anda dikonfigurasi hanya untuk menyinkronkan Tabel A, perubahan pada tabel lain seperti Tabel B dan Tabel C juga akan menghasilkan binlog. Binlog tambahan ini dapat memperlambat proses sinkronisasi.

Penggunaan memori: satu vs. beberapa database

Saat Anda memilih dua atau lebih database, tugas tersebut masuk ke mode sinkronisasi real-time "full-instance". Mode ini mengonsumsi lebih banyak sumber daya dibandingkan menjalankan dua tugas real-time terpisah, masing-masing menyinkronkan satu database.

Kebijakan perubahan DDL

Metode penanganan:

Pemrosesan

Abaikan

Peringatan

Error

Pesan DDL dikirim ke Sumber Data tujuan untuk diproses. Sumber data tujuan yang berbeda mungkin menangani pesan tersebut secara berbeda.

Pesan DDL dibuang, dan sumber data tujuan tidak mengambil tindakan apa pun.

Pesan DDL dibuang, dan peringatan dikirim.

Catatan

Jika tidak ada aturan peringatan yang dikonfigurasi untuk tugas real-time, Anda tidak akan menerima pesan peringatan tersebut.

Tugas sinkronisasi real-time berhenti dan masuk ke status error.

Catatan

Jika aturan peringatan untuk status tugas ini dikonfigurasi, Anda akan menerima pesan peringatan yang sesuai.

Tipe DDL:

Create Table

  • Tugas real-time yang menulis ke Hudi dapat menangani perubahan ini.

    Catatan

    Saat nama tabel yang baru dibuat cocok dengan aturan filter tugas real-time, tabel yang sesuai dibuat di tujuan.

  • Untuk tugas real-time yang menyinkronkan database dan tabel terpartisi, membuat sub-tabel yang cocok dengan aturan akan menyinkronkan datanya ke tabel tujuan. Tabel tujuan baru tidak dibuat.

  • Jenis tugas lain tidak dapat menangani perubahan ini. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Drop Table

  • Tugas real-time yang menyinkronkan database dan tabel terpartisi dapat menangani perubahan ini. Saat sub-tabel yang cocok dengan aturan di-drop, datanya tidak lagi disinkronkan, tetapi tabel tujuan tidak di-drop.

  • Jenis tugas lain tidak dapat menangani perubahan ini. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Add Column

  • Tugas real-time yang menulis ke MaxCompute, Hologres, MySQL, Oracle, atau AnalyticDB for MySQL dapat menangani perubahan ini.

    Catatan

    Saat menambahkan kolom di sumber, kami menyarankan menambahkannya di akhir daftar kolom. Menyisipkan kolom baru di tengah dapat menyebabkan anomali sinkronisasi data.

  • Jenis tugas lain tidak dapat menangani perubahan ini. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Drop Column

Perubahan ini tidak didukung. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Rename Table

Perubahan ini tidak didukung. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Rename Column

Perubahan ini tidak didukung. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Alter Column Type

  • Tugas real-time yang menulis ke Hudi dapat menangani perubahan ini. Untuk detailnya, lihat Schema Evolution.

  • Jenis tugas lain tidak dapat menangani perubahan ini. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Clear Table

  • Tugas real-time yang menulis ke MaxCompute, Hologres, MySQL, Oracle, atau AnalyticDB for MySQL dapat menangani perubahan ini dan akan menghapus data tabel tujuan.

  • Untuk tugas real-time yang menyinkronkan database dan tabel terpartisi, jika operasi TRUNCATE terjadi pada sub-tabel, data dari sub-tabel tersebut dihapus dari tabel tujuan.

  • Jenis tugas lain tidak dapat menangani perubahan ini. Anda hanya dapat mengonfigurasi tugas untuk mengabaikannya, mengirim peringatan, atau melaporkan error.

Pertimbangan DDL dan DML

  • Setelah kolom sumber ditambahkan dan berhasil diproses oleh tujuan, batasan berikut berlaku:

    • Jika Anda menambahkan kolom dengan DEFAULT VALUE, kolom baru di tabel tujuan akan tetap NULL. Saat data baru ditambahkan ke kolom ini di sumber, tugas sinkronisasi real-time akan menyinkronkan data baru tersebut.

    • Jika Anda menambahkan kolom VIRTUAL, kolom baru di tabel tujuan akan tetap NULL. Saat data baru ditambahkan ke kolom ini di sumber, tugas sinkronisasi real-time akan menyinkronkan data baru tersebut.

  • Saat melakukan sinkronisasi real-time dari sumber MySQL atau PolarDB for MySQL, tambahkan kolom baru di akhir tabel alih-alih menyisipkannya di tengah. Jika menyisipkan kolom di tengah tidak dapat dihindari, perhatikan batasan berikut:

    • Untuk solusi penuh dan inkremental, jangan menambahkan kolom di tengah tabel selama fase sinkronisasi penuh. Melakukannya akan menyebabkan anomali data selama fase sinkronisasi real-time.

    • Selama fase sinkronisasi real-time, Offset sinkronisasi harus diatur ulang ke waktu setelah event DDL yang menambahkan kolom tersebut. Jika tidak, anomali dapat terjadi selama sinkronisasi data real-time berikutnya.

  • Jika terjadi anomali data, Anda dapat menginisialisasi ulang tabel dengan melakukan pemuatan data penuh.

Jika tabel sumber memiliki nilai default, apakah nilai tersebut akan dipertahankan di tabel target yang dibuat oleh Data Integration, bersama dengan kendala NOT NULL?

Saat DataWorks membuat tabel target, hanya nama kolom, tipe data, dan komentar dari tabel sumber yang dipertahankan. Nilai default atau kendala tabel sumber, seperti kendala `NOT NULL` dan indeks, tidak dipertahankan.

Latensi tinggi di PostgreSQL setelah failover

Perilaku ini melekat pada PostgreSQL. Jika latensi ini tidak dapat diterima, Anda dapat menghentikan dan memulai ulang tugas untuk memicu sinkronisasi data penuh dan inkremental.

Menjalankan sinkronisasi penuh

Di Data Integration, temukan tugas yang sudah ada di daftar Synchronization Task. Di kolom Operation, klik More > Rerun.

Permasalahan umum saat menyinkronkan data MySQL

Tugas MySQL berhenti membaca data

  1. Jalankan perintah berikut di database untuk melihat file binlog yang sedang ditulis oleh instans:

    show master status 
  2. Bandingkan ini dengan file binlog yang sedang dibaca oleh tugas. Cari log tugas untuk entri seperti journalName=MySQL-bin.000001,position=50 untuk memastikan apakah data sedang ditulis ke database.

  3. Jika data sedang ditulis tetapi binlog tidak maju, hubungi administrator basis data Anda untuk bantuan.

Permasalahan umum untuk Oracle, PolarDB, dan MySQL

Kegagalan tugas berulang

  • Gejala: Tugas sinkronisasi real-time gagal berulang kali.

    Saat sumber adalah sumber data Oracle, PolarDB, atau MySQL, pesan DDL dari sumber tidak diproses secara default. Jika terjadi perubahan DDL selain CREATE TABLE, tugas real-time akan gagal. Karena fitur resume, tugas mungkin tetap gagal meskipun pesan DDL tersebut tidak lagi ada di sumber.

    Catatan

    Untuk mencegah kehilangan atau kerusakan data, jangan gunakan perintah Rename untuk menukar nama dua kolom, misalnya menukar nama Kolom A dan Kolom B.

  • Penyebab: Fitur resume memastikan tidak ada data yang hilang dengan membaca dari Offset yang sedikit lebih awal saat dimulai ulang. Proses ini mungkin membaca ulang pesan DDL sebelumnya, menyebabkan tugas gagal lagi.

  • Solusi:

    1. Jika terjadi perubahan DDL di sumber, terapkan secara manual perubahan yang sama ke database tujuan.

    2. Jalankan tugas sinkronisasi real-time dan ubah kebijakan penanganan pesan DDL dari Error reporting ke Ignoring.

      Catatan

      Perubahan ini bersifat sementara untuk mencegah tugas gagal lagi saat fitur resume membaca ulang event DDL.

    3. Hentikan tugas sinkronisasi real-time, ubah kembali kebijakan penanganan pesan DDL dari Ignoring ke Error reporting, lalu mulai ulang tugas tersebut.

Pesan error dan solusi

Error sinkronisasi Kafka: Startup mode for the consumer set to timestampOffset, but no begin timestamp was specified.

Atur ulang Offset awal.实时同步报错-kafka

Fungsi Reset offset di Data Integration memungkinkan Anda menentukan ulang titik awal sinkronisasi data. Gunakan fungsi ini saat Anda perlu memulai ulang sinkronisasi dari waktu atau posisi data tertentu. Misalnya, jika terjadi error atau jika Anda perlu menyinkronkan ulang sebagian data, mengatur ulang Offset membantu Anda memulai dari posisi yang ditentukan, memastikan konsistensi dan integritas data.

Error sinkronisasi MySQL: Cannot replicate because the master purged required binary logs.

Jika Anda mengalami error Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup. selama sinkronisasi real-time MySQL, artinya Offset binlog yang diperlukan tidak ditemukan di MySQL. Periksa periode retensi binlog di pengaturan MySQL Anda dan pastikan Offset awal tugas berada dalam periode tersebut.

Catatan

Jika Anda tidak dapat berlangganan binlog, coba atur ulang Offset ke waktu saat ini.

Error sinkronisasi MySQL: MySQLBinlogReaderException

Jika Anda mengalami error MySQLBinlogReaderException: The database you are currently syncing is the standby database, but the current value of log_slave_updates is OFF, you need to enable the binlog log update of the standby database first. , penyebabnya mungkin binlog tidak diaktifkan di database standby. Jika Anda ingin menyinkronkan dari database standby, Anda harus mengaktifkan binlog cascaded. Hubungi administrator basis data Anda untuk bantuan.

Untuk detail cara mengaktifkan binlog, lihat Langkah 3: Aktifkan binlog untuk MySQL.

Error sinkronisasi MySQL: show master status' has an error!

Jika Anda mengalami error show master status' has an error! dengan detail seperti Caused by: java.io.IOException: message=Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation, with command: show master status, akun Sumber Data mungkin tidak memiliki izin database yang diperlukan.

Akun yang digunakan untuk konfigurasi Sumber Data memerlukan hak istimewa SELECT, REPLICATION SLAVE, dan REPLICATION CLIENT untuk database tersebut. Untuk detail cara memberikan izin ini, lihat Langkah 2: Buat akun dan konfigurasikan izin.

Error sinkronisasi MySQL: parse.exception.PositionNotFoundException: can't find start position forxxx

Tugas sinkronisasi tidak dapat menemukan Offset yang ditentukan. Atur ulang Offset.

Kesalahan sinkronisasi PolarDB: Server MySQL tidak mengaktifkan fungsi penulisan binlog. Aktifkan terlebih dahulu fungsi penulisan binlog MySQL

  • Kemungkinan Penyebab: Parameter loose_polar_log_bin tidak diaktifkan untuk sumber data PolarDB.

  • Solusi: Aktifkan parameter loose_polar_log_bin. Untuk petunjuk lengkap, lihat Konfigurasi Sumber Data (Sumber PolarDB).

Error sinkronisasi Hologres: permission denied for database xxx

Saat menyinkronkan data ke Hologres secara real-time, Anda harus memberikan izin admin kepada pengguna saat ini untuk instans Hologres, yang mencakup izin untuk membuat skema. Untuk detailnya, lihat Model Izin Hologres.

Error sinkronisasi MaxCompute: ODPS-0410051:invalid credentials-accessKeyid not found

Saat Anda menyinkronkan data ke sumber data MaxCompute menggunakan AccessKey sementara, kunci tersebut secara otomatis kedaluwarsa setelah tujuh hari, menyebabkan tugas gagal. Platform secara otomatis memulai ulang tugas saat mendeteksi kegagalan akibat kunci sementara yang kedaluwarsa. Jika Anda telah mengonfigurasi peringatan pemantauan untuk jenis kegagalan ini, Anda akan menerima pesan peringatan.

Error sinkronisasi Oracle: logminer doesn't init, send HeartbeatRecord

Saat tugas sinkronisasi real-time Oracle diinisialisasi untuk menemukan Offset sinkronisasi yang sesuai, tugas tersebut perlu memuat log arsip sebelumnya. Jika log arsip tersebut besar, fase inisialisasi ini dapat memakan waktu 3 hingga 5 menit untuk diselesaikan.