ハマログ

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

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   kaneko tomo   2018年12月20日


関連記事

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(中編)

はい、どーも! てるおです。 前編の戦いを経た今、恐れるものはありません。 早速…

VagrantとAnsibleで仮想環境のCentOS6.5にWordPress環境構築!WebサーバーはNginxですか?(前編)

はいどーも! てるおです。 はいどーも!に見出しタグを使って元気感を演出していま…

php+nginxでphp.iniを変更したらphp-fpmも再起動しよう

どーも、ゆうたです。 ちょっと前に健康診断を受けたら「動脈硬化のリスク有り」でC…


← 前の投稿

次の投稿 →