2
1

【OCI クラウド移行ガイド】 Amazon Redshift から OCI Autonomous Data Warehouse へ移行してみた

Last updated at Posted at 2024-08-31

OCIクラウド移行ガイドとは

オンプレミスやAWSなど、複数のプラットフォームからOracle Cloud Infrastructureへの移行プロジェクトに取り組んでいるクラウドエンジニア(@araidon,@kazunishi,@yama6,@tktk2712,@ritokuna)による、OCI移行手順をまとめたシリーズ記事です。
各回、サンプルワークロードから対象サービスを取り上げ、移行手順をガイドいたします。
まとめ記事は以下になります。

移行するサービス:Amazon Redshift

今回、移行対象とするのはAmazon Redshiftです。
SQL DeveloperのAmazon Redshift移行アシスタントを用いて、Amazon RedshiftをAutonomous Data Warehouseに移行する手順を解説します。
SQL Developerでは、Amazon Redshift以外にも、MySQL Database、Microsoft SQL Server、Sybase Adaptive Server、IBM DB2、TeradataなどのOracle Databaseエンジン以外のソースDBから、Autonomous Databaseにスキーマ・オブジェクトおよびデータをコピーする機能が用意されています。

RedshiftのDBエンジンはPostgreSQLベース、Autonomous Data WarehouseはOracle Databaseですが、Amazon Redshift移行アシスタントによって自動的にDDL文を生成し、いい感じにデータ変換を行ってくれます。

移行方式

OCI Compute VM上のSQL DeveloperからAmazon Redshift,Autonomous Data Warehouseの双方に接続し、SQL DeveloperのAmazon Redshift移行アシスタント機能を使用して移行します。

image.png

前提条件

今回はデータの移行検証を目的としているため、リソースは全てパブリックアクセスすることを前提としています。本番環境の移行時には、リソースのプライベート接続考慮、両クラウド間の閉域接続を推奨いたします。AWS-OCI間のVPN接続については下記記事をご参照ください。

【OCI クラウド移行ガイド】 AWSとOCIをVPNで接続してみた
https://qiita.com/yama6/items/c188de191269cb604341

  • Redshift,Autonomous Data Warehouseに接続するための、Windows Server 2019のComputeVMがパブリックサブネット上に構築されていること
    Windows Server 2019の構築については、下記記事を参考にさせていただきました。

  • Redshiftへのパブリックアクセスを許容するVPCリソースが設定されていること
    Redshiftのパブリックアクセス設定については、下記記事を参考にさせていただきました。

移行手順

  1. ComputeにSQL Developerインストール
  2. Amazon Redshift JDBC ドライバー設定
  3. Redshift 作成
  4. 接続確認 SQL Developer→Redshift
  5. ADW 作成
  6. 接続確認 SQL Developer→ADW
  7. データインポート用のS3作成
  8. RedshiftからS3へのデータアンロードユーザ作成
  9. 移行アシスタント機能実行
  10. 移行結果確認

1. ComputeにSQL Developerインストール

Compute VMにRDP接続後、ブラウザから下記ページにアクセスします。

image.png

Windows 64-bit with JDK 11 included をダウンロードします。
image.png

※ダウンロード時に、「現在のセキュリティ設定では、このファイルをダウンロードできません。 」と表示されるので、下記手順でファイルのダウンロードを有効化してください。
[インターネット オプション] > [セキュリティ] タブ > [レベルのカスタマイズ] ボタン > [セキュリティ設定] ダイアログの「ファイルのダウンロード」 > 「有効にする」

ダウンロード後、zipファイルを解凍し、"sqldeveloper"をクリックします。

image.png

ロード完了後、SQL Developerが起動します。
image.png

SQL Developerのインストール作業は以上になります。

2. Amazon Redshift JDBC ドライバー設定

SQL DeveloperからJDBC ドライバーでRedshiftへ接続するため、設定を進めていきます。

