Peningkatan versi utama untuk RDS untuk My SQL - 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.

Peningkatan versi utama untuk RDS untuk My SQL

Amazon RDS mendukung peningkatan di tempat berikut untuk versi utama mesin SQL database Saya:

  • SQL5.6 saya ke 5.7 Saya SQL

  • SQL5.7 saya ke My SQL 8.0

catatan

Anda hanya dapat membuat instans DB SQL versi 5.7 dan 8.0 Saya dengan kelas instans DB generasi terbaru dan generasi saat ini, selain kelas instans DB generasi sebelumnya db.m3.

Dalam beberapa kasus, Anda ingin memutakhirkan instans DB SQL versi 5.6 Saya yang berjalan pada kelas instans DB generasi sebelumnya (selain db.m3) ke instans DB versi Saya 5.7. SQL 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 instans DB untuk menggunakan mesin database SQL versi 5.7 Saya. Untuk informasi tentang kelas instans Amazon RDS DB, lihat DB.

Ikhtisar upgrade versi SQL utama saya

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

Untuk melakukan upgrade versi utama untuk instans SQL versi 5.6 DB Saya di Amazon RDS ke SQL versi Saya 5.7 atau yang lebih baru, pertama-tama lakukan pembaruan OS yang tersedia. Setelah pembaruan OS selesai, tingkatkan ke masing-masing versi mayor: 5.6 ke 5.7, lalu 5.7 ke 8.0. Instans SQL DB saya dibuat sebelum 24 April 2014, menunjukkan pembaruan OS yang tersedia hingga pembaruan telah diterapkan. Untuk informasi selengkapnya tentang pembaruan OS, lihat Menerapkan pembaruan untuk instans DB.

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

Peningkatan versi SQL utama saya 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 memutakhirkan instans DB dari RDS konsol Amazon, status instans DB menunjukkan kapan pemutakhiran selesai. Jika Anda meningkatkan menggunakan AWS Command Line Interface (AWS CLI), gunakan describe-db-instancesperintah dan periksa Status nilainya.

Upgrade ke SQL versi Saya 5.7 mungkin lambat

SQLVersi 5.6.4 saya memperkenalkan format tanggal dan waktu baru untukdatetime,time, dan timestamp kolom yang memungkinkan komponen pecahan dalam nilai tanggal dan waktu. Saat memutakhirkan instans DB ke SQL versi Saya 5.7, My SQL memaksa konversi semua jenis kolom tanggal dan waktu ke format baru.

Karena konversi ini membuat ulang tabel Anda, mungkin perlu waktu yang cukup lama untuk menyelesaikan peningkatan instans DB. Konversi paksa terjadi untuk instans DB apa pun yang menjalankan versi sebelum SQL versi Saya 5.6.4. Ini juga terjadi untuk setiap instance DB yang ditingkatkan dari versi sebelum versi Saya 5.6.4 ke SQL versi selain 5.7.

Jika instans DB Anda menjalankan versi sebelum SQL versi Saya 5.6.4, atau ditingkatkan dari versi sebelum 5.6.4, kami sarankan langkah tambahan. Dalam kasus ini, kami menyarankan Anda mengonversidatetime,time, dan timestamp kolom dalam database Anda sebelum memutakhirkan instans DB Anda ke SQL versi Saya 5.7. Konversi ini dapat secara signifikan mengurangi jumlah waktu yang diperlukan untuk memutakhirkan instans DB ke SQL versi Saya 5.7. Untuk meningkatkan kolom tanggal dan waktu Anda ke format baru, berikan perintah ALTER TABLE <table_name> FORCE; untuk setiap tabel yang berisi kolom tanggal dan waktu. Karena mengubah tabel akan mengunci tabel sebagai hanya baca, kami menyarankan Anda melakukan pembaruan ini selama periode pemeliharaan.

Untuk menemukan semua tabel di basis data Anda yang memiliki datetime, time, atau timestamp dan membuat ALTER TABLE <table_name> FORCE; perintah untuk setiap tabel, gunakan kueri berikut.

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

Prececks untuk peningkatan dari My SQL 5.7 ke 8.0

