フォーム読み込み中
ご覧いただきありがとうございます。ソフトバンクの結城です。
Alibaba CloudのPolarDB for PostgreSQL(Oracle互換)のv1クラスタからv2クラスタへの移行方法について紹介します。なお、本記事はPolarDB for PostgreSQL(Oracle互換)v1クラスタを利用していて、v2クラスタに移行したい、ご検討されている方向けの記事です。
PolarDB for PostgreSQL(Oracle互換)v1クラスタの性能が強化されたのがv2クラスタです。v2クラスタはv1クラスタと比較して、read / writeの性能が大幅に向上しており、より高速な処理が可能になりました。
また、同時実行、パラレルクエリ、ロジカルレプリケーションの性能もv1と比べて向上しており、最新のOracleアーキテクチャと互換性があります。
詳細についてはDifferences between PolarDB for PostgreSQL (Compatible with Oracle) 2.0 and PolarDB for PostgreSQL (Compatible with Oracle) 1.0に記載がありますのでご参照ください。
●利用プロダクト
ECS (Flask + Gunicornで作成したアプリケーションが動作)
PolarDB for PostgreSQL(Oracle互換)v1クラスタ(移行元)、v2クラスタ(移行先)
VPC
DTS (Data Transmission Service)
●移行を行う環境の構成図
●アプリケーションについて
ECS(CentOS7)上でFlask + Gunicornを使ったWebアプリケーションです。このアプリケーションはWebブラウザ上で動作しており、PolarDB for PostgreSQL(Oracle互換)の特定のテーブルに対してQueryやデータのPostをすることができます。なお、ECSはPolarDB for PostgreSQL(Oracle互換)のInternalエンドポイントを指定して通信を行っています。
●移行元DB情報
データベース名 : yuki
テーブル名 : entry
●移行方法について
今回紹介するPolarDB for PostgreSQL(Oracle互換)のv1からv2に移行する方法は、移行先のv2クラスタを事前に用意し、DTS(データ同期タスク)を使ってv1クラスタのデータをv2クラスタにデータ同期をする移行方法です。この方法はAlibaba Cloudが公開しているv1クラスタからv2クラスタへ移行する方法のベストプラクティスとなります。
Alibaba Cloud公式ドキュメント : Migrate data between PolarDB for PostgreSQL (Compatible with Oracle) clusters
●移行の流れ
<Alibaba Cloudコンソール>
① v2 クラスタの作成
② 特権ユーザ、移行先データベースの作成
③ DTSを使ってv1クラスタからv2クラスタへのデータ同期タスクを作成
④ Webアプリケーションの停止
⑤ データ同期タスクの実行
<アプリケーション側>
⑥ v2クラスタのデータ確認
⑦ v1クラスタのエンドポイントをv2クラスタのエンドポイントへ変更⑧ アプリケーションの起動
⑨ アプリケーションの動作確認
●移行時に発生する料金について
・v1クラスタの移行先としてv2クラスタを作成するため、v1クラスタの利用料金とv2クラスタの利用料金の両方が発生します。
・DTSでデータ同期タスクを使って、v1クラスタのデータをv2クラスタに移行するため、データ同期タスクの利用料金が発生します。
v1、v2とDTSの課金方式にはサブスクリプションと従量課金があります。料金については、Alibaba Cloudコンソールの購入画面または、Price Calculatorよりご確認いただけます。
●移行にあたっての注意点
・v1クラスタに対してRAMを使った権限設定を行っている場合、DTSのデータ同期では設定している権限設定情報は同期されません。このため、v1クラスタでRAMを使った権限設定をしている場合は、v2クラスタに対して再度権限設定を行う必要があります。
<Alibaba Cloudコンソールでの操作>
1 ) Alibaba CloudのPolarDBコンソールにアクセスし、左ペインの「クラスター」をクリックし、移行元のクラスタが存在するリージョンを開きます。
2 ) 「クラスタの作成」をクリックし、移行先のv2クラスタを作成します。
3 ) 各パラメータを入力し、「今すぐ購入」をクリックします。
4 ) 移行先のv2クラスタが作成されたことを確認します。
5 ) v2クラスタのインスタンスIDをクリックし、表示された画面で「アカウント管理」→ 「アカウント作成」をクリックし、特権アカウントの作成を行います。
6 ) 「データベース」の作成をクリックし、移行先のデータベースを作成します。
7 ) DTSコンソールにアクセスし、左ペインの「データ同期」をクリックし、「タスクの作成」をクリックします。
8 ) 移行元データベースと移行先データベースの情報を入力します。
9 ) ①同期するデータのチェックボックスにチェックを入れ、②で矢印ボタンをクリックし、③で移行したいデータが「選択中のオブジェクト」の欄に表示されていることを確認します。同期したいデータの選択が完了したら「次へ:詳細設定」をクリックします。
10 ) 内容を確認し「進む:データ検証」をクリックします。
※今回はデフォルト値でデータ同期タスクを作成します。必要に応じて適宜ご変更ください。
11 ) 「全データ移行」を選択し、「次:タスク設定の保存と事前チェック」をクリックします。
12 ) 同期タスクの事前チェックが行われます。事前チェックが全て成功したら「インスタンスの購入」をクリックします。
※検証に失敗した場合は、「Common error codes and troubleshooting methods」をご参照いただき、エラー原因をご確認ください。
13 ) 入力内容を確認し、インスタンスクラスを選択します。今回は同期するデータ量が少ないため「micro」を選択しますが、データ量に応じてインスタンスクラスを選択します。その後、DTSタスクを購入します。今回は、DTSタスクの購入後、すぐにデータ同期を行う「購入して起動」を選択します。DTSタスク購入後、すぐにDTSタスクの実行をしたくない場合は、「購入して保存」をクリックします。
※アプリケーションが動作している場合、データ同期タスクを実行する前に停止することをお勧めします。
14 ) データ同期タスクが作成され、タスクが実行されたことを確認します。
15 ) 「スキーマ同期」「完全データ同期」「完全検証」が完了していることを確認します。
※「スキーマ同期」「完全データ同期」「完全検証」が完了している場合は、初回の同期が完了しており、継続的に増分データの同期が行われます。
※データの量にもよりますが、今回実行した際には5分ほどで完了しました。
16 ) PolarDBコンソールに戻り、4 ) で作成したv2クラスタのインスタンスIDをクリックし、「ホワイトリスト」をクリックします。必要に応じて「IPホワイトリストの追加」を行います。
※「dtspolardb」が自動作成されますが、DTSの同期タスクで使われているため、不要であればDTS同期タスクを削除した後、 「dtspolardb」を削除してください。
17 ) アプリケーション側で指定しているPolarDBのエンドポイントをv1からv2に変更するため、v2クラスタの内部エンドポイントをコピーします。
Alibaba Cloudコンソールでの操作は以上です。
<アプリケーション環境の操作>
1 ) データ同期を行ったv2クラスタにアクセスします。
2 ) v1クラスタのデータがv2に同期されているか整合性の確認をします。(増分データが同期されていること(最終同期がされていること)を含めご確認ください)
3 ) アプリケーションが動作している環境にログインし、v1クラスタのエンドポイントをv2クラスタのエンドポイント(<Alibaba Cloudコンソールでの操作> 17 )でコピーした内容)に変更します。
4 ) アプリケーションを起動します。
アプリケーション環境での操作は以上です。
1 ) Webブラウザでアプリケーションのページにアクセスします。アクセスしてみるとWebページは正常に表示されました。
2 ) Submit Your Contentで「Korea」と入力してSubmitをクリックし、Entriesに表示されるか確認をします。実行するとEntriesにSublitしたKoreaが表示され期待する動作をしました。
3 ) v2クラスタにログインし、テーブル情報を確認します。確認すると、Koreaが追加されており、アプリケーションが正常に動作していることが分かります。
今回はPolarDB for PostgreSQL(Oracle互換)のv1クラスタのデータをDTS(データ同期タスク)を使ってv2クラスタにデータ同期させる移行方法を紹介しました。v1クラスタのデータをv2クラスタに同期させるまでの一連の操作は全てAlibaba Cloudコンソールで行うことができ、尚且つ簡単な操作で行うことができたため、とても便利でした。
PolarDB for PostgreSQL(Oracle互換)のv1クラスタをv2クラスタに移行をご検討されていましたら、是非本記事をご参考にいただければ幸いです。
条件に該当するページがございません