AWS RDSの設定変更

こんにちは。かっぺいです。
AWS Auroraでの設定変更の方法と、S3へのエクスポートするためのロール設定方法について、備忘メモです。

Aurora/MySQL/MariaDBのDBサーバー設定

MySQL系のDBで、ほぼ必ず設定する必要のある文字コードの指定。
AuroraとMySQL/MariaDBインスタンスでは、設定タイプが違いますが内容は同じです。

RDSパラメータグループ

/etc/my.cnf.dに記載する設定は、パラメータグループから設定を定義します。

マネージメントコンソールからRDSを開いて、パラメータグループを選択し、パラメータグループの作成を選択します。

パタメータグループファミリーは、変更したいRDSのDBとメジャーバージョンが同じである必要があります。
Aurora(MySQL)の場合、MySQLClusterみたいな動きをするので、共通となる設定項目はDBクラスターパラメータグループ、インスタンス個別の設定項目はDBパラメータグループで設定します。

パラメータグループは、作成だけではデフォルト値のままですので、作成したパラメータを選択して編集を行います。

文字コード設定

MySQL系でお馴染みの、言語設定関係オプション

  • character_set_client
  • character_set_database
  • character_set_server

を設定します。
変更可能なパラメータのフィルタに適当に入力して、パラメータを探したのち値を入力します。
許可された値で、変更可能な内容が表示されていますので、Auroraの場合はutf8mb4を選びます。

タイムゾーンの設定

通常用途ではあまり意識する必要は無いかと思いますが、インスタンス側で時刻を取得するようなファンクションなどを利用する場合、デフォルトではUTCとなっているため変更する必要が発生する可能性があります。

タイムゾーンは忘れた頃に問題となることがあるので、上記の文字コード設定のついでに変更しておくことをお勧めします。

IAMロールの設定

普通に使う場合には、ロールの設定は必要ありません。
バックアップなどの用途で、RDSインスタンスから直接S3にエクスポートしたい場合にそのままではS3に対するアクセス権限が無いため、処理が失敗します。
この場合に、RDSに対してS3へのアクセス権限を付与したロールをアタッチすることにより、RDSインスタンスからのS3アップロードが行えるようになります。

AuroraMySQLの場合、一般的なバックアップ用途としてmysqldumpを使う場合には、ネットワーク越しでの実行ができるので、ロールをアタッチするシーンはあまり無いかと思います。
RDS for Oracleの場合、エクスポートがインスタンス内に出力されるので、バックアップとしてS3に格納したい時にインスタンス内からS3へのファイル転送を行う必要がありました。

ロールを作る際の注意点は、信頼関係にRDSを指定しないとRDSから利用できない点です。
マネージメントコンソールからロールを作成する場合、EC2のロールとして一度作成保存してから、信頼関係のタブにあるPrincipalをRDSに変更すると簡単に作成できます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "rds.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

なお、RDS for OracleでS3への送受信を行う場合には、オプションパラメータとしてS3関連のファンクションを有効にするための設定も必要となりました。

RDSへパラメータの適用

最後に、作成したパラメータをRDSへ適用しましょう。
適用ずみのパラメータを編集した場合、すぐには適用されず次回のメンテナンスウィンドウのタイミングで適用されます。
すぐに反映したい場合、保留中のメンテナンスから実施することができますが、一時的なダウンタイムが発生する可能性があります。