Amazon Redshift JDBC ドライバーのダウンロード

下記ページより、「JDBC 4.2 互換ドライバーバージョン 2.1」をWindwos Serverにダウンロードし、zipファイルを解凍します。

Amazon Redshift JDBC ドライバーのプリファレンス設定

ツール→プリファレンスを選択します。

image.png

画面左のナビゲーションペインから、「データベース」→「サード・パーティJDBCドライバ」を選択します。

image.png

エントリの追加ボタンを押下し、ダウンロード&解凍したフォルダから、"redshift-jdbc42-2.1.0.29.jar" を選択します。

image.png

エントリ登録されたことを確認したら、OKボタンを押下します。

image.png

設定確認

画面左の「接続」→「新規データベース接続」を押下します。
image.png

Amazon Redshift JDBC ドライバーを設定したことで、「データベースのタイプ」タブを選択した際に、"Amazon Redshift"が表示されるようになります。

image.png

ドライバーの設定作業は以上になります。
移行対象のRedshiftを作成し、ここから繋げられるか確認していきましょう。

3. Redshift 作成

下記手順を参考に、Redshiftを作成します。

以下、手順との変更点のみ記載します。

ノードの種類はdc2.large、ノード数は1に設定しました。

image.png

作成時にデータを入れるため、「サンプルデータをロード」にチェックを入れます。
自動的にTICKETというサンプルデータベースが作成されます。

image.png

SQL Developerからの簡易的な接続を考慮し、管理者パスワードは手動追加を選択しています。

image.png

追加設定「デフォルトを使用」のタブをオフにし、VPCの設定をします。
今回は、Redshift へのパブリック接続を許可するために「[パブリックにアクセス可能] をオンにする」にチェックを付けます。

image.png

クラスターサブネットグループは、AZが異なる3つのパブリックサブネットを登録しています。
image.png

あとは作成ボタンを押下し、Redshiftが作成されたことを確認します。

image.png

コンソール画面から、タブ「データベース」を選択し、「データベース接続」からデータベース名、ユーザ名を入力し、「接続」ボタンを押下するとスキーマ情報が確認できます。

image.png

TICKETデータベースを構成するテーブルを確認することができました。
次に、SQL Developerからも接続を確認していきましょう。

4. 接続確認 SQL Developer→Redshift

画面左の「接続」→「新規データベース接続」を押下します。
image.png

「データベースのタイプ」タブを開き、"Amazon Redshift"を選択します。

image.png

Nameにredshift(任意文字列入力)、Redshiftを作成した際に設定したユーザー名、パスワードを入力します。

image.png

Amazon Redshift JDBC URLは、Redshiftのコンソール画面から文字列を取得し、入力します。

image.png

接続ボタンを押下します。
接続に成功すると、画面左の接続ナビゲーションに、redshiftが追加されます。

image.png

接続に失敗する場合は、「[パブリックにアクセス可能] をオンにする」チェックが付いているか、Redshiftで設定したサブネットグループを構成するサブネットがインターネットゲートウェイにルートがあるか、セキュリティグループがRedshiftの接続ポート5439でインバウンドが許可されているかを確認してください。

Redshift作成時に自動ロードしたデータが格納されていることも確認できます。

image.png

移行元であるRedshiftの準備作業は完了です。
次に、移行先であるAutonomous Data Warehouseを作成していきます。

5. Autonomous Data Warehouse の作成

下記手順に従ってAutonomous Data Warehouseを作成します。

ワークロード・タイプには、分析系システムを対象とするAutonmous Data Warehouse (ADW)を選択します。

image.png

データベース・バージョンは19cを選択しました。

image.png

ネットワーク・アクセスは、「許可されたIPおよびVCN限定のセキュア・アクセス」を選択し、IPアドレスには、事前に立てたWindows ServerのComputeVMが持つパブリックIPを指定しました。

image.png

