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 などで検索したり、という感じで可視化を行うこともできると思います。