Upgrade versi utama untuk RDS untuk MySQL - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Upgrade versi utama untuk RDS untuk MySQL

Amazon RDS mendukung peningkatan di tempat berikut untuk versi mayor mesin basis data MySQL:

  • MySQL 5.7 ke MySQL 8.0

  • MySQL 8.0 ke MySQL 8.4

catatan

Anda hanya dapat membuat instans MySQL versi 5.7, 8.0, dan 8.4 DB dengan kelas instans DB generasi terbaru dan generasi saat ini.

Dalam beberapa kasus, Anda ingin memutakhirkan instans DB yang berjalan pada kelas instans DB generasi sebelumnya ke instans DB dengan versi mesin MySQL yang lebih tinggi. Dalam hal ini, pertama-tama modifikasi instans DB untuk menggunakan kelas instans DB generasi terbaru atau generasi saat ini. Setelah Anda melakukan ini, Anda kemudian dapat memodifikasi instance DB untuk menggunakan versi mesin database MySQL yang lebih tinggi. Untuk informasi kelas instans DB Amazon RDS, lihat DB.

Gambaran umum peningkatan versi mayor MySQL

Peningkatan versi mayor dapat berisi perubahan basis data yang tidak memiliki kompatibilitas mundur dengan aplikasi yang ada. Akibatnya, Amazon RDS tidak menerapkan peningkatan versi mayor secara otomatis; Anda harus memodifikasi instans DB secara manual. Kami menyarankan Anda untuk menguji peningkatan apa pun secara menyeluruh sebelum menerapkannya ke instans produksi Anda.

Untuk melakukan upgrade versi utama, pertama-tama lakukan pembaruan OS yang tersedia. Setelah pembaruan OS selesai, tingkatkan ke setiap versi utama, misalnya, 5.7 ke 8.0 dan kemudian 8.0 ke 8.4. Untuk informasi tentang memutakhirkan RDS untuk MySQL Multi-AZ DB cluster, lihat. Memutakhirkan versi mesin cluster DB multi-AZ untuk Amazon RDS Instans DB MySQL yang dibuat sebelum tanggal 24 April 2014 akan menunjukkan pembaruan OS yang tersedia hingga pembaruan ini diterapkan. Untuk informasi selengkapnya tentang pembaruan OS, lihat Menerapkan pembaruan ke instans DB.

Selama peningkatan versi mayor MySQL, Amazon RDS menjalankan mysql_upgrade biner MySQL untuk meningkatkan tabel, jika perlu. Selain itu, Amazon RDS mengosongkan tabel slow_log dan general_log selama peningkatan versi mayor. Untuk mempertahankan informasi log, simpan konten log sebelum peningkatan versi mayor.

Peningkatan versi mayor MySQL biasanya selesai dalam waktu sekitar 10 menit. Beberapa peningkatan mungkin memakan waktu lebih lama karena ukuran kelas instans DB atau karena instans tidak mengikuti panduan operasional tertentu dalam Praktik terbaik untuk Amazon RDS. Jika Anda meningkatkan instans DB dari konsol Amazon RDS, status instans DB menunjukkan waktu peningkatan selesai. Jika Anda meningkatkan menggunakan AWS Command Line Interface (AWS CLI), gunakan describe-db-instancesperintah dan periksa Status nilainya.

Prececks untuk peningkatan

Amazon RDS menjalankan prechecks sebelum memutakhirkan untuk memeriksa ketidakcocokan. Ketidakcocokan ini bervariasi berdasarkan versi MySQL yang ditingkatkan ke.

Sebagian pra-pemeriksaan disertakan dengan MySQL dan sebagian lainnya dibuat secara khusus oleh tim Amazon RDS. Untuk informasi tentang pra-pemeriksaan yang disediakan oleh MySQL, lihat Peningkatan checker utility.

