Topik ini menjawab beberapa pertanyaan umum terkait sinkronisasi waktu nyata.
Ikhtisar
Kategori | Pertanyaan atau Masalah |
Konfigurasi Tugas Sinkronisasi Waktu Nyata |
|
Kesalahan untuk Sinkronisasi Waktu Nyata Data dari MySQL | |
Kesalahan untuk Sinkronisasi Waktu Nyata dari Oracle, PolarDB, dan MySQL | |
Pesan Kesalahan |
|
Konfigurasi tugas sinkronisasi waktu nyata
Jenis sumber data apa yang mendukung sinkronisasi waktu nyata?
Untuk informasi tentang jenis sumber data yang mendukung sinkronisasi waktu nyata, lihat Jenis Sumber Data yang Mendukung Sinkronisasi Waktu Nyata.
Mengapa tugas sinkronisasi waktu nyata saya memiliki latensi tinggi?
Jika sebagian data yang disinkronkan oleh tugas sinkronisasi waktu nyata Anda tidak dapat di-query, tugas tersebut mungkin memiliki latensi. Anda dapat memeriksa apakah nilai yang menunjukkan latency terlalu besar di halaman Node Komputasi Waktu Nyata di Operation Center. Untuk informasi lebih lanjut, lihat Solusi untuk Latensi pada Node Sinkronisasi Waktu Nyata.
Tabel berikut menjelaskan kemungkinan penyebab latensi tinggi.
Deskripsi Masalah | Penyebab | Solusi |
Latensi tinggi terjadi pada sumber. | Banyak perubahan data dilakukan pada sumber. Jika lonjakan latensi terjadi, jumlah data di sumber meningkat pada titik waktu tertentu. | Jika sumber berisi sejumlah besar data dan latensi sinkronisasi data tinggi disebabkan oleh pembaruan data yang sering di sumber, Anda dapat menggunakan salah satu solusi berikut untuk menyelesaikan masalah:
|
Offset dari mana data mulai disinkronkan jauh lebih awal daripada waktu saat ini. | Jika offset dari mana data mulai disinkronkan jauh lebih awal daripada waktu saat ini, waktu yang diperpanjang diperlukan untuk membaca data historis sebelum data dapat dibaca secara real-time. | |
Latensi tinggi terjadi pada tujuan. | Kinerja tujuan buruk, atau beban pada tujuan tinggi. | Jika beban pada tujuan tinggi, Anda harus menghubungi administrator database terkait. Masalah ini tidak dapat diselesaikan hanya dengan menyesuaikan jumlah thread paralel. |
Latensi tinggi terjadi pada sumber dan tujuan. | Data disinkronkan melalui Internet. Koneksi jaringan yang buruk menyebabkan latensi tugas sinkronisasi data. | Jika Anda menyinkronkan data melalui Internet, ketepatan waktu sinkronisasi data tidak dapat dijamin. Kami merekomendasikan agar Anda membuat koneksi jaringan antara grup sumber daya yang Anda gunakan dan sumber data Anda dan menyinkronkan data melalui jaringan internal. Catatan Sinkronisasi waktu nyata melalui Internet memiliki kekurangan berikut: Paket data mungkin hilang dan kinerja sinkronisasi data mungkin terpengaruh karena koneksi jaringan yang tidak stabil. Keamanan data rendah. |
Jika kinerja sumber dan tujuan memiliki perbedaan besar atau beban pada sumber atau tujuan tinggi, latensi sinkronisasi data mungkin terlalu tinggi. | Jika beban pada tujuan tinggi, Anda harus menghubungi administrator database terkait. Masalah ini tidak dapat diselesaikan hanya dengan menyesuaikan jumlah thread paralel. |
Mengapa Internet tidak direkomendasikan untuk sinkronisasi waktu nyata?
Sinkronisasi waktu nyata melalui Internet memiliki kekurangan berikut:
Paket data mungkin hilang, dan kinerja sinkronisasi data mungkin terpengaruh karena koneksi jaringan yang tidak stabil.
Keamanan sinkronisasi data rendah.
Operasi apa yang dilakukan DataWorks pada catatan data yang disinkronkan secara real-time?
Ketika Data Integration menyinkronkan data dari sumber data, seperti sumber data MySQL, Oracle, LogHub, atau PolarDB, ke sumber data DataHub atau Kafka secara real-time, Data Integration menambahkan lima bidang ke catatan data di tujuan. Bidang-bidang ini digunakan untuk operasi seperti manajemen metadata, pengurutan, dan deduplikasi. Untuk informasi lebih lanjut, lihat Bidang yang Digunakan untuk Sinkronisasi Waktu Nyata.
Bagaimana cara mengatasi pernyataan TRUNCATE selama sinkronisasi waktu nyata?
Sinkronisasi waktu nyata mendukung pernyataan TRUNCATE. Pernyataan TRUNCATE berlaku ketika data penuh dan data tambahan digabungkan. Jika Anda tidak menjalankan pernyataan TRUNCATE, data berlebih mungkin dihasilkan selama sinkronisasi data.
Bagaimana cara meningkatkan kecepatan dan kinerja sinkronisasi waktu nyata?
Jika data ditulis ke tujuan dengan kecepatan rendah, Anda dapat meningkatkan jumlah thread paralel untuktujuan dan memodifikasi nilai parameter Java Virtual Machine (JVM). Nilai parameter JVM hanya memengaruhi frekuensi pengumpulan sampah heap penuh (Full GC). Ukuran memori heap JVM yang besar mengurangi frekuensi Full GC dan meningkatkan kinerja sinkronisasi waktu nyata.

