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へ接続可能なネットワークにある、Windowsかmac/または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
Hash値に差異ないことを確認します。
また、zip内にあるmsiファイル AWS Schema Conversion Tool-1.0.631.msi
のプロパティから、デジタル署名の値が Amazon Services LLC
となっていることを確認。
インストール
Windowsの場合、msiファイルを実行すると、自動的にインストールが始まります。インストール完了後、 AWS Schema Conversion Tool
というアプリケーションが入っているので、起動すると以下のようなウィンドウが表示されます。
接続先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ドライバー登録画面となります。こんな感じに登録。
Conversion Reportの作成
object変換処理を実施する前に、移行可否の判断するためのレポート(Conversion Report)を作成します。尚、SCTは無料で利用できるので、DBの移行を強く計画していなくとも、移行する場合の作業コストを見積もるために、レポートだけを作成するのは全然有りだと思います。
新しいSCT Projectの作成
Conversion Reportを作成するには、まずSCTにProjectを作成して、SourceとTargetへの接続定義を作成する必要があります。
Projectを作成するには、「File」「New Project」と選択。ウィンドウが表示されるので、必要情報を以下の通り入力して「OK」をクリックします。今回の環境では下記みたく。
Project内の細かい設定を確認/変更します。「Settings」「Project Settings」と選択。下記ウィンドウが表示されるので、各値を確認します。ここで設定した値/戦略により、Redshiftで利用する分散スタイル/Sort Keyカラムが判断されることになります。実際の処理の方法としては、一度レポートを作成して生成されたCreate Table等のDDLを確認、不本意な点ある場合に設定を見直す/または手動で直してしまう、といった流れとなります。
AWS Schema Conversion Tool を使用する最適化戦略とルールの選択
ツールバーの「Connect to Oracle DW」をクリックすると、以下のウィンドウが表示されるので、接続情報を入力します。
接続できると、SCTウィンドウの左ペインにSource Databaseの情報が表示されるようなります。
AWS Schema Conversion Tool ソースとしての Oracle の使用
ツールバーの「Connect to Amazon Redshift」をクリックすると、以下のウィンドウが表示されるので、接続情報を入力します。
接続できると、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を作成するルールとなります。
AWS Schema Conversion Tool でマッピングルールを作成する
DDLの作成
で、実際にDDLを作成する手順です。左側ペインのSource Database側ツリーより、DDLを作成したいObjectを右クリック、「convert schema」を実行すると、DDL作成処理を実行してくれます。右側ペインのTarget Database側ツリーに、変換された定義情報が表示されるようなります。
下がサンプル画面。中央ペインの、上がSource Databaseの定義、下がTarget Databaseの定義となります。
AWS Schema Conversion Tool を使用してスキーマを変換する
Target Database側の、「Key management」というタブにて、選択されているRedshiftの分散スタイル/Sort Keyの詳細を確認できます。この点で満足できない情報が選択されている場合、前述の「Project Setting」の値を見直すことになります。
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に反映させることも可能です。