【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は高い互換性を持ちながら、ユーザーのワークロードに応じて垂直・水平スケーリングすることが出来るため、コストを大幅に削減できることが特徴です。
最初に
Part4でターゲットとなるOracle Database(以降ターゲットDBと省略します)からPolarDB-Oへマイグレーションを完了しました。Oracle Databaseにはあって、PolarDBにはない関数とかの改修対応もスムーズに対応できました。
この記事 Part5では、PolarDB-O に対し、アプリケーションのマイグレーションと改修を行うフェーズとなります。
Oracle DatabaseからPolarDB-Oへデータベースマイグレーション後、その後どのようなアクションが適切かを追って説明します。
6.アプリケーションマイグレーションと改修
6-1.アプリケーションを収集します
6-1-1.アプリケーション収集ツールをダウンロードします
1)application collectorツールをダウンロードします
①ADAMコンソール画面でapplication collectorツールをダウンロードします
②application collectorツールをダウンロードしました
2)application collectorをアップロードします
①application collectorをアプリケーションECSにアップロードします
②application collectorを解凍します
# gunzip adam-appagent-guard.tar.gz# tar -xmvf adam-appagent-guard.tar# ls
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
今回はDemoとして一つのアプリケーションをモニタリングするため、1つのサーバー(ECS)へ導入します。デプロイ方法として設定ファイルは変更しません。
6-1-2.アプリケーションデータを収集します
1)アプリケーションが起動されることを確認します
①バクエンドでアプリケーションを起動します
# nohup ./run.sh &
②shopアプリケーションのPIDを確認します
# ps -ef | grep java
③shopアプリケーションのPIDをアタッチします
# ./attach.sh -p #{pid}
# cd /root/javaagent-package-1.2.6/javaagent# ./attach.sh -p 12943
④アプリケーションを操作します
※一定のデータを収集するために、データ収集中アプリケーションを操作します。
ECS上で構築した、アプリケーションで仮オーダー操作をします
PolarDBらデータベース側へ反映されるような操作アクションであれば、何でも良いです。以下スクリーンショットはアプリケーション上で処理完了するまでのDemo動作となります。
②収集されたデータを確認します
# 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
③収集されたデータを圧縮します
# zip appData.zip *.csv
④appData.zipをローカルにダウンロードします
# sz appData.zip
⑤ローカルにappData.zipを確認します
6-2.アプリケーションプロファイルを分析します
6-2-1.アプリケーションプロファイルを作成します
1)アプリケーションプロファイルを作成します
①アプリケーションプロファイル作成をクリックします
②プロファイル作成をクリックします
③プロファイル作成を作成します
④収集されたアプリケーションデータをアップロードします
⑤データベースプロファイルを選択します
⑥追加ボタンをクリックします
⑦プロファイル作成ボタンをクリックします
⑧アプリケーションプロファイルを作成開始します
⑨アプリケーションプロファイルを作成完了します
6-2-2.アプリケーションプロファイル分析結果を確認します
1)アプリケーションプロファイル分析概要を確認します
①Summaryを確認します
2)アプリケーションプロファイル分析概要を確認します
プロファイル詳細画面では下記情報が確認できます
- System Information(システム情報):アプリケーションのシステム情報とパフォーマンスを表示します
- Object Overview(オブジェクト概要):アプリケーションの基本操作情報
- Object Details(オブジェクト詳細):オブジェクト詳細を確認します。呼び出し情報も確認します
①System Informationを確認します
②Object Overviewを確認します
③Object Detailsを確認します
④アプリケーションプロファイル分析レポートをダウンロードします
⑤分析レポートをローカルにダウンロードします
⑥分析レポートを確認します
⑦SQL互換性情報を確認します
ここまでアプリケーションプロファイルの作成が無事完了しました。
6-3.アプリケーション評価
1)アプリケーション評価プロジェクトを作成します
①「次へプロジェクト作成」をクリックします
②アプリケーション評価プロジェクト作成をクリックします
③アプリケーション評価プロジェクトを設定します
④APPプロファイルを選択します
⑤データベースを選択します
⑥アプリケーション評価プロジェクトを作成開始します
⑦アプリケーション評価プロジェクトが作成完了しました
2)アプリケーション評価プロジェクト詳細を確認します
①詳細画面を開きます
②評価結果を確認します
③プロジェクト概要を確認します
④プロファイルを確認します
⑤レポートをダウンロードします
⑥レポートを解凍します
⑦レポート内容を確認します
6-4.データベースマイグレーションに伴うアプリケーションの改修
このStepは、データベースマイグレーションに伴う接続先変更など、既存アプリケーションを一部改修するフェーズとなります。例えばjdbcドライバー変更、SQLクエリの対応、待ち時間設定etc....
そのため、お持ちのアプリケーション構造など、必要に応じてこのStepを実施するなり、Skipしても問題ないです。
6-4-1.アプリケーションを開きます
1)今回のデモ改修プロジェクトは下記のリンクからダウンロードできます
app polardb link
2)IntelijIDEAでプロジェクトを開きます
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>
②jdbc.propertiesを改修します
改修前
jdbc.driver=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@//172.16.0.96:1521/orcl11gjdbc.user = shoptestjdbc.password = shoptest
改修後(jdbc.urlでスキーマは大文字で正しくしてください)
jdbc.driver=com.edb.Driverjdbc.url=jdbc:edb://pc-0iw446wg8ov2y7ul0.o.polardb.japan.rds.aliyuncs.com:1521/sbdb?currentSchema=SHOPTESTjdbc.user = sbtestjdbc.password = Test1234
今回はアプリケーションのECSはPolarDBと同じVPC上で作成するため、イントラネットエンドポイントで設定します
③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>
2)SQL改修
SQL改修機能は(2021/9/23時点で)コンソールの表示言語が中国語版のみ対応しています。
英語版は2021年10月以降に利用することができます。表示言語が異なりますが中の挙動は同じとなりますので、ここでは中国語版として改修をします。
①必要に応じてSQL改修します
3)プロジェクトをビルドします
①アプリケーションコードが改修完了したら、ビルドします
②プロジェクトを作成します
mvn clean package -DskipTests
6-4-3.アプリケーションをデプロイします
1)新しいサーバー環境を作成します(作成方法はここでは省略します)
①PolarDBインスタンスのVPCを確認します
②ECSを作成します
移行前のECSと同じ仕様で作成します
③ECSを接続します
2)ECSでjava環境を設定します
①Javaをインストールします
# yum install java -y
②Javaバージョンを確認します
# java -version
3)lrzszをインストールします
# yum install lrzsz
4)アプリケーションJarをECSにデプロイします
①ターゲットJarファイルをアップロードします
# rz# ls
②Jarファイルを解凍します
# gunzip shop-1.0.0-SNAPSHOT-release.tar.gz# ls# tar -xvmf shop-1.0.0-SNAPSHOT-release.tar# ls
4)アプリケーションサイトを起動します
①PolardbインスタンスにECSのホワイトリストを追加します
②下記コマンドでアプリケーションを起動します
# cd shop# ./run.sh
5)下記のアプリケーションサイトをアクセスします
①アプリケーションサイトをアクセスします
http://47.74.57.81/index.action
②オーダーを作成します
このDemoは中国語で作られたため、キャプチャーは中国語で表示されています
ここまでアプリケーションのマイグレーションが無事完成しました。
最後に
以上、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