AWS Database Migration Service について
はじめに
データベースを移行しようとしたとき、まず新規のデータベースの構築、設定から入り、それからデータの移行を行っていきます。この時、移行元のデータベース(ソースデータベース)と移行先のデータベース(ターゲットデータベース)の種類が異なっているような場合には、移行先のデータベースに適合するよう定義の変換も行っていく必要があります。また、データベースを全件移行する場合、移行するデータ量も大きくなり、結果として移行プログラムもその分重くなることが予想されるため、移行プログラムが動作する専用の環境を用意する必要も想定されます。今回はこのようなデータベースの移行に適したサービス AWS Database Migration Service についてまとめます。
AWS Database Migration Service とは
AWS Database Migration Service (DMS) は、データベースのデータの移行に使用できるクラウドサービスです。より具体的には、レプリケーションソフトウェアを実行する環境を提供するサービスとなります。
ほとんどの商用データベースとオープンソースデータベース間のデータ移行で利用することができ※1、データの移行においてはデータベースエンジンの違いについて考慮する必要はありません。また、データベースの移行中においてもソースとなるデータベースは利用可能な状態に保つことができるため、データの移行を行うにあたって該当のデータベースを利用するアプリケーションを停止する、といった作業を実施する必要がありません。なお、AWS DMS の使用に関しては、ソースとターゲットのデータベースの内、最低でもどちらか一方が AWS のサービス上にある必要があります。(オンプレミスデータベースから別のオンプレミスデータベースへの移行はサポートされておりません。)
AWS DMS が活用できる場面
AWS DMS でどのようなことができるかまとめていきます。
データベースの移行
データベースのデータを AWS に移行する、というのが主な利用ケースとなります。移行するデータベースに関しては、同種のデータベース間(例:ソースとターゲットのデータベースエンジンが同じ、Oracle から Amazon RDS for Oracle、など)での移行はもちろん、異種のデータベース間(例:Oracle から Amazon Aurora、Microsoft SQL Server から MySQL、など)での移行も行うことができます。
なお、異種間での移行の場合は、ソースとターゲットのデータベース間で互換性が無いため、まず AWS Schema Conversion Tool※2 を使用してソースのスキーマとコードをターゲットデータベースのスキーマとコードに適合するように変換し、その後に AWS Database Migration Service を使用してソースデータベースからターゲットデータベースにデータを移行する、という手順を実施します。
データベースの統合
AWS DMS を使用することで、複数のソースデータベースを単一のターゲットデータベースに統合することができます。このデータベースの統合は、同種間および異種間でも行うことができます。
継続的なデータレプリケーション
AWS DMS では、継続的なデータレプリケーションを実行することができます。データベースエンジンは同種間と異種間両方のデータレプリケーションをサポートしており、単一のソースデータベースから複数のターゲットデータベースにデータをレプリケートしたり、複数のソースデータベースからのデータを統合して1つのターゲットデータベースにレプリケートすることも可能です。
AWS DMS の利用料金
AWS DMS の料金は、主に「レプリケーションのインスタンスタイプ × 稼働時間」で決まります。以下に現在(2020年5月時点)の東京リージョンの料金についてまとめます。なお、データベースを Amazon Aurora、Amazon Redshift、 Amazon DynamoDB、または Amazon DocumentDB (MongoDB 互換) に移行する場合は、AWS DMS を無料で 6 か月間利用することができます。
レプリケーションインスタンス
レプリケーションインスタンスは以下のタイプを利用することができます。
- T2
ベースラインレベルの CPU パフォーマンスを維持しながら突発的な高パフォーマンスにも対応できる低コストでスタンダードなインスタンス - C4、R4
最高レベルのプロセッサパフォーマンスを備えており、高パフォーマンスの PPS (パケット毎秒) 数、低いネットワークジッター、低いネットワークレイテンシーを達成するように設計されたインスタンス(C4 はコンピューティング最適化、R4 はメモリ最適化)
※ T2 インスタンスは、データベース移行プロセスの開発やテスト、定期的なデータ移行タスクの実施に適しており、C4 または R4 インスタンスは、大規模なデータベースを移行する際に移行時間を最小限にしたいときに適しています。
インスタンスタイプ | 1時間あたりの料金 | 補足(スペック) |
---|---|---|
t2.micro | 0.028 USD | vCPU:1 メモリ:1 GiB |
t2.small | 0.056 USD | vCPU:1 メモリ:2 GiB |
t2.medium | 0.112 USD | vCPU:2 メモリ:4 GiB |
t2.large | 0.224 USD | vCPU:2 メモリ:8 GiB |
c4.large | 0.196 USD | vCPU:2 メモリ:3.75 GiB |
c4.xlarge | 0.391 USD | vCPU:4 メモリ:7.5 GiB |
c4.2xlarge | 0.783 USD | vCPU:8 メモリ:15 GiB |
c4.4xlarge | 1.564 USD | vCPU:16 メモリ:30 GiB |
r4.large | 0.250 USD | vCPU:2 メモリ:15.25 GiB |
r4.xlarge | 0.500 USD | vCPU:4 メモリ:30.5 GiB |
r4.2xlarge | 0.990 USD | vCPU:8 メモリ:61 GiB |
r4.4xlarge | 1.980 USD | vCPU:16 メモリ:122 GiB |
r4.8xlarge | 3.970 USD | vCPU:32 メモリ:244 GiB |
追加のログストレージ
一時領域として利用されるレプリケーションストレージ(スワップ空間、レプリケーションログ、およびデータキャッシュ用)は、以下の料金を支払うことで拡張することができます※3。なお、ストレージには汎用SSD(gp2)が利用されます。
- 月額 1 GB あたり 0.138 USD
データ転送
ソースデータベースを、アベイラビリティーゾーンやリージョンの異なるターゲットデータベースや AWS 外のデータベースに移行する場合は、標準 AWS データ転送料金が必要となります。(AWS Database Migration Service へのデータ転送はすべて無料です。また、同じアベイラビリティーゾーン内の Amazon RDS や Amazon EC2 インスタンスのデータベースと AWS Database Migration Service との間のデータ転送も無料です。)
まとめ
AWS DMS についてまとめました。従来のデータベース移行は、重要な作業ではあるものの環境の構築や調整等でかかる時間や労力が多く、大変な作業でした。それに対して AWS DMS は、移行にかかるコストや労力を大幅にカットできる便利なサービスです。もしデータベースの移行方法について検討する機会があれば、有力な選択肢の一つとして AWS DMS の使用を検討してみても良いかもしれません。
<注釈>
※1 … サポートされているデータベースについて
AWS DMS は、Oracle、Microsoft SQL Server、MySQL、MariaDB、PostgreSQL、Db2 LUW、SAP、MongoDB、Amazon Aurora など幅広いデータベースに対応しています。
※2 … AWS Schema Conversion Tool とは
AWS Schema Conversion Tool は、ソースデータベースのスキーマやコードを自動的にターゲットデータベースの互換フォーマットに変換するツールです。AWS DMS に含まれているため、無料で使用することができます。なお、自動で変換できない場合は、手動で変換を行う必要がある箇所すべてに明示的なマークが付けられます。
※3 … 追加のログストレージについて
T2には 50 GB の GP2 ネットワーク接続ストレージが、C4やR4には 100 GB の GP2 ネットワーク接続ストレージが含まれています。ここからさらにストレージを拡張する場合に、追加で必要な料金を記載しております。