LoginSignup
0
0

More than 5 years have passed since last update.

AWS DMS のテーブルごとのレプリケーション状況を把握する

Last updated at Posted at 2017-11-22

AWS の Web コンソールからも Replication Task ごとの進捗状況は確認できますが、ここではコマンドラインから確認する方法について書きます。

DMS の API として DescribeTableStatistics というものが提供されています。
http://docs.aws.amazon.com/ja_jp/dms/latest/APIReference/API_DescribeTableStatistics.html

aws-cli の aws dms describe-table-statistics だと以下のような形で呼び出せます。

SYNOPSIS
            describe-table-statistics
          --replication-task-arn <value>
          [--max-records <value>]
          [--marker <value>]
          [--cli-input-json <value>]
          [--generate-cli-skeleton <value>]

こちらを実行することで、任意の Replication Task のテーブルマイグレーション状況を API から取得することができます。

aws-cli のコマンドラインから取得する場合は、あらかじめ Replication Task の ARN を取得し、そちらを指定する必要があります。

peco , jq と組み合わせる

これだけだとあっさりしすぎているので、普段使用しているコマンドラインの例として、peco と jq を組み合わせて 1-liner でインタラクティブに情報を取得する方法を例として記載します。
peco は percol でも置き換え可。

$ aws dms describe-table-statistics --replication-task-arn $(aws dms describe-replication-tasks | jq -r '.ReplicationTasks[].ReplicationTaskArn' | peco)


{
    "ReplicationTaskArn": "arn:aws:dms:........,
    "Marker": "........",
    "TableStatistics": [
        {
            "Inserts": 0,
            "LastUpdateTime": 1511333172.812,
            "FullLoadErrorRows": 0,
            "FullLoadCondtnlChkFailedRows": 0,
            "Ddls": 0,
            "TableName": "sada",
            "Updates": 0,
            "FullLoadRows": 5034633,
            "TableState": "Table completed",
            "SchemaName": "sada",
            "Deletes": 0
        },
        {
            "Inserts": 0,
            "LastUpdateTime": 1511333172.812,
            "FullLoadErrorRows": 0,
            "FullLoadCondtnlChkFailedRows": 0,
            "Ddls": 0,
            "TableName": "masashi",
            "Updates": 0,
            "FullLoadRows": 4794,
            "TableState": "Table completed",
            "SchemaName": "sada",
            "Deletes": 0
        },
(snip.)
  ]
}

こうしてあげると、複数の ReplicationTask がある場合そちらが peco 上で表示され検索可能になります。
ARN 名だけだとわかりづらいから他の情報も peco 上に出したいなど、カスタマイズはご自由に。

json2csv と組み合わせる

表形式で表示した方がデータの特性上見やすいという話もあるので、JSON の情報を CSV に変換する json2csv を使用してみます。

$ aws dms describe-table-statistics --replication-task-arn $(aws dms describe-replication-tasks | jq -r '.ReplicationTasks[].ReplicationTaskArn' | peco) | jq '.TableStatistics' | json2csv


"Inserts","LastUpdateTime","FullLoadErrorRows","FullLoadCondtnlChkFailedRows","Ddls","TableName","Updates","FullLoadRows","TableState","SchemaName","Deletes"
0,1511333082.816,0,0,0,"sada",0,5034633,"Table completed","sada",0
0,1511333082.816,0,0,0,"masashi",0,4794,"Table completed","sada",0
(snip.)

これらの情報を定期的に取得して、Datadog などにデータを流し込んだり、S3 上にファイルを設置して Athena などで検索したり、という感じで可視化を行うこともできると思います。

0
0
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
0
0