Memecahkan masalah tugas replikasi

Halaman ini menunjukkan cara menyelesaikan masalah terkait tugas replikasi Cloud Data Fusion.

Pengecualian: Tidak dapat membuat bucket staging

Jika konvensi penamaan bucket dilanggar, tugas replikasi mungkin akan gagal dengan error berikut di log pipeline:

Caused by: java.io.IOException: Unable to create staging bucket
BUCKET_NAME in project PROJECT_NAME.

Anda juga dapat memberikan nama bucket staging. Jika tidak diberikan, tugas replikasi akan membuatnya dengan menambahkan akhiran ke nama tugas. Dalam beberapa kasus, Anda dapat menggunakan nama pekerjaan yang lebih pendek untuk menyelesaikan masalah ini. Untuk mengetahui informasi selengkapnya, lihat Nama bucket.

Nilai CONVERT_TO_NULL MySQL tidak ditetapkan

Jika Anda menggunakan MySQL Connector/J versi sebelumnya, seperti versi 5, tugas replikasi akan gagal dengan error berikut:

The connection property 'zeroDateTimeBehavior' only accepts values of the form:
'exception', 'round' or 'convertToNull'. The value 'CONVERT_TO_NULL' is not in
this set.

Nilai yang diterima untuk zeroDateTimeBehavior tidak kompatibel dengan berbagai versi MySQL Connector/J.

Untuk mengatasi masalah ini, gunakan MySQL Connector/J versi 8 atau yang lebih baru.

Database replikasi dan Always On SQL Server

Sumber Microsoft SQL Server dapat menangkap perubahan dari replika hanya baca Always On. Untuk penyiapan ini, Anda harus meneruskan argumen runtime source.connector.database.applicationIntent=ReadOnly ke tugas replikasi. Tanpa argumen runtime ini, tugas akan gagal dengan error berikut:

Producer failure
java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException:
Failed to update database "DATABASE_NAME" because the database is read-only.

Untuk mengatasi masalah ini, tetapkan source.connector.database.applicationIntent=ReadOnly sebagai argumen runtime. Tindakan ini secara internal menetapkan snapshot.isolation.mode ke snapshot.

Error replikasi pada cluster statis Dataproc

Saat Anda menjalankan tugas replikasi, koneksi SSL dari node cluster Dataproc mungkin gagal dengan error java.lang.NullPointerException atau Connection reset:

ERROR [SparkRunnerphase-1:i.c.c.i.a.r.ProgramControllerServiceAdapter@93] -
Spark program 'phase-1' failed with error: The driver could not establish a
secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "Connection reset ClientConnectionId:ID"

Error ini terjadi karena Penyedia SSL Conscrypt yang dikonfigurasi untuk digunakan dalam versi JDK yang diinstal di Dataproc.

Untuk mengatasi masalah ini, gunakan penyedia SSL default untuk Java JDK dengan menonaktifkan penyedia SSL Conscrypt. Untuk menonaktifkan penyedia SSL Conscrypt, tetapkan properti cluster berikut saat memulai cluster Dataproc:

--properties dataproc:dataproc.conscrypt.provider.enable=false

Replikasi untuk SQL Server tidak mereplikasi semua kolom untuk tabel yang diubah

Saat Anda mereplikasi data dari tabel di SQL Server, jika tabel sumber Replikasi memiliki kolom yang baru ditambahkan, kolom tersebut tidak otomatis ditambahkan ke tabel Change Data Capture (CDC). Anda harus menambahkannya secara manual ke tabel CDC yang mendasarinya.

Untuk menyelesaikan masalah ini, ikuti langkah berikut:

  1. Nonaktifkan instance CDC:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. Aktifkan kembali instance CDC:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. Buat tugas replikasi baru.

Untuk informasi selengkapnya, lihat Menangani perubahan pada tabel sumber.

Error peran dan izin

Masalah izin akun layanan Cloud Data Fusion

Saat menjalankan tugas replikasi menggunakan Oracle Database, pengambilan daftar tabel mungkin gagal dengan error berikut:

Error io.grpc.StatusRuntimeException: PERMISSION_DENIED: Permission
'datastream.streams.get' denied on 'projects/PROJECT_NAME/locations/REGION/streams/STREAM_NAME'