SQL8.0 saya mencakup sejumlah ketidakcocokan dengan My 5.7. SQL Ketidakcocokan ini dapat menyebabkan masalah selama peningkatan dari My SQL 5.7 ke My 8.0. SQL 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 My SQL 8.0 yang sebelumnya tidak dipesan.

    Untuk informasi selengkapnya, lihat Kata kunci dan kata cadangan dalam SQL dokumentasi Saya.

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

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

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

  • Sebelum memutakhirkan ke My SQL 8.0.13 atau lebih tinggi, tidak boleh ada partisi tabel yang berada di ruang tabel InnoDB bersama.

  • Tidak boleh ada kueri dan definisi program yang disimpan dari My SQL 8.0.12 atau lebih rendah yang menggunakan ASC atau DESC memenuhi syarat untuk klausa. GROUP BY

  • Instalasi My SQL 5.7 Anda tidak boleh menggunakan fitur yang tidak didukung di My SQL 8.0.

    Untuk informasi selengkapnya, lihat Fitur yang dihapus di SQL 8.0 Saya di SQL dokumentasi Saya.

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

  • Untuk peningkatan dukungan Unicode, pertimbangkan untuk mengonversi objek yang menggunakan charset utf8mb3 agar menggunakan charset utf8mb4. Set karakter utf8mb3 sudah tidak digunakan lagi. Selain itu, pertimbangkan untuk menggunakan utf8mb4 untuk referensi set karakter, bukan utf8, karena saat ini utf8 adalah alias untuk set karakter utf8mb3.

    Untuk informasi selengkapnya, lihat Kumpulan karakter utf8mb3 (pengkodean unicode 3-byte UTF -8) di dokumentasi Saya. SQL

Saat Anda memulai pemutakhiran dari My SQL 5.7 ke 8.0, Amazon RDS menjalankan prechecks secara otomatis untuk mendeteksi ketidakcocokan ini. Untuk informasi tentang memutakhirkan ke My SQL 8.0, lihat Memutakhirkan Milik Saya SQL di dokumentasi Saya. SQL

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 ketidakcocokan, Amazon RDS mencegah peningkatan dan menyediakan log bagi Anda untuk mempelajarinya. Anda kemudian dapat menggunakan log untuk mempersiapkan database Anda untuk upgrade ke My SQL 8.0 dengan mengurangi ketidakcocokan. Untuk informasi rinci tentang menghapus ketidakcocokan, lihat Mempersiapkan instalasi Anda untuk upgrade di SQL dokumentasi Saya dan Upgrade ke My 8.0? SQL Inilah yang perlu Anda ketahui... di Blog SQL Server Saya.

Prececks mencakup beberapa yang disertakan dengan My SQL dan beberapa yang dibuat khusus oleh RDS tim Amazon. Untuk informasi tentang precheck yang disediakan oleh MySQL, lihat Memutakhirkan utilitas pemeriksa.

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

Amazon RDS mencatat informasi terperinci tentang setiap ketidakcocokan dalam file PrePatchCompatibility.log log. Dalam kebanyakan kasus, entri log menyertakan tautan ke SQL dokumentasi Saya untuk memperbaiki ketidakcocokan. Untuk informasi selengkapnya tentang format file log, lihat Melihat dan mencantumkan file log basis data.

Karena sifatnya, pra-pemeriksaan akan menganalisis objek di basis data Anda. Analisis ini mengakibatkan konsumsi sumber daya dan menambah waktu penyelesaian peningkatan.

catatan

Amazon RDS menjalankan semua precheck ini hanya untuk peningkatan dari My SQL 5.7 ke My SQL 8.0. Untuk peningkatan dari My SQL 5.6 ke My SQL 5.7, prechecks terbatas untuk mengonfirmasi bahwa tidak ada tabel yatim piatu dan bahwa ada cukup ruang penyimpanan untuk membangun kembali tabel. Prececks tidak dijalankan untuk peningkatan ke rilis yang lebih rendah dari My SQL 5.7.

Rollback setelah gagal memutakhirkan dari My SQL 5.7 ke 8.0

Saat Anda memutakhirkan instans DB dari SQL versi Saya 5.7 ke SQL versi Saya 8.0, pemutakhiran 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 My SQL 8.0 yang baru. Pada titik ini, RDS Amazon mengembalikan perubahan yang dilakukan untuk peningkatan. Setelah rollback, instans My SQL DB menjalankan My SQL version 5.7. Ketika pemutakhiran gagal dan dibatalkan, Amazon RDS menghasilkan acara dengan ID acara RDS - EVENT -0188.

Biasanya, upgrade gagal karena ada ketidakcocokan dalam metadata antara database dalam instans DB Anda dan target versi Saya. SQL 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 selengkapnya tentang memutakhirkan ke My SQL 8.0, lihat topik berikut di dokumentasi SayaSQL:

catatan

Saat ini, rollback otomatis setelah kegagalan pemutakhiran hanya didukung untuk peningkatan versi utama SQL 5.7 hingga 8.0 Saya.