Pra-pemeriksaan berjalan sebelum instans DB dihentikan untuk peningkatan, sehingga instans tersebut tidak akan menyebabkan waktu henti ketika berjalan. Jika pra-pemeriksaan menemukan inkompatibilitas, Amazon RDS secara otomatis membatalkan peningkatan sebelum instans DB dihentikan. Amazon RDS juga menghasilkan peristiwa untuk inkompatibilitas. Untuk informasi selengkapnya tentang peristiwa Amazon RDS, lihat Bekerja dengan pemberitahuan RDS acara Amazon.

Amazon RDS mencatat informasi terperinci tentang setiap inkompatibilitas dalam file log PrePatchCompatibility.log. Dalam kebanyakan kasus, entri log berisi tautan ke dokumentasi MySQL untuk mengoreksi inkompatibilitas. Untuk informasi selengkapnya tentang format file log, lihat Melihat dan mencantumkan file log basis data.

Karena sifat prechecks, mereka menganalisis objek dalam database Anda. Analisis ini mengakibatkan konsumsi sumber daya dan menambah waktu penyelesaian peningkatan.

Prececks untuk upgrade dari MySQL 8.0 ke 8.4

MySQL 8.4 mencakup sejumlah ketidakcocokan dengan MySQL 8.0. Ketidakcocokan ini dapat menyebabkan masalah selama upgrade dari MySQL 8.0 ke MySQL 8.4. Jadi, beberapa persiapan mungkin diperlukan di basis data Anda agar peningkatan berhasil. Berikut ini adalah daftar umum inkompatibilitas tersebut:

  • Tidak boleh ada tabel yang menggunakan jenis atau fungsi data yang usang.

  • Pemicu tidak boleh memiliki pendefinisi yang hilang atau kosong atau konteks pembuatan yang tidak valid.

  • Tidak boleh ada pelanggaran terkait kata kunci atau kata yang digunakan sistem. Beberapa kata kunci mungkin dicadangkan di MySQL 8.4 yang tidak dicadangkan sebelumnya.

    Untuk informasi selengkapnya, lihat Keywords and reserved words dalam dokumentasi MySQL.

  • Tidak boleh ada tabel dalam database sistem MySQL mysql 8.0 yang memiliki nama yang sama dengan tabel yang digunakan oleh kamus data MySQL 8.4.

  • Tidak boleh ada mode SQL usang yang ditentukan dalam pengaturan variabel sistem sql_mode Anda.

  • Tidak boleh ada tabel atau prosedur tersimpan dengan elemen kolom individu ENUM atau SET dengan panjang melebihi 255 karakter atau 1020 byte.

  • Instalasi MySQL 8.0 Anda tidak boleh menggunakan fitur yang tidak didukung di MySQL 8.4.

    Untuk informasi selengkapnya, lihat Fitur yang dihapus di MySQL 8.4 dalam dokumentasi MySQL.

  • Tidak boleh ada nama pembatasan kunci asing yang lebih panjang dari 64 karakter.

  • Untuk dukungan Unicode yang lebih baik, tinjau informasi berikut:

    • Pertimbangkan untuk mengonversi objek yang menggunakan utf8mb3 charset untuk menggunakan charset. utf8mb4 Set karakter utf8mb3 sudah tidak digunakan lagi.

    • Pertimbangkan utf8mb4 untuk menggunakan referensi kumpulan karakter alih-alihutf8, karena saat ini utf8 adalah alias untuk utf8mb3 charset. Jika memungkinkan, ubah utf8 ke yang utf8mb4 pertama, lalu tingkatkan database Anda.

    • Karena klien yang lebih tua dapat menerima kesalahan set karakter yang tidak dikenalutf8mb3, tingkatkan klien database Anda sebelum memutakhirkan database Anda.

    Untuk informasi selengkapnya, lihat The utf8mb3 character set (3-byte UTF-8 unicode encoding) dalam dokumentasi MySQL.

    Untuk mengubah set karakter, Anda dapat secara manual melakukan backup, restore, dan replikasi database Anda. Atau Anda dapat menggunakan Amazon RDS Blue/Green Deployment. Untuk informasi selengkapnya, lihat Menggunakan Amazon RDS Aurora Blue/Green Deployment untuk pembaruan database.

Saat Anda memulai pemutakhiran dari MySQL 8.0 ke 8.4, Amazon RDS menjalankan prechecks secara otomatis untuk mendeteksi ketidakcocokan ini. Untuk informasi tentang upgrade ke MySQL 8.4, lihat Upgrade MySQL dalam dokumentasi MySQL.

Pra-pemeriksaan ini wajib dilakukan. Anda tidak dapat memilih untuk melewatinya. Pra-pemeriksaan menyediakan manfaat berikut:

  • Hal ini memungkinkan Anda menghindari waktu henti yang tidak direncanakan selama peningkatan.

  • Jika ada inkompatibilitas, Amazon RDS mencegah peningkatan dan menyediakan log bagi Anda untuk mempelajarinya. Anda kemudian dapat menggunakan log untuk mempersiapkan database Anda untuk upgrade ke MySQL 8.4 dengan mengurangi ketidakcocokan. Untuk informasi rinci tentang menghapus ketidakcocokan, lihat Mempersiapkan instalasi Anda untuk upgrade dalam dokumentasi MySQL.

Pra-pemeriksaan untuk peningkatan dari MySQL 5.7 ke 8.0

MySQL 8.0 menyertakan sejumlah inkompatibilitas dengan MySQL 5.7. Inkompatibilitas ini dapat menyebabkan masalah selama peningkatan dari MySQL 5.7 ke MySQL 8.0. Jadi, beberapa persiapan mungkin diperlukan di basis data Anda agar peningkatan berhasil. Berikut ini adalah daftar umum inkompatibilitas tersebut:

  • Tidak boleh ada tabel yang menggunakan jenis atau fungsi data yang usang.

  • Tidak boleh ada file orphan *.frm.

  • Pemicu tidak boleh memiliki pendefinisi yang hilang atau kosong atau konteks pembuatan yang tidak valid.

  • Tidak boleh ada tabel partisi yang menggunakan mesin penyimpanan yang tidak memiliki dukungan partisi native.

  • Tidak boleh ada pelanggaran kata kunci atau kata yang dicadangkan. Beberapa kata kunci mungkin dicadangkan di MySQL 8.0 yang sebelumnya tidak dicadangkan.

    Untuk informasi selengkapnya, lihat Keywords and reserved words dalam dokumentasi MySQL.

  • Tidak boleh ada tabel di basis data sistem mysql MySQL 5.7 yang memiliki nama yang sama dengan tabel yang digunakan oleh kamus data MySQL 8.0.

  • Tidak boleh ada mode SQL usang yang ditentukan dalam pengaturan variabel sistem sql_mode Anda.

  • Tidak boleh ada tabel atau prosedur tersimpan dengan elemen kolom individu ENUM atau SET dengan panjang melebihi 255 karakter atau 1020 byte.

  • Sebelum melakukan peningkatan ke MySQL 8.0.13 atau lebih tinggi, tidak boleh ada partisi tabel yang berada di ruang tabel InnoDB yang dibagikan.

  • Tidak boleh ada kueri dan definisi program tersimpan dari MySQL 8.0.12 atau lebih rendah yang menggunakan pengualifikasi ASC atau DESC untuk klausa GROUP BY.

  • Penginstalan MySQL 5.7 Anda tidak boleh menggunakan fitur yang tidak didukung di MySQL 8.0.

    Untuk informasi selengkapnya, lihat Features removed in MySQL 8.0 dalam dokumentasi MySQL.

  • Tidak boleh ada nama batasan kunci asing yang lebih panjang dari 64 karakter.

  • Untuk dukungan Unicode yang lebih baik, tinjau informasi berikut:

    • Pertimbangkan untuk mengonversi objek yang menggunakan utf8mb3 charset untuk menggunakan charset. utf8mb4 Set karakter utf8mb3 sudah tidak digunakan lagi.

    • Pertimbangkan utf8mb4 untuk menggunakan referensi kumpulan karakter alih-alihutf8, karena saat ini utf8 adalah alias untuk utf8mb3 charset. Jika memungkinkan, ubah utf8 ke yang utf8mb4 pertama, lalu tingkatkan database Anda.

    • Karena klien yang lebih tua dapat menerima kesalahan set karakter yang tidak dikenalutf8mb3, tingkatkan klien database Anda sebelum memutakhirkan database Anda.

    Untuk informasi selengkapnya, lihat The utf8mb3 character set (3-byte UTF-8 unicode encoding) dalam dokumentasi MySQL.

    Untuk mengubah set karakter, Anda dapat secara manual melakukan backup, restore, dan replikasi database Anda. Atau Anda dapat menggunakan Amazon RDS Blue/Green Deployment. Untuk informasi selengkapnya, lihat Menggunakan Amazon RDS Aurora Blue/Green Deployment untuk pembaruan database.