Autonomous Databaseの作成 ボタンを押下し、プロビジョニングの完了を確認します。

image.png

Autonomous Data Warehouseの作成作業は以上です。

6. 接続確認 SQL Developer→ADW

SQL DeveloperからAutonomous Data Warehouseへの接続を確認します。

事前準備:クラウド・ウォレットのダウンロード

SQL Developerから接続する際に、クラウド・ウォレットが必要となります。
OCIコンソール ADWの詳細画面から、「データベース接続」を押下し、Windows Server上にウォレットをダウンロードします。

image.png

SQL Developerからの接続

画面左の「接続」→「新規データベース接続」を押下します。
image.png

「データベースのタイプ」タブが "Oracle"に設定されていることを確認します。
接続タイプのタブを押下し、「クラウド・ウォレット」を選択します。
「構成ファイル」フィールドの「参照」ボタンをクリックし、事前準備でダウンロードしたクラウド・ウォレットのzipファイルを選択します。
ユーザ名、パスワードに、ADWを作成した際のユーザ名、パスワードを入力します。

image.png

接続ボタンを押下し、画面左の「接続」にADWが追加されたことを確認します。

image.png

接続に失敗する場合は、「許可されたIPおよびVCN限定のセキュア・アクセス」にて設定したIPアドレスに、SQL Developerを操作しているWindows ServerのパブリックIPが設定されているかを確認してください。

以上でADWの接続確認は完了です。いよいよ本題の、RedshiftからADWへデータベースを移行作業に移ります。

7. データインポート用のS3作成

ADWからRedshiftに直接アクセスすることはできないため、移行データを格納するためのステージング環境として、S3が必要となります。
下記の手順に従ってS3を作成します。

今回は、パブリックアクセスをONにしています。
移行アシスタント利用時にこのS3のバケット情報が必要となります。(後述)

8. RedshiftからS3へのデータアンロードユーザ作成

目的

移行アシスタントを実行すると、RedshiftがS3へデータをアンロードします。
このとき、移行アシスタントが本処理の実行権限を持つ必要があります。
移行アシスタントからS3へのデータアンロード操作実行権限はIAMユーザの資格情報を用います。
というわけで、S3アクセス権限を持つIAMユーザを作成していきます。

IAMグループの作成

下記を参考に、"adw"という名前のIAMグループを作成します。

IAMユーザの作成

下記を参考に、"adwuser"という名前のIAMユーザを作成します。

image.png

IAMグループへのユーザ追加

image.png

作成したadwグループにユーザを追加します。
最期に、「ユーザを作成」ボタンを押下します。

資格情報(アクセスキー、シークレットアクセスキー)の設定

ユーザ作成後、ユーザー一覧から"adwuser"を選択し、「セキュリティ認証情報」のタブを押下します。
「アクセスキー」フィールドの「アクセスキーを作成」ボタンを押下します。
image.png

「その他」を選択し、「次へ」ボタンを押下します。
image.png

説明タグ値には適当な文字列を入力し、「アクセスキーを作成」ボタンを押下します。
作成後表示される「アクセスキー」と「シークレットアクセスキー」をメモします。

インラインポリシーの作成

「許可」タブを押下し、「許可の追加」ボタンを押下して「インラインポリシーの追加」を選択します。

image.png

サービスの選択で"S3"を選択します。
「すべての S3 アクション (s3:*)」にチェックを入れ、「リソース」で「すべて」を選択します。
「次へ」ボタンを押下し、ポリシー名に適当な文字列を入力します。

image.png

「ポリシーの作成」ボタンを押下します。
以上でユーザ作成作業は完了です。

9. 移行アシスタント機能実行

SQL Developerに戻り、先ほど作成したユーザ権限で移行アシスタント機能を実行していきます。

移行画面の表示

ツール→移行→クラウド移行を選択します。

image.png

すると、RedshiftからAutonomous Data Warehouseへの移行画面が表示されます。

image.png

プロパティの入力と選択

