第27回:オンプレミスMySQLからAmazon RDS for MySQLへのデータ移行方式

技術者向け・データベースの技術情報発信

オンプレミスMySQLからAmazon RDS for MySQLへの移行方式はいくつかあります。
本ブログでは、各移行方式の特徴と用途をご紹介したいと思います。

1.データ移行方式

今回は用途に応じて3つのパターンをご紹介します。

方式 用途 移行時間 難易度 コスト
mysqldump/mysqlツールの利用 DBが同一構成でデータ量が少なく、簡単にデータ移行を行いたい場合 無償
MySQLレプリケーション機能の併用 DBが同一構成でデータ量が多く、移行時間の短縮が必要となる場合 無償
AWS Database Migration Serviceの利用 データ量が多く、カラムマッピング変更、バージョン差異がある場合 有償

※いずれの方式についても、オンプレミスMySQLからAmazon RDS for MySQLへのネットワーク疎通設定が必要になります。

2.mysqldump/mysqlツールの利用

mysqldumpにてDBオブジェクト定義/データをSQLテキストとしてエクスポートし、mysqlコマンドで移行先でインポートする移行方式です。
(mysqldump/mysqlツール実行中のソースDBへの更新は移行先へ反映されないため、業務システムを停止して実施する必要があります)

dbexpt27_1.png

<移行元データベースでダンプファイルを出力>

$ mysqldump -h host_name -u user_name -p db_name > from_db.dmp

<移行先データベースへインポート>

$ mysql -h host_name -u user_name -p db_name < from_db.dmp

※データベースのバージョンに対応したmysqldump/mysqlツールを利用してください。

3.MySQLレプリケーション機能の併用

mysqldump/mysqlツールによるエクスポート/インポートに加え、MySQLレプリケーション機能を併用して最小限のシステム停止時間でデータ移行を実現します。
(mysqldump/mysqlツール実行中のソースDBへの更新はMySQLのレプリケーション機能により反映されるため、業務システムの停止時間を短縮できます)

dbexpt27_2.png

ダウンタイムを短縮して Amazon RDS MySQL または MariaDB DB インスタンスにデータをインポートする (AWSマニュアル引用)

※MySQLレプリケーションは、AWS側からオンプレミスMySQLに対しても通信を行う必要があります。
オンプレミス側のグローバルIPの開放に対してセキュアな実装が求められるため、多少ハードルが高い印象があります。

4.AWS Database Migration Serviceの利用

AWS Database Migration Serviceを利用して、最小限のシステム停止時間で柔軟なデータ移行を実現します。
(Webコンソールから同期タスク設定、対象テーブル設定、カラムマッピング変更等が可能ですが、MySQLのネイティブツールでないことから制限事項が多く、注意が必要です)

dbexpt27_3.png

MySQLデータベースをAmazonRDS for MySQLまたはAmazon Aurora MySQLに移行する(AWSマニュアル引用)

MySQL 互換データベースのAWS DMSのソースとしての使用(AWSマニュアル引用)

コンソールからのテーブル選択ルールおよび変換ルールの指定(AWSマニュアル引用)

※AWS Database Migration Serviceは、AWS側からオンプレミスMySQLに対しても通信を行う必要があります。
オンプレミス側のグローバルIPの開放に対してセキュアな実装が求められるため、多少ハードルが高い印象があります。

<エンドポイント設定イメージ>

dbexpt27_4.png

<インスタンス設定イメージ>

dbexpt27_5.png

<タスク設定イメージ(フルロードのみ)>

dbexpt27_6.png

<タスク設定イメージ(フルロード+差分同期)>

dbexpt27_7.png

5.おわりに

今回はデータ移行方式の概要をご説明しましたが、今後は各方式の詳細をご紹介できればと思います。

当社の技術共有が、少しでも作業の手助けになれば幸いです。
最後までご覧いただき、ありがとうございます。