Saat Anda menjalankan tugas replikasi dengan Database Oracle, Cloud Data Fusion akan menggunakan layanan Datastream di backend. Untuk mendapatkan izin yang diperlukan untuk menggunakan layanan Datastream, minta administrator untuk memberi Anda peran IAM Datastream Admin (roles/datastream.admin) pada akun layanan Cloud Data Fusion. Untuk informasi selengkapnya, lihat Peran yang diperlukan.

Izin tidak diberikan untuk melihat Pengambilan Data Perubahan

Saat mereplikasi data dari SQL Server, Anda mungkin melihat error berikut di log pipeline:

No whitelisted table has enabled CDC, whitelisted table list does not contain any
table with CDC enabled or no table match the white/blacklist filter(s)

Masalah ini terjadi jika pengguna yang diberikan dalam properti koneksi sumber tidak memiliki izin untuk melihat Change Data Capture (CDC) untuk tabel replika. Hal ini dikontrol oleh parameter role_name saat mengaktifkan CDC di tabel, menggunakan sys.sp_cdc_enable_table.

Untuk mengetahui informasi selengkapnya tentang cara memberikan izin yang diperlukan untuk melihat CDC, lihat Mengaktifkan CDC pada tabel dan sys.sp_cdc_enable_table.

Masalah izin Jenis Buatan Pengguna

Jika pengguna database yang digunakan oleh tugas replikasi tidak memiliki izin pada Jenis yang Ditetapkan Pengguna (UDT), Anda mungkin melihat error berikut di log pipeline:

java.lang.IllegalArgumentException: The primary key cannot reference a non-existent
column'oid' in table TABLE_NAME

Dalam pesan error ini, kolom oid mungkin adalah UDT.

Untuk mengatasi masalah ini, berikan akses kepada pengguna dengan menjalankan perintah berikut dalam database:

GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER

Agen SQL Server tidak berjalan

Jika Agen Server SQL tidak berjalan, Anda mungkin melihat error berikut di log pipeline:

No maximum LSN recorded in the database; please ensure that the SQL Server Agent
is running [io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]

Untuk mengatasi masalah ini, jalankan Agen SQL Server. Untuk informasi selengkapnya, lihat dokumentasi berikut, bergantung pada Sistem Operasi yang Anda gunakan:

Versi pipeline Replikasi SQL Server bukan yang terbaru

Jika versi pipeline Replikasi SQL Server bukan yang terbaru, error berikut akan muncul di log pipeline:

Method io/cdap/delta/sqlserver/SqlServerDeltaSource.configure(Lio/cdap/delta/api/SourceConfigurer;) is abstract

Error ini terjadi jika versi plugin sumber sebelumnya berfungsi dengan versi aplikasi delta yang relatif baru. Dalam kasus semacam ini, antarmuka baru yang ditentukan oleh aplikasi delta versi baru tidak diterapkan.

Untuk menyelesaikan masalah ini, ikuti langkah berikut:

  1. Ambil informasi tentang tugas replikasi dengan mengirimkan permintaan HTTP GET:

    GET v3/namespaces/NAMESPACE_ID/apps/REPLICATOR_NAME
    

    Untuk mengetahui informasi selengkapnya, baca Melihat detail tugas replikasi.

  2. Periksa versi plugin dan aplikasi delta yang digunakan oleh tugas replikasi.

  3. Ambil daftar artefak yang tersedia dengan mengirimkan permintaan HTTP GET:

    GET /v3/namespaces/NAMESPACE_ID/artifacts
    

    Untuk mengetahui informasi selengkapnya, lihat Menampilkan Daftar Artefak yang Tersedia.

Cluster Dataproc statis dengan cakupan autentikasi yang tidak memadai

Jika menggunakan cluster Dataproc statis yang dibuat dengan cakupan autentikasi yang tidak memadai, Anda mungkin akan melihat error berikut di log pipeline:

ERROR [worker-DeltaWorker-0:i.c.c.i.a.r.ProgramControllerServiceAdapter@92] - Worker
Program 'DeltaWorker' failed.
Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had
insufficient authentication scopes.

Untuk mengatasi masalah ini, buat cluster Dataproc statis baru dan aktifkan cakupan cloud-platform untuk cluster ini dalam project yang sama.