上記の答えのどれも実際に何が起こったのかを説明していないため、この問題について詳しく説明することにしました。
はい、解決策は次のようにMySQLアップグレードコマンドを実行するmysql_upgrade -u root -p --force
ことです。
この問題の根本的な原因はの破損でありperformance_schema
、次の原因が考えられます。
- 有機的な破損(ボリュームがkaboomになる、エンジンのバグ、カーネルドライバーの問題など)
- mysqlパッチ中の破損(特にメジャーバージョンのアップグレードの場合、これがmysqlパッチ中に発生することは前代未聞ではありません)
- 単純な「drop database performance_schema」は明らかにこの問題を引き起こし、破損した場合と同じ症状を示します
この問題は、さらにパッチ前に、データベースに存在していますが、MySQLの5.7.8に何が起こったのか、具体的フラグがあることであるかもしれませんshow_compatibility_56
投入されてから、そのデフォルト値を変更するON
には、デフォルトでOFF
。このフラグは、さまざまなMySQLバージョンで変数(セッションおよびグローバル)を設定および読み取るためのクエリでのエンジンの動作を制御します。
MySQL 5.7以降では、これらの変数の読み取りと保存がでperformance_schema
なく開始information_schema
されたON
ため、最初のリリースと同様にこのフラグが導入され、この変更の爆発範囲を縮小し、ユーザーに変更について知らせ、慣れさせました。
OK、でも接続が失敗するのはなぜですか?使用しているドライバー(およびその構成)によっては、データベースへの新しい接続が開始されるたびにコマンドが実行される可能性があるshow variables
ため(たとえば、)。これらのコマンドの1つが破損したへのアクセスを試みる可能性があるためperformance_schema
、完全に開始される前に接続全体が中止されます。
だから、要約すると、あなたはあり持っていた(それは今言うことは不可能です)performance_schema
のいずれか欠落しているか、パッチを適用する前に壊れて。次に、5.7.8へのパッチにより、エンジンは変数を読み取るように強制されましたperformance_schema
(information_schema
フラグがオンになっているために変数が読み取られた場所ではなくON
)。以来performance_schema
壊れた、接続が失敗しています。
ダウンタイムにもかかわらず、MySQLアップグレードを実行することが最善のアプローチです。フラグをオンにすることは1つのオプションですが、すでにこのスレッドで指摘されているように、独自の影響があります。
どちらも機能するはずですが、結果に重みを付け、選択内容を把握します。
5.7.8-rc
バージョンを再インストールし、DBフルバックアップから復元することを検討してください。