0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

古いMySQLをAWS RDSに移行した時に引っかかった点

Last updated at Posted at 2021-08-31

10年ぐらい前のシステムのAWS化に際し、
オンプレミス上のMySQLをAWS RDSに移行しました。
移行作業の中で何点かハマりポイントがあったので書き記します。

環境

既存環境

  • MySQL5.2

新環境

  • AWS RDS
  • MySQL5.7

ポイント1 テーブル名が大文字小文字が区別されるようになる。

Unix では、lower_case_table_names のデフォルト値は 0 です。Windows では、デフォルト値は 1 です。OS X では、デフォルト値は 2 です。

MySQLでSQLにテーブル名を書く時、大文字小文字を区別するかどうかは、lower_case_table_namesのパラメータに依存します。

どうも今回対象としたシステムは最初Windowsで動かしていたみたいでlower_case_table_namesが1になっていました。
RDSの同パラメータのデフォルト値はゼロです。
既存のSQLはWindows上で開発してたようでテーブル名の大文字小文字が統一されておらず、
結構な数のSQLが動作不良を起こしました。

これについては、SQLの方では直しきれなかったのでパラメータの方を変更してます。

なお、lower_case_table_namesRDSのMySQLが5.6未満だと0以外選べないので注意が必要です。

ポイント2 ファンクションが移行できない。

ファンクションと一部のストアードプロシージャが移行に失敗しました。
ファンクションにはSUPER権限が必要ですが、RDS上のユーザーにはこの権限が提供されていません。
従って、ファンクションを作るDDLが通りません。

CREATE PROCEDURE および CREATE FUNCTION には、CREATE ROUTINE 権限が必要です。

SYS アクセス (SUPER 権限) は提供されていません。MySQL DB インスタンスでバイナリログが有効になっている場合は、DB インスタンス用に作成するカスタム DB パラメータグループで log_bin_trust_function_creators パラメータを true に設定します。

以上からlog_bin_trust_function_creatorsをtrueにして、
RDSを再起動するとファンクションのDDLが通るようになりました。

ポイントは以上です。
上記2点を修正したところ、無事移行完了し安定して動くようになっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?