Saat Anda memulai peningkatan dari MySQL 5.7 ke 8.0, Amazon RDS menjalankan pra-pemeriksaan secara otomatis untuk mendeteksi inkompatibilitas ini. Untuk informasi tentang peningkatan ke MySQL 8.0, lihat Upgrading MySQL dalam dokumentasi MySQL.

Pra-pemeriksaan ini wajib dilakukan. Anda tidak dapat memilih untuk melewatinya. Pra-pemeriksaan menyediakan manfaat berikut:

  • Hal ini memungkinkan Anda menghindari waktu henti yang tidak direncanakan selama peningkatan.

  • Jika ada inkompatibilitas, Amazon RDS mencegah peningkatan dan menyediakan log bagi Anda untuk mempelajarinya. Kemudian, Anda dapat menggunakan log ini untuk menyiapkan basis data Anda untuk peningkatan ke MySQL 8.0 dengan mengurangi inkompatibilitas. Untuk informasi terperinci tentang cara mengatasi inkompatibilitas, lihat Preparing your installation for upgrade dalam dokumentasi MySQL dan Upgrading to MySQL 8.0? Inilah yang perlu Anda ketahui... di Blog MySQL Server.

Rollback setelah gagal memutakhirkan

Ketika Anda meng-upgrade instans DB dari MySQL versi 5.7 ke MySQL versi 8.0 atau dari MySQL versi 8.0 ke 8.4, upgrade dapat gagal. Secara khusus, tingkatkan dapat gagal jika kamus data memiliki inkompatibilitas yang tidak terdeteksi oleh pra-pemeriksaan. Dalam hal ini, database gagal memulai dengan sukses di versi MySQL 8.0 atau 8.4 yang baru. Pada tahap ini, Amazon RDS melakukan rollback perubahan yang dilakukan untuk peningkatan. Setelah rollback, instance MySQL DB menjalankan versi aslinya:

  • MySQL versi 8.0 (untuk rollback dari MySQL 8.4)

  • MySQL versi 5.7 (untuk rollback dari MySQL 8.0)

Ketika peningkatan gagal dan di-rollback, Amazon RDS menghasilkan peristiwa dengan ID peristiwa RDS-EVENT-0188.

Biasanya, tingkatkan gagal karena ada inkompatibilitas dalam metadata antara basis data dalam instans DB Anda dan versi MySQL target. Ketika peningkatan gagal, Anda dapat melihat detail tentang inkompatibilitas ini dalam file upgradeFailure.log. Atasi inkompatibilitas sebelum mencoba meningkatkan kembali.

Selama percobaan peningkatan yang gagal dan rollback, instans DB Anda akan diaktifkan ulang. Perubahan parameter tertunda diterapkan selama pengaktifan ulang ini dan dipersistensi setelah rollback.

Untuk informasi tentang peningkatan ke MySQL 8.0, lihat topik-topik berikut dalam dokumentasi MySQL:

Untuk informasi selengkapnya tentang upgrade ke MySQL 8.4, lihat Mempersiapkan Instalasi Anda untuk Upgrade dalam dokumentasi MySQL.