AWS RDSでMySQL(5.6)からAuroraに移行した記録
はじめに
先日、運用中のサービスで利用していたAmazon RDS for MySQLを
Amazon RDS for Auroraへ移行しました。
その際の移行手順を記録しておきます。
前提
MySQLからAuroraへ単純に移行だけ行うのであれば、
MySQLインスタンスからスナップショットを取り、スナップショットからAuroraを立ち上げるという手順で可能です。
ただし、今回は運用中のサービスで利用しているMySQLを移行するケースだったので、
メンテナンス期間を最小限に抑えることが必要でした。
そのため、
わずかなダウンタイムでの Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート
を参考に、レプリケーションを利用して移行作業を行いました。
作業手順
1, MySQLにレプリケーション用のユーザを作成する
MySQLに接続し、レプリケーション用ユーザを作成します。
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl_user@'.' IDENTIFIED BY 'repl_password';
2, AWSコンソール上でMySQLにリードレプリカを作成
AWS RDSコンソール上で、MySQLインスタンスを選択し
インスタンスの操作>リードレプリカの作成 からリードレプリカを作成します。
3, レプリケーションの停止
手順2で作成したMySQLリードレプリカに接続し、レプリケーションを止めます。
またこの時にバイナリログファイル名、バイナリログポジションを記録しておきます。
mysql> call mysql.rds_stop_replication;
mysql> show slave status\G
show slave status
を実行した後に表示される
Master_Log_Fileがバイナリログファイル名、Read_Master_Log_Posがバイナリログポジションです。
※これらの情報は、後の手順でAuroraにレプリケーションを設定するときに使います。
4, AWSコンソール上でMySQLリードレプリカからスナップショットを取得する
AWS RDSコンソール上で、MySQLリードレプリカを選択し
インスタンスの操作>スナップショットの取得 からスナップショットを作成します。
5, AWSコンソール上でAuroraインスタンスを作成する
AWSコンソールのスナップショット一覧から、手順4で作成したスナップショットを選択し
「スナップショットの移行」からAuroraインスタンスを作成します。
6, AWSコンソール上でパラメータグループを作成
AWSコンソール上でパラメータグループ>パラメータグループの作成 からパラメータグループを作成します。
Auroraではパラメータグループが
「パラメータグループ」「DBクラスターのパラメータグループ(Auroraのクラスタ全体に設定するパラメータグループ)」
の二タイプとなったので、それぞれのタイプについて作成します。
各々のパラメータについては適宜設定します。
今回は文字コードやスロークエリログなど、MySQLのパラメータグループと合わせた形で設定しました。
7, AWSコンソール上でAuroraインスタンスの設定を変更
AWS RDSコンソール上で、Auroraインスタンスを選択し
インスタンスの操作>変更 からAuroraインスタンス設定を変更します。
今回は、
・パラメータグループ(手順6で設定したものにする)
・セキュリティグループ
・バックアップ
・メンテナンスウィンドウ
を変更しました。
変更の保存後、AuroraインスタンスをAWS上で再起動し、パラメータグループの変更を適用します。
8, MySQL->Auroraのレプリケーションを開始する
Auroraにマスターユーザで接続し、レプリケーションの設定を行います。
mysql> call mysql.rds_set_external_master (
"MySQLのエンドポイント"
, "ポート(通常3306)"
, "1で作成したユーザ名"
, "1で作成したユーザパスワード"
, "手順3で取得したバイナリログファイル名"
, 手順3で取得したバイナリログポジション
, 0
);
設定が終わったら、↓のコマンドでレプリケーションを開始します。
mysql> call mysql.rds_start_replication;
レプリケーション開始後、show slave status\G
で確認できるSeconds_behind_masterを見て、ラグ状況を確認します。
9, アプリケーションの参照系をAuroraに切り替え
アプリケーション側の参照系をAuroraに切り替えます。
問題ないようなら、AWSコンソール上でMySQLのリードレプリカを削除します。
ここからメンテナンス期間に入ります。
10, AWSコンソール上でMySQLのパラメータグループのread_onlyを1に変更
AWSコンソール上で、パラメータグループ一覧からMySQLに設定しているパラメータグループを編集し、read_onlyパラメータを1に変更します。
read_onlyパラメータは即時適用なので、
この時点からMySQLは参照はできますが更新ができなくなります。
11, Auroraに接続し、MySQL->Auroraのレプリケーションを停止
Auroraにマスターユーザで接続し、以下のコマンドでレプリケーションを停止します。
mysql> call mysql.rds_stop_replication;
※停止前に、show slave status\G
を確認しレプリケーションラグが無いことを確認します
12, アプリケーションの更新系をAuroraに切り替え
アプリケーション側の更新系をAuroraに切り替えます。
切り替えが終われば、アプリケーションでのデータベース参照・更新ともに可能になります。
ここまででメンテナンス期間が終了です。
13, MySQLインスタンスの削除
しばらくサービスの監視を行い、問題ないようならMySQLインスタンスを削除します。
MySQLに接続し、レプリケーションを停止してからAWSコンソール上でインスタンス削除を行います。
補足
今回の切り替えは以上の手順で行いました。
他に移行手順の例や、うちではこうやった! というような事例などありましたら教えて下さい。
参考リンク
移行作業にあたって参考にさせていただいたページです。
わずかなダウンタイムでの Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート
Amazon Auroraとのレプリケーション
実録!サービスを止めずに Amazon Aurora へ移行した話
RDS for MySQLからAuroraへ移行しました
Author And Source
この問題について(AWS RDSでMySQL(5.6)からAuroraに移行した記録), 我々は、より多くの情報をここで見つけました https://qiita.com/asigochan/items/61eb8df8b26f0dbb683f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .