LoginSignup
4
5

More than 5 years have passed since last update.

俺が実現したMySQL 5.5 to Auroraマイグレーション

Last updated at Posted at 2017-11-21

46億のmysqldump愛好家な皆様こんばんわ
ちょっとMySQLデータベースの移行経験ある俺です。ワタシチョットイコウデキル

ついに俺でもわかるシリーズタグの記事が30本目を迎えました。
俺以外の俺達も俺でもわかるシリーズタグをつけて記事書いてくれたこともあり、感謝の24365なエブリデイです。

記念にMySQL 5.5の環境からAuroraへダウンタイムを抑えて移行する方法を書き残します。
今回の例ではオンプレミス環境からAWSをターゲットとしていますが、AWS to AWSも可能です。

詳しく知りたい方は弊社の俺宛に連絡下さい。
ひょっこりノコノコ伺いに行くと思います。

過去Auroraへの移行を実現した手段

今回の構成

こんなかんじです。
データセンターとVPC間はインターネット接続なのでstunnelでトンネルはってます。
VPN Connection/Direct Connectでセキュア, 高速回線引いておいても良いです。

image.png

レプリケーションパターンでふつうに移行するとこんな流れになります

MySQL 5.5の環境をふつーにAuroraへ持っていく場合

事前準備

事前準備においてしんどいのは
MySQL 5.5 on EC2へのデータリストア, MySQL 5.6へのバージョンアップとAuroraへのリストアです。
移行対象のDBクラスタが多いほど辛みが増します。

事前複製作業

1.MySQL 5.5環境をターゲット環境に作る
2.ソース環境のMySQL 5.5からmysqldumpを使ってDBをバックアップする
3.バックアップしたDBデータをターゲットのMySQL 5.5環境へリストアする
4.ターゲット環境にAuroraを準備してバックアップしたDBデータをリストアする
5.ターゲット環境のMySQL 5.5をMySQL5.6へバージョンアップする

事前レプリケーション作業

6.ターゲット環境のAuroraとMySQL 5.6とレプリケーションする。
7.ターゲット環境のMySQL 5.5環境をMySQL 5.6にバージョンアップする
8.ターゲット環境のMySQL 5.6環境からソース環境のMySQL5.5にレプリはる
9.レプリケーションエラーなく同期できることをチェックする

切替当日

10.レプリケーションエラーの有無をチェックする
11.アプリをメンテに入れる
12.レプリケーションを止める
13.アプリエンドポイントを切り替える
14.裏口からアプリ動作チェック、データ整合性チェックする
15.アプリのメンテを解除する
16.ソース環境とターゲット環境のMySQLレプリケーションを停止して、環境を破棄する。
17.最高

MySQL 5.5からAuroraへの移行にDMSを使う

ちょっと楽するためにData Migration Service(DMS)を使います。
DMSを使った流れは以下の通りになります。

事前準備

DMSを使うことでAuroraへのデータリストアをすっ飛ばすことができますいえいいえい

事前複製作業

1.MySQL 5.5をターゲット環境に作る
2.ソース環境のMySQL 5.5からmysqldumpを使って移行対象のDBデータ(mysqldump dbname)とDDL(mysqldump --no-data)をバックアップする
3.バックアップしたDBデータをターゲットのMySQL 5.5環境へリストアする
4.ターゲット環境にAuroraを準備してbinlogを有効にする
5.バックアップしたDBのDDLをAuroraにリストアする

事前レプリケーション作業

6.ターゲット環境にDMSインスタンスを準備して以下の条件でDMSレプリケーションを実行します
ソース: ターゲット環境のMySQL 5.5
ターゲット: Aurora
レプリケーション方法: フルロード,フルロード後はCDC
※補足: DMSのソースDBをオンプレミス環境のMySQL5.5にすることも可能ですが、レプリケーション異常発生時の切り分けを、DMS依存のものなのか、オンプレミス<->VPCネットワーク障害なのか切り分けしやすくするため、EC2にMySQL5.5環境を作っています。

7.ターゲット環境のMySQL 5.5環境からソース環境のMySQL5.5にレプリはる
8.MySQLレプリケーション/DMSレプリケーション両方エラーなく同期が継続していることをチェックする

切替当日

9.レプリケーションエラーの有無をチェックする
10.アプリをメンテに入れる
11.DMSレプリケーションを止める
12.アプリエンドポイントを切り替える
13.裏口からアプリ動作チェック、データ整合性チェックする
14.アプリのメンテを解除する
15.ソース環境とターゲット環境のMySQLレプリケーションを停止して、環境を破棄する。
16.最ッッッ高ッッ!

DMS利用時の注意点

DMSにはいくつか制約があります。どんな制約があるかはここには書きません(DMSの機能も定期的に更新されていくので)

必ず移行計画時点でドキュメントをチェックし、移行対象の環境で制約があてはまらないことを確認してください。
当てはまる場合は回避できるように対応をしてください。

良い移行ライフを!

4
5
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
4
5