All Products
Search
Document Center

Data Transmission Service:Apa yang dapat saya lakukan jika terjadi kehilangan data di database tujuan akibat operasi DDL Online yang dilakukan dalam task penggabungan tabel?

Last Updated:Mar 29, 2026

Menjalankan operasi bahasa definisi data (DDL) Online pada database sumber saat task penggabungan tabel sedang berjalan dapat menyebabkan kehilangan data di database tujuan. Untuk mencegah hal ini, Anda dapat mengecualikan operasi DDL Online dari konfigurasi task atau menghindari menjalankannya pada database sumber selama task berlangsung.

Cara kerja

Task penggabungan tabel mengonsolidasikan tabel dari beberapa database sumber dan menyinkronkan atau memigrasikan datanya ke satu tabel tujuan.

Sebagai contoh, jika Anda mengonfigurasi task untuk menggabungkan tabel dari dua database ApsaraDB RDS for MySQL (Database 1 dan Database 2) ke database tujuan, DTS memetakan data sebagai berikut:

  • Tabel A1 (Database 1) → Tabel A (tujuan)

  • Tabel A2 (Database 2) → Tabel A (tujuan)

Jika Tabel A1 memiliki 100 catatan dan Tabel A2 memiliki 200 catatan, Tabel A di database tujuan seharusnya berisi 300 catatan setelah penggabungan.

Mengapa operasi DDL Online menyebabkan kehilangan data

Operasi DDL Online bekerja dengan membuat tabel temporary, menerapkan perubahan skema ke tabel tersebut, lalu menggunakan RENAME TABLE untuk menukar posisi tabel temporary tersebut. Urutan operasinya adalah:

  1. Buat tabel temporary:

    CREATE TABLE tmp_table_table LIKE table_name
  2. Ubah skema tabel temporary:

    ALTER TABLE tmp_table_table XXXX
  3. Salin data historis ke tabel temporary:

    INSERT IGNORE INTO tmp_table_table (SELECT %s FROM table_name FORCE INDEX (%s) WHERE xxx
  4. Sinkronkan data inkremental melalui log biner:

    UPDATA/INSERT/DELETE tmp_table_name
  5. Pindahkan beban kerja ke tabel temporary:

    RENAME TABLE table_name to old_tmp_table_table, tmp_table_name to table_name

Setelah operasi-operasi ini dilakukan, data Tabel A1 di Database 1 menimpa data Tabel A di database tujuan. Akibatnya, data Tabel A2 di Database 2 hilang.

Catatan Untuk informasi lebih lanjut tentang operasi DDL Online, lihat Perform lock-free DDL operations.

Solusi

Untuk menghindari kehilangan data, gunakan salah satu pendekatan berikut:

PendekatanDeskripsi
Kecualikan DDL Online dari taskSaat mengonfigurasi task sinkronisasi data, jangan pilih opsi untuk menyinkronkan operasi DDL Online.
Hindari DDL Online pada database sumberJangan menjalankan operasi DDL Online pada database sumber apa pun selama task penggabungan tabel berjalan.