データベース移行をサポートするAWS Schema Conversion Toolでアップデートがありました(2016/10/04)
西澤です。レポートが遅れましたが、データベース移行をサポートするツールであるSchema Conversion Toolのアップデートが先週あったのでご紹介してみようと思います。
- Release: AWS Database Migration Service on 2016-10-04 : Release Notes : Amazon Web Services
- AWS Schema Conversion Tool Copies Schemas and Optimizes for the Cloud
AWS Schema Conversion Toolとは?
しつこいかもしれませんが、Blackbelt資料が素晴らしいので再掲です。
SCTはDMSが対応してくれないスキーマ移行をサポートしてくれる補助的な位置付けのツールです。こちらの記事でも簡単にご紹介していますのでご確認ください。
SCTのアップデート#1(スキーマ移行時のマッピングルールをサポート)
DMS側は下記のようなテーブルマッピング機能が元々サポートされていました。
この機能を利用することで、下記のような移行対象の制御が可能です。
- selection
- include/exclude
- 一部テーブルのみを移行
- transformation
- rename
- remove-column
- convert-lowercase、convert-uppercase
- add-prefix、remove-prefix、replace-prefix
- add-suffix、remove-suffix、replace-suffix
- リネーム、大文字/小文字、接頭辞/接尾辞等の変換ルールを規定
- filter
- ste – 以下
- gte – 以上
- eq – 等しい
- between – 等しい、または 2 つの値の間
- フィルタ設定による抽出条件を追加
今回のリリースで、DMS側でサポートされているこのようなマッピングルールを、SCTでもサポートしたようです。また、これまで手動でjsonを編集する必要がありましたが、SCTで作成したマッピングルールをDMS用にエクスポートする機能もあるようです。こちらの機能についてはまだ試せていませんので、改めてご報告したいと思います。
SCTのアップデート#2(同一DBエンジン間のスキーマ移行をサポート)
太字が対応表の更新箇所です。SCTはそもそも異なるデータベースエンジン間のスキーマ移行をサポートするツールという位置付けでサービス提供が開始されたので、異なるデーターベースエンジン間でしか利用することができませんでした。今回のアップデートでSCTでこれが可能となっています。DMSだけではスキーマ定義の全てが移行できない為、同じデータベースエンジン間でもスキーマ移行をする為のツールが欲しいという要望があったのだと思います。
Source Database | Target Database |
---|---|
Microsoft SQL Server | Amazon Aurora, Microsoft SQL Server, MySQL, PostgreSQL |
MySQL | MySQL, PostgreSQL |
Oracle | Amazon Aurora, MySQL, Oracle, PostgreSQL |
Oracle Data Warehouse | Amazon Redshift |
PostgreSQL | Amazon Aurora, MySQL, PostgreSQL |
Teradata | Amazon Redshift |
What Is the AWS Schema Conversion Tool? - AWS Schema Conversion Tool
以前の記事では、mysqldumpコマンドのオプション(--no-data, -d
)を利用したmysqlのスキーマ移行手順をご紹介しましたが、今回のリリースによりSCTを利用してmysqlからmysql(aurora)へのスキーマ移行も行うことができるようになっています。
まとめ
1からテーブル定義を作成し、データ移行をするのは骨が折れる作業です。DMSとSCTは魔法のツールではありませんが、上手に利用すれば、データ移行が捗ることは間違いなしです。ぜひ活用していただきたいと思います。
ちなみにDMSの公式ドキュメントもこれまで英語のみだったはずですが、気付いたら日本語ページが公開されていました。これでマニュアルを読む作業も捗りますね。
どこかの誰かのお役に立てば嬉しいです。