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:
Nonaktifkan instance CDC:
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
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
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:
- Windows: Memulai SQL Server Browser atau instance SQL Server Agent
- Linux: Mengaktifkan Agen SQL Server
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:
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.
Periksa versi plugin dan aplikasi delta yang digunakan oleh tugas replikasi.
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.