MySQLのレプリケーションのエラー

MySQLをアップデートしたらレプリケーションにエラーが出て動かなくなった。

現象

MySQL 5.7.13から5.7.14にアップデートしたところ、次のようなエラーが出てレプリケーションが動かなくなった。

リスタートしても一緒。mysql_upgradeを実行しても変わらず。

原因

MySQL 5.7.14のmysql_upgradeの不具合により、mysql.slave_master_infoテーブルが適切に更新されないため。

対策

mysqlを管理者権限で起動し、次のようにテーブルをリファインする。

cf. mysql_upgrade of PS 5.7.14 doesn’t update the “slave_master_info” schema (Percona Server bug report)

おまけのトラブル

上記の解決策を試す前に、不具合報告ページの最後にある「mysql.slave_master_infoテーブルを削除してmysql_upgradeを実行すれば良い」という安易な解法を試してしまい、その結果、マスター側で次のようなエラーが出るように。

まあ、そうだよね…。

仕方がないので、レプリケーションを再構築。

  1. マスター側でdumpファイルを作成。
  2. スレーブ側でレプリケーションをいったん停止し、マスターをリセット。
  3. スレーブ側にデータベースをリストア。
  4. レプリケーション再同期。

    MASTER_LOG_FILE および MASTER_LOG_POS は、マスター側の「show master status」で確認した情報をもとに入力。
  5. スレーブ側のレプリケーションを再開。
  6. スレーブ側でレプリケーションが正常に動いているか確認。

    ここで、次のパラメータがふたつとも「Yes」なら問題なし。

    • Slave_IO_Running
    • Slave_SQL_Running