goodbyegangsterのブログ

備忘録的な

AWS Schema Conversion Tool(SCT)を利用して、DBのObject定義情報を移行する

AWS Schema Conversion toolとは、異なるDBMS間でテーブルやビューなどのObject定義の移行を補佐してくれるサービスとなります。今回は、Oracle DBからRedshiftへのテーブル定義移行方法を、SCTのインストールから確認してみます。

参考にした公式資料は、このあたりです。

Amazon Redshift を使用したデータウェアハウススキーマの AWS Schema Conversion Tool への変換

環境情報

  • Windows Server 2016 DataCenter
  • AWS Schema Conversion Tool Version 1.0 Build 631
  • Oracle Database 12.02
  • Redshift 1.0.9865

AWS Schema Conversion Toolのインストール

SCTとは、いわゆるSaaSではなく、Javaで書かれたスタンドアローンアプリケーションとなっているので、以下のマニュアルを参考に、SCTをWindows Serverにインストールします。インストール先は、SourceとTargetのDatabaseへ接続可能なネットワークにある、Windowsmac/またはX WindowをもったLinux系の端末であればOKです。

公式資料。

AWS Schema Conversion Tool のインストール、検証、更新

インストールモジュールのダウンロード

まずはインストールモジュールをダウンロードします。ダウンロードURLはこちら。

https://s3.amazonaws.com/publicsctdownload/Windows/aws-schema-conversion-tool-1.0.latest.zip

Powershellの場合。

PS > Invoke-WebRequest -Uri https://s3.amazonaws.com/publicsctdownload/Windows/aws-schema-conversion-tool-1.0.latest.zip -OutFile C:\Users\masteruser\Desktop\aws-schema-conversion-tool-1.0.latest.zip

インストールモジュールのchecksumの確認

ダウンロードしたzipファイルのchecksumを確認します。AWSにて提示している各OS毎のchecksumの値は、SHA256で以下となっています。

Fedora 3b917d759ff54d4367cbd4ca8243e655579428616e6a03daa2f53c0b64d2f4ae

Ubuntu 91abaf13e5a32a5a2af3bbbb4a2da4860eba7a3efbe726f4c6dc08355226e70b

Windows f86c994051cedd486ac6fde10006b719cdafe3405555e4f3ab5ffb8e4753f350

MacOs 26db091e0d0a87a52bf4972ad152fda02321208ee1065dfb9467a8bc193b204f

上記情報は、以下で公開されています。

https://d2fk11eyrwr7ob.cloudfront.net/sha256Check.txt

Powershellでは、 Get-FileHash というコマンドレットがchecksum用として用意されています。

PS > Get-FileHash "C:\Users\masteruser\Desktop\aws-schema-conversion-tool-1.0.latest.zip" -AlgorithmSHA256 | Format-List

Algorithm : SHA256
Hash      : F86C994051CEDD486AC6FDE10006B719CDAFE3405555E4F3AB5FFB8E4753F350
Path      : C:\Users\masteruser\Desktop\aws-schema-conversion-tool-1.0.latest.zip

Get-FileHash

Hash値に差異ないことを確認します。

また、zip内にあるmsiファイル AWS Schema Conversion Tool-1.0.631.msi のプロパティから、デジタル署名の値が Amazon Services LLC となっていることを確認。

f:id:goodbyegangster:20191007231516p:plain

インストール

Windowsの場合、msiファイルを実行すると、自動的にインストールが始まります。インストール完了後、 AWS Schema Conversion Tool というアプリケーションが入っているので、起動すると以下のようなウィンドウが表示されます。

f:id:goodbyegangster:20191007231537p:plain

接続先DBMS用のJDBCドライバーの用意

SourceとなるOracle DB用と、TargetとなるRedshift用の、JDBCドライバーをそれぞれのサイトからダウンロードして、SCTに登録します。

JDBCドライバーのダウンロードURLは、下記のAWS側のマニュアルに記載されています。

必要なデータベースドライバのインストール

しかしながら、上記マニュアルにOracle DB用として記載されている ojdbc7.jar バージョンのJDBCドライバーでは、Oracle DB 12.02が未サポートであり、且つ、そもそもSCT側でもドライバー登録設定ができなかったため、ojdbc8.jar のバージョンをダウンロードしています。

Windowsサーバ上の、適当なPathに配置しておきます。今回はこんな感じ。

PS > tree /F C:\jdbc_driver
フォルダー パスの一覧
ボリューム シリアル番号は 14B8-E138 です
C:\JDBC_DRIVER
├─oracle
│      ojdbc8.jar
│
└─redshift
        RedshiftJDBC42-no-awssdk-1.2.34.1058.jar

上記配置したJDBCドライバーを、SCTに登録してあげます。SCTの画面ツールバーにて、「Settings」「Grobal Settings」とクリック。表示されたウィンドウの左ペインより「Dirvers」を選択すると、JDBCドライバー登録画面となります。こんな感じに登録。

f:id:goodbyegangster:20191007231605p:plain

Conversion Reportの作成

object変換処理を実施する前に、移行可否の判断するためのレポート(Conversion Report)を作成します。尚、SCTは無料で利用できるので、DBの移行を強く計画していなくとも、移行する場合の作業コストを見積もるために、レポートだけを作成するのは全然有りだと思います。

