Bagikan melalui


Masalah Umum Dengan Migrasi Ke Azure Database for MySQL

Masalah umum yang terkait dengan migrasi ke Azure Database for MySQL dijelaskan di bagian berikut.

Masalah Migrasi Skema untuk target Server Fleksibel MySQL v8.0

  • Kesalahan: Migrasi ke Server Fleksibel MySQL dengan mesin versi 8.0.30 atau yang lebih tinggi dapat gagal ketika fitur untuk menghasilkan kunci primer yang tidak terlihat untuk tabel InnoDB diaktifkan (lihat MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.11 Generated Invisible Primary Keys). Kegagalan mungkin terjadi saat memigrasikan skema tabel dari sumber ke target, saat menerapkan perubahan selama fase replikasi migrasi online, saat mencoba kembali migrasi, atau saat bermigrasi ke target tempat skema telah dimigrasikan secara manual.

    Pesan kesalahan potensial:

    • "Kesalahan tidak diketahui."
    • "Gagal menghasilkan kunci primer yang tidak terlihat. Kolom kenaikan otomatis sudah ada."
    • "Kolom 'my_row_id' dalam tabel target 'nama tabel' dalam database 'database' tidak ada di tabel sumber."

    Batasan: Migrasi ke instans Server Fleksibel MySQL di mana sql_generate_invisible_primary_key diaktifkan tidak didukung oleh DMS.

    Solusi sementara: Atur parameter server sql_generate_invisible_primary_key untuk Server Fleksibel MySQL target ke NONAKTIF. Parameter server dapat ditemukan di panel Parameter server di bawah tab Semua untuk Server Fleksibel MySQL target. Selain itu, hilangkan database target dan mulai dari migrasi DMS agar tidak memiliki skema yang tidak cocok.

Mode SQL tidak kompatibel

Satu atau beberapa mode SQL yang tidak kompatibel dapat menyebabkan banyak kesalahan yang berbeda. Berikut ini adalah contoh kesalahan bersama dengan mode server yang harus dilihat jika kesalahan ini terjadi.

  • Kesalahan: Terjadi kesalahan saat menyiapkan tabel '{table}' di database '{database}' di server '{server}' untuk migrasi selama aktivitas '{activity}'. Akibatnya, tabel ini tidak akan dimigrasikan.

    Batasan: Kesalahan ini terjadi ketika salah satu mode SQL berikut diatur pada satu server tetapi bukan server lain.

    Solusi:

    • NO_ZERO_DATE

      Ketika nilai default untuk tanggal pada tabel atau data adalah 0000-00-00 pada sumbernya, dan server target memiliki set mode SQL NO_ZERO_DATE, skema dan/atau migrasi data gagal. Ada dua kemungkinan solusi. Yang pertama adalah mengubah nilai default kolom menjadi NULL atau tanggal yang valid. Opsi kedua adalah menghapus mode SQL NO_ZERO_DATE dari variabel mode SQL global.

    • NO_AUTO_CREATE_USER

      Saat menjalankan migrasi dari server sumber MySQL 5.7 ke server target MySQL 8.0 yang melakukan migrasi skema rutin, ia mengalami kesalahan jika mode SQL no_auto_create_user diatur pada server sumber MySQL 5.7.

Masalah Retensi Binlog

  • Kesalahan: Kesalahan fatal membaca binlog. Kesalahan ini dapat menunjukkan bahwa nama file binlog dan/atau posisi awal ditentukan dengan tidak benar.

    Batasan: Kesalahan ini terjadi jika periode retensi binlog terlalu pendek.

    Solusi sementara: Ada beberapa variabel yang dapat dikonfigurasi dalam kasus ini: binlog_expire_logs_seconds menentukan periode retensi dan penghapusan binlog dapat dicegah sama sekali dengan mengatur binlog_expire_logs_auto_purge nonaktif. MySQL 5.7 memiliki variabel sistem yang tidak digunakan lagi expire_logs_days.

Batas Waktu MendapatkanKunci Tabel

  • Kesalahan: Terjadi pengecualian saat mencoba memperoleh kunci baca pada server '{server}' untuk pembuatan tampilan yang konsisten.

    Batasan: Kesalahan ini terjadi ketika ada batas waktu saat mendapatkan kunci pada semua tabel saat konsistensi transaksional diaktifkan.

    Solusi sementara: Pastikan tabel yang dipilih tidak dikunci atau tidak ada transaksi yang berjalan lama.

Menulis Lebih dari 4 MB Data ke Azure Storage

  • Kesalahan: Isi permintaan terlalu besar dan melebihi batas maksimum yang diizinkan.

    Batasan: Kesalahan ini kemungkinan terjadi ketika ada terlalu banyak tabel untuk dimigrasikan (>10k). Ada batas 4-MB untuk setiap panggilan ke layanan Azure Storage.

    Solusi sementara: Hubungi dukungan dengan membuat permintaan dukungan dan kami dapat menyediakan skrip kustom untuk mengakses REST API kami secara langsung.

