MySQL
MacOSX
macos
mysql5.7
MySQL8.0

`brew upgrade` で MySQL バージョンアップ後に起動しなくなった場合の対応

開発用の Mac にて、brew upgrade したらローカルの MySQL が起動しなくなったので共有。

  1. brew upgrade 実行
  2. mysql のバージョンが 5.7 から 8.0 に上がる。
  3. mysql.server startThe server quit without updating PID file エラーになる。

    yamadar-mac:~ yamadar$ mysql.server start
    Starting MySQL
    . ERROR! The server quit without updating PID file (/usr/local/var/mysql/yamadar-mac.pid).
    
  4. cat /usr/local/var/mysql/yamadar-mac.err でエラーログを確認

    [ERROR] [MY-012526] [InnoDB] InnoDB: Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.17. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
    [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
    [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
    [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
    [ERROR] [MY-010119] [Server] Aborting
    

    クラッシュ後のアップグレードはサポートしてないとの事。つまり前回 MySQL はクラッシュして止まっていた模様。brew upgrade 前のバージョンのMySQLで、クラッシュせずに停止させれば良さそう。

  5. 前のバージョンで起動してから停止。

    # クラッシュして停止したバージョンのMySQLをインストール
    brew install mysql@5.7
    # インストールしたバージョンのMySQLで起動と停止
    /usr/local/opt/mysql@5.7/bin/mysql.server start
    /usr/local/opt/mysql@5.7/bin/mysql.server stop
    

    これで「クラッシュせずに停止」した事になる。

  6. mysql.server start で起動するようになった。

    yamadar-mac:~ yamadar$ mysql.server start
    Starting MySQL
    ...... SUCCESS!
    

MySQL8.0 から MySQL5.7 へのダウングレード手順

自分の環境では一度 MySQL8.0 で起動/停止した後は、そのままでは MySQL 5.7 では起動できなくなった。もしダウングレードしたい場合は、MySQL8.0で起動して mysqldump する必要がありそう。

MySQL8.0 から MySQL5.7 にダウングレードした手順

  1. MySQL8.0 で mysql.server start
  2. ダンプファイル作成 (自分は Sequel Pro を使った)
  3. MySQL8.0 停止とアンインストール

    mysql.server stop
    # アンインストール前のデータをバックアップ(念の為)
    mv /usr/local/var/mysql/ /usr/local/var/mysql_bk20180615
    brew uninstall mysql
    
  4. MySQL5.7 インストールと起動

    brew install mysql@5.7
    /usr/local/opt/mysql@5.7/bin/mysql.server start
    
  5. データベース作成してダンプファイルを戻す

  6. /usr/local/opt/mysql@5.7/bin/ にパスを通す

  7. mysql.server stop / mysql.server start などで動作確認

これで MySQL 5.7 に戻った。

以上。