Tugas migrasi data penuh atau sinkronisasi dapat macet atau melambat karena berbagai alasan. Panduan ini membantu Anda mengidentifikasi penyebabnya dan memulihkan tugas agar kembali berjalan.
Penyebab paling umum adalah sumber daya yang tidak mencukupi pada database sumber atau tujuan. Mulailah investigasi dari sini.
Kemungkinan penyebab
Database sumber memiliki volume data yang besar, atau tabel yang dimigrasikan tidak memiliki primary key.
Beberapa tugas DTS berjalan secara bersamaan terhadap database sumber yang sama.
DTS tidak dapat terhubung ke database sumber atau tujuan karena pembatasan daftar putih, izin yang tidak mencukupi, atau kredensial yang tidak valid.
Database sumber atau tujuan mengalami bottleneck performa, atau bandwidth jaringan tidak mencukupi.
Data tidak dapat ditulis ke database tujuan karena database dalam mode read-only, disk penuh, atau deadlock menghalangi proses penulisan.
Pemecahan masalah
Periksa database sumber
Perkirakan waktu migrasi
Sebelum menganggap terjadi masalah, perkirakan durasi normal migrasi:
Periksa volume data objek yang akan dimigrasikan.
Jalankan batch kecil terlebih dahulu—misalnya, migrasikan subset 10 GB—lalu gunakan hasilnya untuk memproyeksikan total waktu migrasi.
Periksa tugas konkuren
Beberapa tugas DTS yang berjalan bersamaan bersaing untuk sumber daya database sumber yang sama, sehingga dapat menyebabkan kekurangan sementara sumber daya. Jalankan tugas pada jendela waktu yang berbeda untuk menghindari kontensi.
Verifikasi kredensial
Konfirmasi bahwa DTS dapat terhubung ke database sumber menggunakan username dan password yang dikonfigurasi. Uji konektivitas dari host jarak jauh:
mysql -h<IP address or domain name of source database> -P<Port number of source database> -u<Username> -p<Password>Periksa pengaturan daftar putih
Jika sumbernya adalah Database yang dikelola sendiri, pastikan Blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database. Untuk petunjuknya, lihat Whitelist DTS IP ranges for your user-created database.
Periksa keberadaan primary key
Tabel tanpa primary key atau unique index dapat memperlambat migrasi data penuh secara signifikan. DTS juga berpotensi menulis catatan duplikat ke database tujuan. Periksa apakah tabel besar memiliki primary key:
show create table <Database name>.<Table name>;Periksa database tujuan
Verifikasi kredensial
Konfirmasi bahwa DTS dapat terhubung ke database tujuan menggunakan username dan password yang dikonfigurasi. Uji konektivitas dari host jarak jauh:
mysql -h<IP address or domain name of destination database> -P<Port number of destination database> -u<Username> -p<Password>Periksa pengaturan daftar putih
Jika tujuannya adalah Database yang dikelola sendiri, pastikan Blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database. Untuk petunjuknya, lihat Whitelist DTS IP ranges for your user-created database.
Periksa status read-only
Jika database tujuan dalam mode read-only, DTS tidak dapat menulis data ke dalamnya. Untuk mengecek status read-only database MySQL:
show global variables like '%read_only%';Jika read_only dikembalikan dan super_read_only bernilai ON, database berada dalam mode read-only. Untuk mengubahnya menjadi read/write:
unlock tables;
set global read_only=0;read_only=1atauTRUEberarti read-only;read_only=0atauFALSEberarti read/write. Untuk detailnya, lihat dokumentasi MySQL.
Periksa ruang disk yang tersedia
Disk penuh pada database tujuan akan menghentikan semua proses penulisan. Untuk instans ApsaraDB RDS for MySQL, periksa penggunaan penyimpanan di Konsol ApsaraDB RDS. Untuk detailnya, lihat Troubleshoot insufficient storage issues on an ApsaraDB RDS for MySQL instance.
Periksa adanya bottleneck performa
Untuk instans ApsaraDB RDS for MySQL, lihat pemanfaatan CPU, Penggunaan memori, dan Beban I/O pada halaman Monitoring and Alerts di Konsol ApsaraDB RDS. Periksa juga apakah instans telah mencapai batas tipe-nya. Untuk detailnya, lihat View monitoring information dan Instance types for standard primary ApsaraDB RDS for MySQL instances (original x86 architecture).
Periksa adanya deadlock
Jika terjadi deadlock, DTS tidak dapat menulis data ke database tujuan. Untuk mendiagnosis dan mengatasi deadlock pada tujuan MySQL:
Periksa apakah ada tabel yang terkunci:
show OPEN TABLES where In_use > 0;Identifikasi tabel yang terkunci atau kueri yang lambat:
SHOW PROCESSLIST;Hentikan proses yang menghalangi:
KILL [CONNECTION | QUERY] thread_id
Periksa konektivitas jaringan
Gunakan perintah OS seperti ping dan telnet, atau alat pihak ketiga, untuk menguji konektivitas dan latensi jaringan antara DTS dengan database sumber atau tujuan. Jika bandwidth merupakan faktor pembatas, tingkatkan bandwidth jaringan.
Langkah selanjutnya
Jika tugas Anda mengalami latensi selama migrasi data inkremental atau sinkronisasi setelah fase data penuh selesai, lihat What do I do if latency occurs during incremental data migration or synchronization?