PolarDB-OマイグレーションPart5

作成日:2021-09-23

【PolarDBマイグレーションシリーズ】Oracle DatabaseからPolarDB-Oマイグレーション-Part5 アプリケーションマイグレーションと改修

はじめに

本記事では、Oracle DatabaseからPolarDB-Oマイグレーション-Part5 アプリケーションマイグレーションと改修 についてを紹介します。
こちら長文になるので、全部でPart5に分けて紹介します。

Part1 OracleDatabaseセットアップ、事前準備
Part2 Oracle Database評価
Part3 データベースマイグレーション準備
Part4 データベースマイグレーション実行
Part5 アプリケーションマイグレーションと改修 ←本記事です

PolarDBとは

PolarDBはAlibaba Cloudが開発したCloud Native Databaseサービスです。MySQL・PostgreSQLは100%、Oracleは高い互換性を持ちながら、ユーザーのワークロードに応じて垂直・水平スケーリングすることが出来るため、コストを大幅に削減できることが特徴です。

img

img

img

最初に

Part4でターゲットとなるOracle Database(以降ターゲットDBと省略します)からPolarDB-Oへマイグレーションを完了しました。Oracle Databaseにはあって、PolarDBにはない関数とかの改修対応もスムーズに対応できました。
この記事 Part5では、PolarDB-O に対し、アプリケーションのマイグレーションと改修を行うフェーズとなります。
Oracle DatabaseからPolarDB-Oへデータベースマイグレーション後、その後どのようなアクションが適切かを追って説明します。

img

6.アプリケーションマイグレーションと改修

6-1.アプリケーションを収集します

6-1-1.アプリケーション収集ツールをダウンロードします

1)application collectorツールをダウンロードします

①ADAMコンソール画面でapplication collectorツールをダウンロードします

img

img

img

②application collectorツールをダウンロードしました img

2)application collectorをアップロードします
①application collectorをアプリケーションECSにアップロードします
img

②application collectorを解凍します

# gunzip adam-appagent-guard.tar.gz
# tar -xmvf adam-appagent-guard.tar
# ls

img

img

img

3)application collectorの設定
application collectorは「Collector」「javaagent」の二つのアプリケーションがあります。

  • javaagentはアプリケーションのデータを収集します。
  • Collectorではすべてのjavaagentアップロードしたデータを収集し保存します。

Collectorとjavaagentは1つのサーバー(ECS)へ導入、もしくはそれぞれ異なるサーバー(ECS)に導入しデプロイすることができます。中にはjavaagentは監視したいアプリケーションと同じサーバーにデプロイします。Collectorでは単独的にデプロイできます。javaagentとCollector分離デプロイする場合、javaagentの設定ファイルを変更する必要があります。
javaagentの設定ファイルの修正方法は次の通りです。

vim /root/javaagent-package-1.2.6/javaagent/javaagent.config

img

img

今回はDemoとして一つのアプリケーションをモニタリングするため、1つのサーバー(ECS)へ導入します。デプロイ方法として設定ファイルは変更しません。

6-1-2.アプリケーションデータを収集します

1)アプリケーションが起動されることを確認します
①バクエンドでアプリケーションを起動します

# nohup ./run.sh &

img

②shopアプリケーションのPIDを確認します

# ps -ef | grep java

img

③shopアプリケーションのPIDをアタッチします

# ./attach.sh -p #{pid}
# cd /root/javaagent-package-1.2.6/javaagent
# ./attach.sh -p 12943

img

④アプリケーションを操作します
※一定のデータを収集するために、データ収集中アプリケーションを操作します。

ECS上で構築した、アプリケーションで仮オーダー操作をします
PolarDBらデータベース側へ反映されるような操作アクションであれば、何でも良いです。以下スクリーンショットはアプリケーション上で処理完了するまでのDemo動作となります。
img

img

img

img

②収集されたデータを確認します

# cd /root/javaagent-package-1.2.6/collector/data
# ls
# cd app/
# ls
# cd adamApp17216097/
# ls
# cd 172.16.0.97/
# ls
# cd 7001/
# ls

img

③収集されたデータを圧縮します

# zip appData.zip *.csv

img

④appData.zipをローカルにダウンロードします

# sz appData.zip

img

⑤ローカルにappData.zipを確認します

img

6-2.アプリケーションプロファイルを分析します

6-2-1.アプリケーションプロファイルを作成します

1)アプリケーションプロファイルを作成します
①アプリケーションプロファイル作成をクリックします

img

②プロファイル作成をクリックします

img

③プロファイル作成を作成します

img

④収集されたアプリケーションデータをアップロードします

img

⑤データベースプロファイルを選択します

img

⑥追加ボタンをクリックします

img

⑦プロファイル作成ボタンをクリックします

img

⑧アプリケーションプロファイルを作成開始します

img

⑨アプリケーションプロファイルを作成完了します

img

6-2-2.アプリケーションプロファイル分析結果を確認します

1)アプリケーションプロファイル分析概要を確認します
①Summaryを確認します

img

img

2)アプリケーションプロファイル分析概要を確認します
プロファイル詳細画面では下記情報が確認できます

  • System Information(システム情報):アプリケーションのシステム情報とパフォーマンスを表示します
  • Object Overview(オブジェクト概要):アプリケーションの基本操作情報
  • Object Details(オブジェクト詳細):オブジェクト詳細を確認します。呼び出し情報も確認します

①System Informationを確認します

img

②Object Overviewを確認します

img

img

③Object Detailsを確認します

img

img

img

img

img

④アプリケーションプロファイル分析レポートをダウンロードします

img

⑤分析レポートをローカルにダウンロードします

