ハマログ

株式会社イーツー・インフォの社員ブログ

RDS for MySQLからAuroraに移行しました

RDS for MySQLで運用していたデータベースをAuroraに移行しました。
3行まとめ
・簡単
・AWSコンソールだけで作業が完了する
・タイムゾーンの扱いに注意
手順
1.RDSのAuroraリードレプリカを作成する
2.Auroraリードレプリカのレプリケーション状況を確認する
3.リードレプリカをマスターに昇格する
1.RDSのリードレプリカを作成する

1.RDSのリードレプリカを作成する

AWSコンソールからRDSのAuroraリードレプリカを作成します。アクション→Auroraリードレプリカの作成。

ここで1こはまって、タイムゾーン間違えました。要注意。RDS側のタイムゾーンがどのような場合でも、Auroraインスタンスはsystem_time_zone=UTC, time_zone=SYSTEMとして作成されます。
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |
+------------------+--------+
そのため、JSTの環境からAuroraを作成すると時刻が9時間ずれてしまいます。

これを解決するにはAuroraクラスター側のパラメータグループで、time_zoneを移行前の状態に合わせる必要があります。

ただしAWSによると、DBレイヤーではUTCを利用したほうがいいよとのことです。
RDS DB インスタンスではすべて、デフォルトで UTC/GMT が使用されており、タイムゾーンの変更はオプションです。データベースレイヤーでは UTC タイムゾーンを使用することを強くお勧めします。ローカルタイムゾーンを使用する必要がある場合は、必ずアプリケーションレイヤーでタイムゾーンを変更してください。
Amazon RDS データベースインスタンスのタイムゾーンを変更する方法を教えてくださいより

さて、リードレプリカが作成されると以下のように、RDSのロールが「マスター」に、Auroraクラスターのロールが「クラスター」、DBのロールが「書き込み」となります。

また、クラスタの詳細を表示すると、レプリケーションソースとしてマスターのARNが表示されます
2.Auroraリードレプリカのレプリケーション状況を確認する
Auroraのインスタンスにmysqlコマンドで接続します。

以下のコマンドでレプリケーションの状況を確認します。
> show slave status \G
Seconds_Behind_Master: 0
また、master側でshow master statusコマンドを実行して表示されたPositionの値とレプリカ側で表示されたExec_Master_Log_Posの値を比較することもできます。
3.リードレプリカをマスターに昇格する

さて、いよいよレプリカ(slave)をマスターに昇格させます。作業は簡単で、アクション→リードレプリカの昇格を選択するだけです。

完了すると、マスターだったRDSが通常の「インスタンス」に戻ります。この時点でレプリケーションは解除され、それぞれ独立したDBになります。
データベース設定のクラスタロールが「レプリカ」から「マスター」になりました。
あとは旧DBのスナップショットを取得したら削除して作業完了です。
AuroraAWSmysqlmysql5.6

  kaneko tomo   2018年12月20日


関連記事

AWS環境で、EC-CUBEのtimezoneがおかしくなった話

~経緯~ 現在、案件でAWS環境でEC-CUEBの構築をしています。 テストで受…

Amazon Linux 2のExtras LibraryでインストールしたPHP7.2をPHP7.4に変更する

しばらくほったらかしだったので少し前にAmazon Linux 2にExtras…

RDSのAurora MySQLで監査ログの出力を設定する

記事名の通りに『RDSの監査ログを出力せい。御用改めである』とお達しが来たので対…


← 前の投稿

次の投稿 →