LoginSignup
6
3

More than 5 years have passed since last update.

AWS DMSの検証

Posted at

前回は軽くDMSが動くかどうか調べただけだが、さらに細かい動作を検証した。

使用できるDDLについて

AWSのドキュメントによると以下のDDLが使用できる

Create table
Drop table
Rename table
Add column
Drop column
Rename column
Change column data type

全部のSQLコマンドが使用できそうに見えるが、実際にはそうではない

For information about which DDL statements are supported for a specific source or target, 
see the topic describing that source or target.
(特定のソースまたはターゲットでサポートされている DDL ステートメントについては、
そのソースまたはターゲットについて説明しているトピックを参照してください。)

MySQLが移行対象であるときの制限

以下の機能がDMSからは使用できない、重要そうなものを太字で

  • ソース

    • DDL ステートメント Truncate Partition、Drop Table、Rename Table。
    • ALTER TABLE ADD COLUMN ステートメントを使用して、テーブルの先頭または中間に列を追加します。
    • 名前に大文字と小文字の両方が含まれるテーブルから変更をキャプチャします。
    • AR_H_USER ヘッダー列。
    • 列の AUTO_INCREMENT 属性は、ターゲットデータベース列に移行されません。
    • バイナリログが標準のブロックストレージに保存されていると、変更をキャプチャします。たとえば、バイナリログが Amazon S3 に保存されていると、CDC は機能しません。
  • ターゲット

    • DDL ステートメント Truncate Partition、Drop Table、Rename Table。
    • ALTER TABLE ADD COLUMN ステートメントを使用して、テーブルの先頭または中間に列を追加します。

手元での検証結果

  • Drop Tableに関してはDMSで実行させると確かに以下のようなログが出力される
2017-02-22T01:34:20 [SOURCE_CAPTURE ]W: Cannot drop table '***'. DROP TABLE is not currently supported (mysql_endpoint_capture.c:1563)
  • また、Create Tableに関してもDMSタスクを最初から起動しない限り実行されない
  • また、これはついでだがDMSではutf8mb4のエンコーディングは使えない、utf8は使える

結論

  • DMSをレプリカツールのように使う場合、ソースはもちろんターゲットのDBのインスタンスにテーブル自体の準備が必要、そこからの更新は追ってくれる
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3