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 gagal dengan error berikut di log pipeline:

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

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

Nilai CONVERT_TO_NULL MySQL tidak ada dalam set

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 antara MySQL Connector/J versi yang berbeda.

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

Replikasi dan database SQL Server Always On

Sumber Microsoft SQL Server dapat merekam 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 di 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 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, tabel tersebut tidak akan 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 berikut terjadi dengan kontrol akses.

Masalah izin akun layanan Cloud Data Fusion

Saat menjalankan tugas replikasi menggunakan Database Oracle, 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 menggunakan layanan Datastream di backend. Untuk mendapatkan izin yang diperlukan guna menggunakan layanan Datastream, minta administrator untuk memberi Anda peran IAM Datastream Admin (roles/datastream.admin) di akun layanan Cloud Data Fusion.

Izin tidak diberikan untuk melihat Change Data Capture

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 yang direplikasi. 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 yang Ditentukan 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 berupa UDT.

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

GRANT EXECUTE ON TYPE::UDT_NAME to YOUR_USER

Agen SQL Server tidak berjalan

Jika Agen SQL Server 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, mulai 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 versi 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 plugin sumber versi sebelumnya berfungsi dengan aplikasi delta versi yang relatif baru. Dalam kasus tersebut, 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 informasi selengkapnya, lihat 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 Mencantumkan 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 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.