Ketika suatu trigger di database sumber memperbarui tabel yang sedang disinkronkan atau dimigrasikan, DTS dapat menyalin trigger tersebut ke database tujuan sebelum fase data inkremental, sehingga berpotensi menyebabkan ketidakkonsistenan data antara sumber dan tujuan. Topik ini menjelaskan cara menangani trigger selama tugas DTS untuk mencegah masalah tersebut.
Prasyarat
Sebelum memulai, pastikan bahwa:
Jenis database sumber dan tujuan didukung. Lihat bagian Jenis database yang didukung.
Sinkronisasi/migrasi skema dan sinkronisasi/migrasi data inkremental keduanya dipilih saat Anda mengonfigurasi instans DTS:
Migrasi data: Pilih Schema Migration dan Incremental Data Migration untuk Migration Types.
Sinkronisasi data: Incremental Data Synchronization dipilih secara default untuk Synchronization Types. Pilih juga Schema Synchronization.
Source Objects diatur ke seluruh database atau skema.
Jenis database yang didukung
| Sumber | Tujuan | Perilaku migrasi otomatis |
|---|---|---|
| MySQL, PolarDB for MySQL, atau ApsaraDB RDS for MariaDB | MySQL, PolarDB for MySQL, atau ApsaraDB RDS for MariaDB | DTS menambahkan pernyataan kontrol trigger ke setiap trigger di database tujuan. Pernyataan kontrol ini mencegah trigger dieksekusi selama fase penulisan DTS. Lihat Cara kerja migrasi otomatis. |
| SQL Server | SQL Server | DTS menyalin trigger ke database tujuan. Penting Jika perubahan inkremental di database sumber menyebabkan trigger di kedua database (sumber dan tujuan) memperbarui data secara bersamaan, data kotor (dirty data) dapat muncul di database tujuan. Gunakan Manual Migration untuk sumber SQL Server dan lakukan langkah-langkah berikutnya. |
Jika database tujuan adalah PostgreSQL, PolarDB for PostgreSQL, atau PolarDB for PostgreSQL (Compatible with Oracle), DTS mencegah ketidakkonsistenan data secara otomatis:
Jika instans DTS menggunakan akun database tujuan dengan hak istimewa atau super-istimewa, DTS menonaktifkan trigger pada tingkat sesi setelah trigger disinkronkan atau dimigrasikan.
Jika akun tidak memiliki izin yang cukup, atur parametersession_replication_rolekereplicadi database tujuan selama durasi tugas. Untuk jenis database lain yang berisi trigger, lihat Konfigurasi tugas sinkronisasi data untuk database sumber yang berisi trigger.
Pilih metode migrasi
Pada langkah Configure Objects dalam penyiapan instans DTS, atur Method to Migrate Triggers in Source Database.
Jika Anda menggunakan versi konsol Data Management (DMS) sebelumnya, opsi ini muncul pada langkah Configure Objects and Advanced Settings.
| Metode | Apa yang dilakukan DTS | Kapan digunakan |
|---|---|---|
| Automatically Migrate | Menyalin trigger ke database tujuan dengan menambahkan pernyataan kontrol. Tidak diperlukan tindakan tambahan. | Sumber keluarga MySQL di mana mekanisme kontrol trigger sudah mencukupi. |
| Manual Migration | Melewati trigger selama migrasi skema dan menghasilkan peringatan object ignored due to incremental migration is enabled. Anda memigrasikan trigger secara manual sebelum sinkronisasi/migrasi data inkremental selesai. | Sumber SQL Server. |
Cara kerja migrasi otomatis
Ketika Anda memilih Automatically Migrate, DTS menyalin kode trigger dari database sumber, membungkus isi trigger dengan pernyataan kontrol, lalu menulis trigger yang telah dimodifikasi ke database tujuan.
Trigger database sumber:
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW
BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
END;Trigger database tujuan (setelah dimodifikasi oleh DTS):
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW
BEGIN
IF (SELECT @`__#aliyun_dts_writer#__) IS NULL THEN
INSERT INTO test2 SET a2 = NEW.a1;
END IF;
END;Migrasi trigger secara manual
Langkah-langkah untuk memigrasikan trigger secara manual sama dengan langkah sinkronisasi manual. Contoh berikut menunjukkan sinkronisasi manual.
Masuk ke Konsol Data Management (DMS). Di bilah navigasi atas, klik Data + AI. Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Anda juga dapat langsung menuju ke halaman Tugas Sinkronisasi Data di konsol DTS baru. Untuk opsi tata letak konsol, lihat Simple mode dan Sesuaikan tata letak dan gaya konsol DMS.
Di sisi kanan Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi data berada.
Di konsol DTS baru, pilih wilayah dari bilah navigasi atas.
Temukan instans DTS dan klik ID instans tersebut.
(Opsional) Di panel kiri, klik Task Management.
Di bagian Progress, klik modul Incremental Write.
Di tab Basic Information, klik Migrate Triggers.
Jika Migrate Triggers tidak ditampilkan, berarti tidak ada trigger yang ditemukan selama sinkronisasi atau migrasi skema. Untuk memverifikasi hasil sinkronisasi trigger, periksa modul Schema Migration3 di bagian Progress.
FAQ
Bagaimana cara memilih jenis sinkronisasi/migrasi skema dan inkremental saat mengonfigurasi instans DTS?
Untuk tugas sinkronisasi data, pilih Schema Synchronization dan Incremental Data Synchronization untuk Synchronization Types. Untuk tugas migrasi data, pilih Schema Migration dan Incremental Data Migration untuk Migration Types.
Bagaimana cara menyelesaikan sinkronisasi atau migrasi data inkremental?
Hentikan, reset, atau rilis instans DTS. Untuk detailnya, lihat Hentikan instans DTS, Reset instans DTS, dan Rilis instans DTS.