AWS SCTを利用したDB移行でハマった箇所と対処方法

これはなに?

TeradataからRedshiftへの移行検証をしている際にSCTを利用したのですが、いくつかハマったところがあったのでその対象方法についての備忘録です。

検証の際に利用したAWS公式手順は以下です。
オンプレミスのデータウェアハウスから Amazon Redshift - AWS Schema Conversion Tool

環境

  • OS: WindowsServer2019
  • SCT及びデータ抽出エージェントどちらも同じサーバーにインストール

ハマったところ

① データ抽出エージェントの起動ファイルの場所が不明

WindowsServerにデータ抽出エージェントインストールしたのですが、スタートファイルの場所がわからず結構ハマりました。
AWSの公式手順には、以下の記述しかなくてどこにあるのですかと、、、

StartAgent.bat バッチファイルをダブルクリックします。

【ファイル格納場所】
C:\Program Files\AWS SCT Data Extractor Agent\

② データ抽出エージェントが起動しない

StartAgent.batを実行するとタスクスケジューラに「sct-extractor」というタスクが登録され、1分に一回jarを実行しているみたいでした。
ただ、私の環境だとタスクに登録されているコマンドがコケていたみたいで、いつまで立ってもでデータ抽出エージェントが起動してきませんでした。(javaログではconnection refuseがでてました。)
タスクの実行ユーザー変更したり、最上位で実行するにチェックを入れてみたけど結果変わらず。

【対処方法】
タスクスケジューラに登録されているコマンドをコマンドプロンプトで実行する

以下のタブからコマンドは確認できます。
f:id:ykoomaru:20201211232209p:plain

たぶん、権限周りの問題っぽいので根本的な対処方法はありそう。

③ データ抽出タスクが「Extract Only」以外実行できない

これも権限周りの問題っぽいのですが、データ抽出タスクで「Extract and Upload 」か「Extract, Upload and Copy」を選んでタスクをStartボタンをクリックするとタスクが実行されず、ログにも何も残らないという現象が起きました。 「Extract Only」であれば、正常に動作していました。

【対処方法】
「Extract LOBs」のチェックを外す

環境依存っぽいのでなんとも言えないんですが、LOBsの抽出を無効化したところ正常に「Extract and Upload 」と「Extract, Upload and Copy」のどちらも正常にタスクを実行できるようになりました。

f:id:ykoomaru:20201215080727p:plain

LOBって聞いたことなかったのですが、DBを通常運用していれば使ってないので、利用してなくても問題なさそう。 無効化した状態で移行後にソースとターゲットの件数比較したところ一致していました。

バイナリ・ラージ・オブジェクトとは、データベース管理システムにおいてバイナリデータを格納する場合のデータ型である。画像や音声、その他のマルチメディアオブジェクトがBLOBとして格納される。

<20210101 追記>
原因と一つとして、ソースDBのスペックに問題がありそうです。 ソースDBで重いクエリが流れているときにこの現象が起きることがよくありました。
SQLが流れていないタイミングやDBのスペックを上げることで問題が解消するかもしれません。

その他 注意事項

データ抽出エージェントをインストールしているサーバーが結構負荷が高いみたいでm5.xlargeだと、抽出タスク実行時にCPU使用率100%近くで張り付いていました。本番移行する際はここがボトルネックにならないように、気をつけたほうが良さそうです。