Masalah entri kunci duplikat

  • Kesalahan: Kesalahan sering merupakan gejala batas waktu, masalah jaringan, atau penskalaan target.

    Pesan kesalahan potensial: Batch tidak dapat ditulis ke tabel '{table}' karena kesalahan SQL yang dimunculkan oleh server target. Untuk konteks, batch berisi subset baris yang dikembalikan oleh kueri sumber berikut.

    Batasan: Kesalahan ini dapat disebabkan oleh waktu habis atau koneksi yang rusak ke target, yang mengakibatkan kunci primer duplikat. Ini mungkin juga terkait dengan beberapa migrasi ke target yang berjalan pada saat yang sama, atau pengguna memiliki beban kerja pengujian yang berjalan pada target saat migrasi berjalan. Selain itu, target mungkin memerlukan kunci primer agar unik, meskipun tidak diharuskan demikian pada sumbernya.

    Solusi sementara: Untuk mengatasi masalah ini, pastikan bahwa tidak ada migrasi duplikat yang berjalan dan bahwa kunci primer sumber unik. Jika kesalahan berlanjut, hubungi dukungan dengan membuat permintaan dukungan dan kami dapat menyediakan skrip kustom untuk mengakses REST API kami secara langsung.

Operasi yang Direplikasi mengalami kesalahan baris yang tidak cocok

  • Kesalahan: Migrasi Online Gagal Mereplikasi Jumlah Perubahan yang Diharapkan.

    Pesan kesalahan potensial: Terjadi kesalahan saat menerapkan rekaman ke server target yang dibaca dari log biner server sumber. Perubahan dimulai pada log biner '{mysql-bin.log}' dan posisi '{position}' dan berakhir pada log biner '{mysql-bin.log}' dan posisi '{position}'. Semua rekaman pada server sumber sebelum memposisikan '{position}' dalam log biner '{mysql-bin.log}' telah diterapkan ke target.

    Batasan: Pada sumber, ada pernyataan sisipkan dan hapus ke dalam tabel, dan penghapusannya oleh indeks unik yang jelas.

    Penanganan masalah: Sebaiknya migrasikan tabel secara manual.

Kesalahan data tabel terpotong

  • Kesalahan: Kolom enum memiliki nilai null dalam satu atau beberapa baris dan mode SQL target diatur ke ketat.

    Pesan kesalahan potensial: Batch tidak dapat ditulis ke tabel '{table}' karena kesalahan pemotongan data. Pastikan bahwa data tidak terlalu besar untuk jenis data kolom tabel MySQL. Jika jenis kolom adalah enum, pastikan Mode SQL tidak diatur sebagai TRADITIONAL, STRICT_TRANS_TABLES, atau STRICT_ALL_TABLES dan sama pada sumber dan target.

    Batasan: Kesalahan terjadi ketika data historis ditulis ke server sumber ketika mereka memiliki pengaturan tertentu, tetapi ketika diubah, data tidak dapat dipindahkan.

    Solusi sementara: Untuk mengatasi masalah ini, sebaiknya ubah mode SQL target menjadi tidak ketat atau mengubah semua nilai null menjadi nilai yang valid.

Membuat kegagalan objek

  • Kesalahan: Kesalahan terjadi setelah validasi tampilan gagal.

    Batasan: Kesalahan terjadi saat mencoba memigrasikan tampilan dan tabel yang seharusnya dirujuk tampilan tidak dapat ditemukan.

    Solusi sementara: Sebaiknya migrasikan tampilan secara manual.

Tidak dapat menemukan tabel

  • Kesalahan: Terjadi kesalahan saat merujuk tabel tidak dapat ditemukan.

    Pesan kesalahan potensial: Alur tidak dapat membuat skema objek '{object}' untuk aktivitas '{activity}' menggunakan strategi MySqlSchemaMigrationViewUsingTableStrategy karena eksekusi kueri.

    Batasan: Kesalahan dapat terjadi saat tampilan mengacu pada tabel yang dihapus atau diganti namanya, atau ketika tampilan dibuat dengan informasi yang salah atau tidak lengkap. Kesalahan ini dapat terjadi jika subset tabel dimigrasikan, tetapi tabel yang bergantung tidak.

    Solusi sementara: Sebaiknya migrasikan tampilan secara manual. Periksa apakah semua tabel yang dirujuk dalam kunci asing dan pernyataan CREATE VIEW dipilih untuk migrasi.

Semua koneksi terkumpul yang rusak

  • Kesalahan: Semua koneksi pada server sumber rusak.

    Batasan: Kesalahan terjadi ketika semua koneksi yang diperoleh pada awal beban awal hilang karena mulai ulang server, masalah jaringan, lalu lintas berat di server sumber atau masalah sementara lainnya. Kesalahan ini tidak dapat dipulihkan. Selain itu, kesalahan ini terjadi jika upaya untuk memigrasikan server dilakukan selama jendela pemeliharaan.

    Solusi sementara: Migrasi harus dimulai ulang, dan sebaiknya tingkatkan performa server sumber. Masalah lain adalah skrip yang mematikan koneksi jangka panjang, mencegah skrip ini berfungsi.

Rekam jepret konsisten yang rusak

Batasan: Kesalahan terjadi ketika pelanggan melakukan DDL selama beban awal instans migrasi.

Penanganan masalah: Untuk mengatasi masalah ini, sebaiknya jangan membuat perubahan DDL selama Beban Awal.

Batasan kunci asing

  • Kesalahan: Kesalahan terjadi ketika ada perubahan dalam jenis kunci asing yang dirujuk dari tabel.

    Pesan kesalahan potensial: Mereferensikan kolom '{pk kolom 1}' dan kolom referensi '{fk kolom 1}' dalam batasan kunci asing '{key}' tidak kompatibel.

    Batasan: Kesalahan dapat menyebabkan migrasi skema tabel gagal, karena kolom PK dalam tabel 1 mungkin tidak kompatibel dengan kolom FK dalam tabel 2.

    Solusi sementara: Untuk mengatasi masalah ini, sebaiknya hilangkan kunci asing dan buat ulang setelah proses migrasi selesai.