第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への更新は移行先へ反映されないため、業務システムを停止して実施する必要があります)
<移行元データベースでダンプファイルを出力>
$ 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のレプリケーション機能により反映されるため、業務システムの停止時間を短縮できます)
■ダウンタイムを短縮して Amazon RDS MySQL または MariaDB DB インスタンスにデータをインポートする (AWSマニュアル引用)
※MySQLレプリケーションは、AWS側からオンプレミスMySQLに対しても通信を行う必要があります。
オンプレミス側のグローバルIPの開放に対してセキュアな実装が求められるため、多少ハードルが高い印象があります。
4.AWS Database Migration Serviceの利用
AWS Database Migration Serviceを利用して、最小限のシステム停止時間で柔軟なデータ移行を実現します。
(Webコンソールから同期タスク設定、対象テーブル設定、カラムマッピング変更等が可能ですが、MySQLのネイティブツールでないことから制限事項が多く、注意が必要です)
■MySQLデータベースをAmazonRDS for MySQLまたはAmazon Aurora MySQLに移行する(AWSマニュアル引用)
■MySQL 互換データベースのAWS DMSのソースとしての使用(AWSマニュアル引用)
■コンソールからのテーブル選択ルールおよび変換ルールの指定(AWSマニュアル引用)
※AWS Database Migration Serviceは、AWS側からオンプレミスMySQLに対しても通信を行う必要があります。
オンプレミス側のグローバルIPの開放に対してセキュアな実装が求められるため、多少ハードルが高い印象があります。
<エンドポイント設定イメージ>
<インスタンス設定イメージ>
<タスク設定イメージ(フルロードのみ)>
<タスク設定イメージ(フルロード+差分同期)>
5.おわりに
今回はデータ移行方式の概要をご説明しましたが、今後は各方式の詳細をご紹介できればと思います。
当社の技術共有が、少しでも作業の手助けになれば幸いです。
最後までご覧いただき、ありがとうございます。