Dal momento che nessuna delle risposte sopra spiegano effettivamente cosa è successo, ho deciso di intervenire e portare alcuni dettagli in più su questo problema.
Sì, la soluzione è eseguire il comando di aggiornamento di MySQL, come segue:, mysql_upgrade -u root -p --forcema cosa è successo?
La causa principale di questo problema è la corruzione di performance_schema, che può essere causata da:
- Corruzione organica (volumi che vanno su kaboom, bug del motore, problema del driver del kernel ecc.)
- Corruzione durante la patch mysql (non è inaudito che ciò accada durante una patch mysql, specialmente per gli aggiornamenti della versione principale)
- Un semplice "drop database performance_schema" causerà ovviamente questo problema e presenterà gli stessi sintomi come se fosse danneggiato
Questo problema potrebbe essere stato presente nel tuo database anche prima della patch, ma ciò che è accaduto in particolare su MySQL 5.7.8 è che il flag ha show_compatibility_56cambiato il suo valore predefinito passando ONda default a OFF. Questo flag controlla il comportamento del motore nelle query per l'impostazione e la lettura delle variabili (sessione e globale) su varie versioni di MySQL.
Poiché MySQL 5.7+ ha iniziato a leggere e archiviare queste variabili su performance_schemaanziché su information_schema, questo flag è stato introdotto come ONper le prime versioni per ridurre il raggio di esplosione di questa modifica e per far conoscere agli utenti la modifica e abituarsi.
OK, ma perché la connessione fallisce? Perché a seconda del driver che si sta utilizzando (e della sua configurazione), potrebbe finire con l'esecuzione di comandi per ogni nuova connessione avviata al database (come show variables, ad esempio). Poiché uno di questi comandi può tentare di accedere a un file danneggiato performance_schema, l'intera connessione si interrompe prima di essere avviata completamente.
Così, in sintesi, si può (è impossibile dire oggi) hanno avuto performance_schemasia mancante o danneggiato prima di patching. La patch a 5.7.8 ha quindi costretto il motore a leggere le variabili da performance_schema(anziché da information_schemadove lo stava leggendo a causa della rotazione della bandiera ON). Poiché è performance_schemastato danneggiato, le connessioni non riescono.
L'esecuzione dell'aggiornamento MySQL è l'approccio migliore, nonostante i tempi di inattività. L'attivazione del flag è un'opzione, ma viene fornita con una serie di implicazioni come già indicato su questo thread.
Entrambi dovrebbero funzionare, ma soppesare le conseguenze e conoscere le tue scelte :)
5.7.8-rcversione e un ripristino dal backup completo del DB.