Karena tidak ada jawaban di atas yang benar-benar menjelaskan apa yang terjadi, saya memutuskan untuk berpura-pura dan membawa lebih banyak detail untuk masalah ini.
Ya, solusinya adalah menjalankan perintah Upgrade MySQL, sebagai berikut:, mysql_upgrade -u root -p --force
tetapi apa yang terjadi?
Akar penyebab masalah ini adalah korupsi performance_schema
, yang dapat disebabkan oleh:
- Korupsi organik (volume terjadi kaboom, bug mesin, masalah driver kernel dll)
- Korupsi selama mysql Patch (bukan tidak pernah terjadi hal ini terjadi selama patch mysql, khususnya untuk peningkatan versi utama)
- Sederhana "jatuhkan database performance_schema" jelas akan menyebabkan masalah ini, dan itu akan menyajikan gejala yang sama seolah-olah rusak
Masalah ini mungkin telah ada pada database Anda bahkan sebelum tambalan, tetapi apa yang terjadi pada MySQL 5.7.8 secara khusus adalah bahwa flag show_compatibility_56
mengubah nilai defaultnya dari yang diubah menjadi ON
default, menjadi OFF
. Bendera ini mengontrol perilaku mesin pada kueri untuk pengaturan dan membaca variabel (sesi dan global) di berbagai Versi MySQL.
Karena MySQL 5.7+ mulai membaca dan menyimpan variabel-variabel ini dan performance_schema
bukannya menyala information_schema
, flag ini diperkenalkan sebagai ON
rilis pertama untuk mengurangi radius ledakan perubahan ini dan untuk memberi tahu pengguna tentang perubahan tersebut dan membiasakan diri dengannya.
OK, tapi mengapa koneksi gagal? Karena tergantung pada driver yang Anda gunakan (dan konfigurasinya), itu mungkin berakhir menjalankan perintah untuk setiap koneksi baru yang dimulai ke database (seperti show variables
, misalnya). Karena salah satu dari perintah ini dapat mencoba mengakses yang rusak performance_schema
, seluruh koneksi dibatalkan sebelum diinisiasi sepenuhnya.
Jadi, secara ringkas, Anda mungkin (tidak mungkin memberi tahu sekarang) performance_schema
apakah ada yang hilang atau rusak sebelum ditambal. Tambalan ke 5.7.8 kemudian memaksa mesin untuk membaca variabel Anda dari performance_schema
(alih-alih information_schema
, darimana pembacaannya karena bendera yang diputar ON
). Karena performance_schema
rusak, koneksi gagal.
Menjalankan peningkatan MySQL adalah pendekatan terbaik, meskipun ada downtime. Menyalakan bendera adalah salah satu opsi, tetapi ia datang dengan implikasinya sendiri seperti yang ditunjukkan pada utas ini.
Keduanya harus bekerja, tetapi konsekuensinya dan tahu pilihan Anda :)
5.7.8-rc
versi dan pemulihan dari cadangan lengkap DB.