項目 入力設定値
接続 redshiftを選択
選択したスキーマ 「使用可能なスキーマ」から"public"を >ボタンで選択
データを含める チェックを入れる
AWSアクセスキー 「資格情報(アクセスキー、シークレットアクセスキー)の設定」で取得したアクセスキー
AWS秘密アクセス 「資格情報(アクセスキー、シークレットアクセスキー)の設定」で取得したシークレットアクセスキー
S3バケットURI 「データインポート用のS3作成」で作成したS3のバケットURI *

今回一番のトラップはS3バケットのURI形式でした。

S3バケットURIは下記形式に従います。

S3バケットURIの形式
https://s3.リージョン名.amazonaws.com/バケット名

S3バケットURI形式について
下記ドキュメントでは、「https://s3-リージョン名.amazonaws.com/バケット名」 となっていますが、この形式で実行するとスキーマ・オブジェクトは移行できてもデータだけ移行できない結果となりました。

Autonomous DatabaseへのAmazon Redshiftの移行
https://docs.oracle.com/ja-jp/iaas/autonomous-database-serverless/doc/migrating-amazon-redshift.html#GUID-37FF7BD6-E52C-4ECB-912D-5614B62B4CCE

s3のあとの -(ハイフォン)を .(ドット)に読み替える必要があります。

image.png

「次へ」ボタンを押下します。

ターゲット情報確認

移行アシスタントを実行すると、移行のためにSQLDEV_MIGREPOSという内部ユーザが作成されます。

image.png

移行オプションで「今すぐ移行」にチェックを入れます。
「次へ」ボタンを押下します。

image.png

「終了ボタン」を押下すると、移行アシスタントが実行されます。

image.png

ポップアップにてRedshiftMigrationTaskは9段階で実行されます。
9/9が完了したら実行自体は終了です。

実行ログ確認

実行ログは、ステップ2/3で画面表示されたディレクトリにフォルダが生成され、格納されます。
"redshift_migration_reportYYYY-MM-DDTHH-MM-XX.XXXXXXXXZ" ファイルを確認します。

This is a generated Redshift Migration Report file 'redshift_migration_report'.
______________________________________________________________

______________________________________________________________
OPERATION ID      : 8
LOGFILE TABLE     : COPY$8_LOG
BADFILE TABLE     : COPY$8_BAD
SOURCE SCHEMA     : public
TARGET SCHEMA     : PUBLIC_
SOURCE TABLE      : category
TARGET TABLE      : CATEGORY
SOURCE TABLE ROWS : 11
TABLE ROWS LOADED : 11
ERROR MESSAGE     : null
STATUS            : COMPLETED
START TIME        : 2024-08-31 13:27:50.816938
END TIME          : 2024-08-31 13:27:54.874944
______________________________________________________________
…

上記のようにテーブルごとにログが出力されます。
スキーマ名を比べてみると、ソーススキーマが"public"であったことに対し、ターゲットスキーマは"PUBLIC_"に変換されていることがわかります。
SOURCE TABLE ROWSとTABLE ROWS LOADEDの行数が一致し、STATUSがCOMPLETEDになっていればツール実行は成功です。

10. 移行結果確認

Redshift,ADWそれぞれで対応するテーブルに対して、下記の同じSQLを実行します。

Redshift
select * from public.users;

image.png

ADW
select * from public_.users;

image.png

RedshiftからADWへ同じ内容のデータが移行されていることが確認できました。

おわりに

SQL DeveloperからRedshiftとADWの双方に繋いでさえしまえば、ソースとターゲットの設定だけで簡単に移行できることが実感できました。プラットフォームが異なるサービスでも、共通のViewerでデータを確認できるので便利です。
この移行アシスタントでは、他のDBエンジンからAutonomous Databaseへの移行機能も提供しています。次回以降、SQL Serverなどの移行を試してみたいと思います。

参考

2
1
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
2
1