新しいSCT Projectの作成

Conversion Reportを作成するには、まずSCTにProjectを作成して、SourceとTargetへの接続定義を作成する必要があります。

Projectを作成するには、「File」「New Project」と選択。ウィンドウが表示されるので、必要情報を以下の通り入力して「OK」をクリックします。今回の環境では下記みたく。

f:id:goodbyegangster:20191007231620p:plain

Project内の細かい設定を確認/変更します。「Settings」「Project Settings」と選択。下記ウィンドウが表示されるので、各値を確認します。ここで設定した値/戦略により、Redshiftで利用する分散スタイル/Sort Keyカラムが判断されることになります。実際の処理の方法としては、一度レポートを作成して生成されたCreate Table等のDDLを確認、不本意な点ある場合に設定を見直す/または手動で直してしまう、といった流れとなります。

AWS Schema Conversion Tool を使用する最適化戦略とルールの選択

f:id:goodbyegangster:20191007231637p:plain

f:id:goodbyegangster:20191007231700p:plain

f:id:goodbyegangster:20191007231708p:plain

f:id:goodbyegangster:20191007231705p:plain

ツールバーの「Connect to Oracle DW」をクリックすると、以下のウィンドウが表示されるので、接続情報を入力します。

f:id:goodbyegangster:20191007231728p:plain

接続できると、SCTウィンドウの左ペインにSource Databaseの情報が表示されるようなります。

AWS Schema Conversion Tool ソースとしての Oracle の使用

ツールバーの「Connect to Amazon Redshift」をクリックすると、以下のウィンドウが表示されるので、接続情報を入力します。

f:id:goodbyegangster:20191007231743p:plain

接続できると、SCTウィンドウの右ペインにTarget Databaseの情報が表示されるようなります。

Conversion Reportの作成

レポートを作成する前に、評価対象としたいDBの統計情報をSCT側が保持する必要があります。Source Databaseを表示している左ペイン部分にて、移行したいSchemaを右クリック、「Collect Statistics」を選択します。以下、公式手順。別途アップロードする方法も用意されています。

(AWS Schema Conversion Tool の統計の収集またはアップロード)https://docs.aws.amazon.com/ja_jp/SchemaConversionTool/latest/userguide/CHAP_Converting.DW.html#CHAP_Converting.DW.Statistics

統計を取得できた後、Source Databaseを表示している左ペイン部分にて、移行したいSchemaを右クリック、「create report」を選択すると、レポートの作成が始まります。

データベース移行評価レポートの作成

収集したレポートはSCT用端末上のProjectフォルダに保存される事となります。そのProjectフォルダを他端末にコピーすることで、その端末上でも作成したレポートを表示することができるようになります。その端末は、SourceやTarget Databaseに接続できなくとも問題ないので、そんな形で共有をしていくと便利です。

CoversionされたDDLの作成

Source Database上のObject定義を、Target Database上のObject定義に変換する処理、具体的にはRedshiftに対して実行するCreate TableのDDL文を作成するプロセスとなります。

Mapping Ruleの作成

まず、スキーマやテーブル名などを変更してDDLを作成したい場合、そのための機能が用意されています。SCT画面のツールバーより「Setting」「Mapping Rules」と選択、表示されるウィンドウで変換したいルールを定義してあげます。下記の例では、 ADMIN というスキーマ名を sample という名前に変換して、DDLを作成するルールとなります。

f:id:goodbyegangster:20191007231758p:plain

AWS Schema Conversion Tool でマッピングルールを作成する

DDLの作成

で、実際にDDLを作成する手順です。左側ペインのSource Database側ツリーより、DDLを作成したいObjectを右クリック、「convert schema」を実行すると、DDL作成処理を実行してくれます。右側ペインのTarget Database側ツリーに、変換された定義情報が表示されるようなります。

下がサンプル画面。中央ペインの、上がSource Databaseの定義、下がTarget Databaseの定義となります。

f:id:goodbyegangster:20191007232049p:plain

AWS Schema Conversion Tool を使用してスキーマを変換する

Target Database側の、「Key management」というタブにて、選択されているRedshiftの分散スタイル/Sort Keyの詳細を確認できます。この点で満足できない情報が選択されている場合、前述の「Project Setting」の値を見直すことになります。

f:id:goodbyegangster:20191007231905p:plain

AWS Schema Conversion Tool のキーの管理とカスタマイズ

作成されたDDLを手動で変更することも可能です。具体的な方法は以下のマニュアルにて。

AWS Schema Conversion Tool での手動変換の処理

AWS Schema Conversion Tool での変換されたスキーマの更新および再読み込み

基本的には、SCTにて作成された定義を何も確認せずに鵜呑みにしないで、すべて一度は確認すべきと思っています。

DDLの適用

最後に、作成したDDLをTarget Databaseに反映させるプロセスとなります。

右側ペインのTarget Databaseツリー内から反映させたいオブジェクトを右クリック、「Apply to Database」と選択することで反映処理がなされます。

AWS Schema Conversion Tool での変換されたスキーマの保存および適用

SCTより反映させる他、SCTで作成したDDLはダウンロードすることが可能なので、別途DB Clientツール上から手動で対象DBに反映させることも可能です。