AWS Aurora(MySQL)で絵文字が含まれたデータベースをバックアップ・リストアする

AWS RDSのAurora(MySQL)でデータベースを移行しようとしたところ以下の様なエラーや絵文字が??に置き換わってしまっていたのでdumpファイルを取るためのオプションのメモ。

ERROR 1227 (42000) at line <line number>: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

super権限が必要と言われていますがRDSではrdsadminしかこの権限を持てないので設定できません。--set-gtid-purged=OFFのオプションを指定すると権限の必要なGTIDの設定が出力されなくなるので設定します。

また、MySQLクライアントのcharacter-setがutf8mb4になっていないと絵文字が??に化けてしまうので--default-character-set=utf8mb4を指定します。

バックアップ

mysqldump --single-transaction --default-character-set=utf8mb4 --set-gtid-purged=OFF -uuser_name -p -hexample.ap-northeast-1.rds.amazonaws.com db_name > utf8mb4_dump.sql

リストア

リストアは通常通り行います。

mysql -uuser_name -p -hexample.ap-northeast-1.rds.amazonaws.com db_name < utf8mb4_dump.sql

参照