img

⑥分析レポートを確認します

img

⑦SQL互換性情報を確認します

img

ここまでアプリケーションプロファイルの作成が無事完了しました。

6-3.アプリケーション評価

1)アプリケーション評価プロジェクトを作成します

①「次へプロジェクト作成」をクリックします

img

②アプリケーション評価プロジェクト作成をクリックします

img

③アプリケーション評価プロジェクトを設定します

img

④APPプロファイルを選択します

img

⑤データベースを選択します

img

⑥アプリケーション評価プロジェクトを作成開始します

img

⑦アプリケーション評価プロジェクトが作成完了しました

img

2)アプリケーション評価プロジェクト詳細を確認します
①詳細画面を開きます

img

②評価結果を確認します

img

img

img

③プロジェクト概要を確認します

img

④プロファイルを確認します

img

⑤レポートをダウンロードします

img

img

⑥レポートを解凍します

img

⑦レポート内容を確認します

img

img

6-4.データベースマイグレーションに伴うアプリケーションの改修

このStepは、データベースマイグレーションに伴う接続先変更など、既存アプリケーションを一部改修するフェーズとなります。例えばjdbcドライバー変更、SQLクエリの対応、待ち時間設定etc....
そのため、お持ちのアプリケーション構造など、必要に応じてこのStepを実施するなり、Skipしても問題ないです。

6-4-1.アプリケーションを開きます

1)今回のデモ改修プロジェクトは下記のリンクからダウンロードできます
app polardb link

img

2)IntelijIDEAでプロジェクトを開きます

img

6-4-2.データベースマイグレーションに伴うアプリケーションの改修

1)コンフィグファイルを改修します
①アプリケーションのJDBCドライバー(pom.xml)を改修します
ソースアプリケーションとしてOracle DatabaseのDriver packageを使用しているので、マイグレーション後はPolarDBのDriver packageに変更します

<dependency>
<groupId>edb</groupId>
<artifactId>edb.driver</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/driver/edb.driver.jar</systemPath>
</dependency>

img

②jdbc.propertiesを改修します
改修前

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@//172.16.0.96:1521/orcl11g
jdbc.user = shoptest
jdbc.password = shoptest

改修後(jdbc.urlでスキーマは大文字で正しくしてください)

jdbc.driver=com.edb.Driver
jdbc.url=jdbc:edb://pc-0iw446wg8ov2y7ul0.o.polardb.japan.rds.aliyuncs.com:1521/sbdb?currentSchema=SHOPTEST
jdbc.user = sbtest
jdbc.password = Test1234

今回はアプリケーションのECSはPolarDBと同じVPC上で作成するため、イントラネットエンドポイントで設定します

img

img

③applicationContext.xmlを改修します

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>

img

2)SQL改修
SQL改修機能は(2021/9/23時点で)コンソールの表示言語が中国語版のみ対応しています。
英語版は2021年10月以降に利用することができます。表示言語が異なりますが中の挙動は同じとなりますので、ここでは中国語版として改修をします。

①必要に応じてSQL改修します

img

3)プロジェクトをビルドします
①アプリケーションコードが改修完了したら、ビルドします

img

img

②プロジェクトを作成します

mvn clean package -DskipTests

img

img

img

6-4-3.アプリケーションをデプロイします

1)新しいサーバー環境を作成します(作成方法はここでは省略します)
①PolarDBインスタンスのVPCを確認します

img

②ECSを作成します
移行前のECSと同じ仕様で作成します

img

③ECSを接続します

img

2)ECSでjava環境を設定します
①Javaをインストールします

# yum install java -y

img

②Javaバージョンを確認します

# java -version

img

3)lrzszをインストールします

# yum install lrzsz

img

4)アプリケーションJarをECSにデプロイします
①ターゲットJarファイルをアップロードします  

# rz
# ls

img

②Jarファイルを解凍します

# gunzip shop-1.0.0-SNAPSHOT-release.tar.gz
# ls
# tar -xvmf shop-1.0.0-SNAPSHOT-release.tar
# ls

img

4)アプリケーションサイトを起動します
①PolardbインスタンスにECSのホワイトリストを追加します

img

img

②下記コマンドでアプリケーションを起動します

# cd shop
# ./run.sh

img

img

img

5)下記のアプリケーションサイトをアクセスします
①アプリケーションサイトをアクセスします

http://47.74.57.81/index.action

img

②オーダーを作成します
このDemoは中国語で作られたため、キャプチャーは中国語で表示されています

img

img

img

img

ここまでアプリケーションのマイグレーションが無事完成しました。

最後に

以上、Part1~Part5を通じて、Oracle DatabaseからPolarDB-Oへのマイグレーション手法のご紹介でした。
Oracle DatabaseからPolarDB-Oへのマイグレーションを検討されている方はご参考に頂ければ大変幸いです。

http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_001_oracle-migration-part1 http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_002_oracle-migration-part2 http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_003_oracle-migration-part3 http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_004_oracle-migration-part4 http://sbcloud.github.io/help/usecase-PolarDB/PolarDB_005_oracle-migration-part5

Hironobu Ohara
この記事を書いた人
Hironobu Ohara
Github Icon
2019年にAlibaba Cloudを担当。Databaseや収集、分散処理、ETL、検索、分析、機械学習基盤の構築、運用等を経て、現在分散系をメインとしたビッグデータとデータベースを得意・専門とするデータエンジニア。 AlibabaCloud MVP。
Close

Alibaba Cloudを始めてみましょう

ソフトバンクは、Alibaba Cloudのアカウント開設から、サービス展開までをお手伝いします。
Hatena