Apakah saya dapat langsung menjalankan tugas sinkronisasi waktu nyata di antarmuka pengguna tanpa kode?
Anda tidak dapat langsung menjalankan tugas sinkronisasi waktu nyata di antarmuka pengguna tanpa kode (UI). Setelah Anda menyelesaikan konfigurasi tugas sinkronisasi waktu nyata, Anda harus mengirimkan dan menerapkan tugas tersebut dan menjalankan tugas di lingkungan produksi. Untuk informasi lebih lanjut, lihat O&M untuk Node Sinkronisasi Waktu Nyata.
Mengapa tugas sinkronisasi waktu nyata saya yang digunakan untuk menyinkronkan data dari MySQL melambat?
Salah satu alasan yang mungkin adalah log biner yang dihasilkan untuk sumber data MySQL bertambah. Fitur pencatatan biner hanya dapat diaktifkan pada level instance. Setelah Anda mengaktifkan fitur ini untuk sumber data MySQL, log biner dihasilkan untuk perubahan yang dibuat pada semua tabel di sumber data MySQL. Akibatnya, log biner yang dihasilkan untuk perubahan yang dibuat pada tabel yang tidak ditentukan dalam tugas sinkronisasi waktu nyata memperlambat jalannya tugas.
Mengapa ada perbedaan antara jumlah sumber daya yang dikonsumsi saat saya menyinkronkan data dari satu database dan jumlah sumber daya yang dikonsumsi saat saya menyinkronkan data dari beberapa database?
Ketika Anda menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari dua atau lebih database, tugas sinkronisasi memasuki mode sinkronisasi seluruh instance. Dalam hal ini, jumlah sumber daya yang dikonsumsi oleh tugas sinkronisasi lebih besar daripada jumlah sumber daya yang dikonsumsi oleh dua tugas sinkronisasi waktu nyata yang digunakan untuk masing-masing menyinkronkan data dari satu database.
Jenis kebijakan pemrosesan DDL apa yang didukung oleh tugas sinkronisasi waktu nyata?
Kebijakan Pemrosesan DDL yang Didukung
Normal | Mengabaikan | Peringatan | Pelaporan kesalahan |
Pesan DDL dikirimkan secara normal ke tujuan dan diproses oleh tujuan. Kebijakan pemrosesan mungkin bervariasi berdasarkan jenis tujuan. | Pesan DDL dibuang, dan tujuan tidak melakukan operasi pemrosesan. | Pesan DDL dibuang, dan notifikasi peringatan dikirim. Catatan Jika tugas sinkronisasi waktu nyata Anda tidak dikonfigurasi dengan aturan peringatan terkait, tidak ada notifikasi peringatan yang dikirim. | Status tugas sinkronisasi waktu nyata diatur ke gagal, dan tugas berhenti berjalan. Catatan Jika tugas sinkronisasi waktu nyata Anda dikonfigurasi dengan aturan peringatan terkait, notifikasi peringatan dikirim. |
Jenis Operasi DDL
Buat tabel |
|
Hapus tabel |
|
Tambahkan bidang |
|
Hapus bidang | Jenis operasi DDL ini tidak mendukung kebijakan pemrosesan normal. Anda hanya dapat mengonfigurasi kebijakan mengabaikan, peringatan, atau pelaporan kesalahan untuk jenis operasi DDL ini. |
Ganti nama tabel | Jenis operasi DDL ini tidak mendukung kebijakan pemrosesan normal. Anda hanya dapat mengonfigurasi kebijakan mengabaikan, peringatan, atau pelaporan kesalahan untuk jenis operasi DDL ini. |
Ganti nama bidang | Jenis operasi DDL ini tidak mendukung kebijakan pemrosesan normal. Anda hanya dapat mengonfigurasi kebijakan mengabaikan, peringatan, atau pelaporan kesalahan untuk jenis operasi DDL ini. |
Ubah tipe bidang |
|
Kosongkan tabel |
|
Apa saja tindakan pencegahan yang harus saya praktikkan pada sinkronisasi data dari tabel sumber tempat operasi DDL atau DML dilakukan?
Jika bidang baru ditambahkan ke tabel sumber, tugas sinkronisasi waktu nyata terkait bekerja dengan cara berikut:
Jika bidang bernama DEFAULT VALUE ditambahkan ke tabel sumber, bidang tersebut juga ditambahkan ke tabel tujuan terkait setelah tugas sinkronisasi waktu nyata dijalankan. Nilai bidang di tabel tujuan adalah NULL. Jika data ditulis ke bidang di tabel sumber dalam operasi selanjutnya, tugas sinkronisasi waktu nyata menyinkronkan data ke bidang di tabel tujuan.
Jika bidang bernama VIRTUAL ditambahkan ke tabel sumber, bidang tersebut juga ditambahkan ke tabel tujuan terkait setelah tugas sinkronisasi waktu nyata dijalankan. Nilai bidang di tabel tujuan adalah NULL. Jika data ditulis ke bidang di tabel sumber dalam operasi selanjutnya, tugas sinkronisasi waktu nyata menyinkronkan data ke bidang di tabel tujuan.
Jika Anda menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari sumber data MySQL atau PolarDB untuk MySQL dan Anda ingin menambahkan bidang ke tabel sumber di sumber data, kami merekomendasikan agar Anda menambahkan bidang ke akhir tabel sumber daripada ke tengah tabel sumber. Jika bidang harus ditambahkan ke tengah tabel sumber, Anda harus memperhatikan batasan berikut:
Untuk tugas sinkronisasi yang digunakan untuk menyinkronkan data penuh dan tambahan, jangan tambahkan bidang ke tengah tabel sumber selama sinkronisasi data penuh. Jika tidak, pengecualian data terjadi selama sinkronisasi data tambahan secara real-time.
Selama sinkronisasi data tambahan secara real-time, jika Anda ingin menyetel ulang offset dari mana Anda mulai menyinkronkan data tambahan dan Anda ingin melakukan operasi DDL untuk menambahkan bidang ke tengah tabel sumber, Anda harus memastikan bahwa offset baru lebih lambat daripada waktu ketika Anda menambahkan bidang ke tengah tabel sumber. Jika tidak, pengecualian data terjadi selama sinkronisasi data tambahan secara real-time.
Jika pengecualian data terjadi, Anda dapat melakukan inisialisasi data lagi untuk mengembalikan data ke keadaan normal. Anda hanya perlu menghapus tabel ke tengah yang Anda tambahkan bidang dan melakukan inisialisasi data. Anda tidak perlu menginisialisasi data di semua tabel.
Apakah sistem mempertahankan informasi tabel sumber, seperti properti not-null dan nilai default bidang tabel sumber, dalam tabel tujuan yang dipetakan yang dibuat secara otomatis?
Mengapa tugas sinkronisasi waktu nyata saya yang digunakan untuk menyinkronkan data dari PostgreSQL memiliki latensi tinggi setelah failover terjadi pada tugas tersebut?
Latensi terjadi karena karakteristik database PostgreSQL. Jika latensi memengaruhi bisnis Anda, Anda dapat menghentikan tugas sinkronisasi waktu nyata dan kemudian memulai ulang tugas sinkronisasi waktu nyata untuk menyinkronkan data penuh dan tambahan dari PostgreSQL.
Bagaimana cara menjalankan tugas sinkronisasi waktu nyata yang ada untuk melakukan sinkronisasi penuh?
Anda dapat menemukan tugas sinkronisasi waktu nyata di bagian Tugas halaman Tugas Sinkronisasi di Data Integration, klik ikon Lainnya di kolom Operasi, dan kemudian pilih Jalankan Ulang untuk menjalankan ulang tugas sinkronisasi.
Kesalahan untuk sinkronisasi waktu nyata data dari MySQL
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari MySQL, data dapat dibaca pada awalnya tetapi tidak dapat dibaca setelah periode tertentu. Apa yang harus saya lakukan?
Jalankan perintah berikut di database MySQL terkait untuk melihat file log biner yang mencatat operasi penulisan data di database:
show master statusCari
journalName=mysql-bin.xx,position=xxdi file log biner database MySQL untuk memeriksa apakah file log biner berisi catatan data tentang offset yang ditentukan oleh parameter posisi. Misalnya, Anda dapat mencari journalName=mysql-bin.000001,position=50.Hubungi administrator database jika data sedang ditulis ke database MySQL tetapi tidak ada operasi penulisan data yang dicatat dalam log biner.
Kesalahan untuk sinkronisasi waktu nyata dari Oracle, PolarDB, dan MySQL
Mengapa kesalahan berulang kali dilaporkan ketika node sinkronisasi waktu nyata dijalankan untuk menyinkronkan data dari Oracle, PolarDB, atau MySQL?
Deskripsi Masalah: Ketika tugas sinkronisasi waktu nyata dijalankan untuk menyinkronkan data dari Oracle, PolarDB, atau MySQL, kesalahan berulang kali dilaporkan.
Secara default, jika tugas sinkronisasi waktu nyata dijalankan untuk menyinkronkan data dari sumber data Oracle, PolarDB, atau MySQL, tujuan terkait tidak mendukung sinkronisasi perubahan data yang dihasilkan oleh operasi DDL yang dilakukan pada sumber. Jika perubahan data yang dihasilkan oleh operasi DDL selain pembuatan tabel di sumber disinkronkan, sistem melaporkan kesalahan untuk tugas sinkronisasi waktu nyata dan node gagal. Dalam skenario unggahan yang dapat dilanjutkan, situasi berikut mungkin ada: Tidak ada operasi DDL yang dilakukan di sumber, tetapi sistem masih melaporkan kesalahan untuk tugas sinkronisasi waktu nyata.
CatatanUntuk mencegah hilangnya data atau ketidakteraturan dalam periode waktu tertentu, kami merekomendasikan agar Anda tidak menggunakan perintah rename untuk menukar nama satu kolom dengan nama kolom lain. Misalnya, jika Anda menggunakan perintah rename untuk menukar nama Kolom A dan Kolom B, hilangnya data atau ketidakteraturan mungkin terjadi.
Penyebab: Sinkronisasi waktu nyata mendukung unggahan yang dapat dilanjutkan. Untuk memastikan integritas data, setelah tugas sinkronisasi waktu nyata dimulai, tugas sinkronisasi mungkin membaca kembali perubahan data yang dihasilkan oleh operasi DDL sebelumnya. Akibatnya, kesalahan dilaporkan kembali.
Solusi:
Jika perubahan data dihasilkan oleh operasi DDL di sumber, secara manual buat perubahan yang sama di tujuan.
Mulai tugas sinkronisasi waktu nyata dan ubah aturan pemrosesan untuk pesan DDL dari pelaporan kesalahan menjadi mengabaikan.
CatatanDalam skenario unggahan yang dapat dilanjutkan, tugas sinkronisasi waktu nyata juga berlangganan ke acara DDL. Untuk memastikan bahwa tugas sinkronisasi dapat berjalan sesuai harapan, Anda harus sementara mengubah aturan pemrosesan untuk pesan DDL dari pelaporan kesalahan menjadi mengabaikan.
Hentikan tugas sinkronisasi waktu nyata, ubah aturan pemrosesan untuk pesan DDL dari mengabaikan kembali ke pelaporan kesalahan, dan kemudian mulai ulang tugas sinkronisasi waktu nyata.
Pesan kesalahan
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari Kafka, pesan kesalahan berikut dikembalikan: Startup mode for the consumer set to timestampOffset, but no begin timestamp was specified. Apa yang harus saya lakukan?
Tentukan offset dari mana Anda ingin menyinkronkan data.
Data Integration memungkinkan Anda menyetel ulang offset untuk tugas sinkronisasi untuk menentukan posisi awal sinkronisasi data. Jika Anda ingin menjalankan tugas sinkronisasi Anda untuk mulai menyinkronkan data dari titik waktu tertentu atau posisi data tertentu lagi, Anda dapat menyetel ulang offset untuk tugas sinkronisasi. Misalnya, jika kesalahan terjadi atau beberapa data perlu disinkronkan lagi selama sinkronisasi data, Anda dapat menyetel ulang offset untuk tugas sinkronisasi terkait untuk menyinkronkan data dari posisi tertentu lagi. Ini memastikan konsistensi dan integritas data.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari MySQL, pesan kesalahan berikut dikembalikan: Cannot replicate because the master purged required binary logs. Apa yang harus saya lakukan?
Jika pesan kesalahan Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup dikembalikan, Data Integration mungkin gagal menemukan log biner yang dihasilkan untuk offset dari mana Anda ingin menyinkronkan data. Anda harus memeriksa durasi retensi log biner sumber data MySQL Anda dan menentukan offset dalam durasi retensi sebelum Anda memulai tugas sinkronisasi Anda.
Jika Data Integration tidak dapat menemukan log biner, Anda dapat menyetel ulang offset ke waktu saat ini.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari MySQL, pesan kesalahan MySQLBinlogReaderException dikembalikan. Apa yang harus saya lakukan?
Jika pesan kesalahan berikut dikembalikan: 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, fitur pencatatan biner dinonaktifkan untuk instance sekunder ApsaraDB RDS untuk MySQL. Jika Anda ingin menyinkronkan data dari instance sekunder ApsaraDB RDS untuk MySQL, Anda harus mengaktifkan fitur ini untuk instance tersebut. Untuk mengaktifkan fitur ini, hubungi administrator database terkait.
Untuk informasi lebih lanjut, lihat langkah Aktifkan Fitur Pencatatan Biner dalam topik Konfigurasikan Sumber Data untuk Sinkronisasi Data dari MySQL.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari MySQL, pesan kesalahan yang berisi show master status' has an error! dikembalikan. Apa yang harus saya lakukan?
Jika pesan kesalahan rinci adalah 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 yang Anda tentukan ketika menambahkan sumber data MySQL ke DataWorks tidak diberikan izin pada database MySQL terkait.
Akun harus diberikan izin SELECT, REPLICATION SLAVE, dan REPLICATION CLIENT pada database MySQL. Untuk informasi lebih lanjut tentang cara memberikan izin yang diperlukan pada akun untuk database, lihat Buat Akun dan Berikan Izin yang Diperlukan ke Akun.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari MySQL, pesan kesalahan berikut dikembalikan: parse.exception.PositionNotFoundException: can't find start position forxxx. Apa yang harus saya lakukan?
Data Integration tidak dapat menemukan log biner yang dihasilkan untuk offset dari mana Anda ingin menyinkronkan data. Anda harus menyetel ulang offset untuk node.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari Hologres, pesan kesalahan berikut dikembalikan: permission denied for database xxx. Apa yang harus saya lakukan?
Sebelum Anda menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data dari Hologres, Anda harus mendapatkan izin yang termasuk dalam grup pengguna <db>_admin di konsol Hologres untuk akun Anda. Setelah Anda mendapatkan izin tersebut, Anda dapat menggunakan akun Anda untuk membuat skema. Untuk informasi lebih lanjut, lihat Model Izin Hologres.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data ke MaxCompute, pesan kesalahan berikut dikembalikan: ODPS-0410051:invalid credentials-accessKeyid not found. Apa yang harus saya lakukan?
Jika Anda menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data ke MaxCompute dan pasangan AccessKey sementara digunakan untuk sinkronisasi data, pasangan AccessKey sementara tersebut valid hanya selama tujuh hari. Setelah periode tersebut berakhir, pasangan AccessKey sementara secara otomatis kedaluwarsa, dan tugas sinkronisasi waktu nyata gagal. Jika sistem mendeteksi bahwa pasangan AccessKey sementara telah kedaluwarsa, sistem akan memulai ulang tugas sinkronisasi waktu nyata. Jika aturan peringatan terkait dikonfigurasikan untuk tugas sinkronisasi, sistem melaporkan kesalahan.
Ketika saya menjalankan tugas sinkronisasi waktu nyata untuk menyinkronkan data ke Oracle, pesan kesalahan berikut dikembalikan: logminer doesn't init, send HeartbeatRecord. Apa yang harus saya lakukan?
Ketika tugas sinkronisasi waktu nyata yang digunakan untuk menyinkronkan data ke Oracle sedang diinisialisasi untuk menemukan offset yang sesuai untuk sinkronisasi data, node perlu memuat file log arsip sebelumnya. Jika ukuran file log arsip besar, mungkin diperlukan waktu 3 hingga 5 menit untuk menyelesaikan inisialisasi.