💾

Amazon AuroraのMySQL互換5.7 -> 8.0へ更新できないときのメモ

2022/10/10に公開
  • 基本的には管理画面の「変更」よりクラスタ単位でバージョンを変更すると更新できる
  • バージョン変更指示するとクラスタ/インスタンスともに「のアップグレード中」のステータスになるが、バージョンが変更できなかった場合はサイレントに何事もなかったかのように通常のステータスに戻る
  • ログはインスタンスの管理画面から確認できる
  • ログを読み進めていくと、ERRORなどと記載されている箇所があるので、それに対応する
  • 空ALTERで直るタイプのエラーがある
  • 空ALTERでも直らないタイプのエラーもある
    • そもそもテーブルやデータベースを削除しているのに、なぜか SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;ではひっかかる場合など
  • どうしようもないエラーがある場合は、クラスタ単位でのバージョンアップを諦めてMySQL8.0のクラスタを新しく作成し、そこにmysqldumpした結果を流す

ちなみに、管理画面だけで移行できた場合も、mysqlなどのデータベースについては照合順序がutf8mb4_0900_ai_ciになっていて、mysqlについては変更できない。

これによって、古いmysql-connectorでは一部のデータの取得結果がstrではなくbytearrayになり、それによってsqlalchemyの https://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/dialects/mysql/base.py#L2791 の比較がうまく動作せず、alembicを動作させると差分検出が正常に動作しなくなる...がそれはまた別の話

Discussion