レプリケーションを使用したオンライン・アップグレードの実行
「オフライン・アップグレードの実行」では、すべてのアプリケーションの停止が必要なTimesTenデータ・ストアでの様々なメンテナンス操作について説明しました。この項では、TimesTenレプリケーション機能を使用して、データの継続使用が必要なアプリケーションのオンライン・アップグレードを実行する方法について説明します。オンライン・アップグレードは、TimesTenのメジャー・リリース間での移行時に実行できます。パッチ・リリースへの移行では、かわりにインプレースまたはオフライン・アップグレードを実行することもできます。
通常、データの高可用性が求められるアプリケーションでは、TimesTenレプリケーションを使用して、最新のデータ・ストアのコピーを1つ以上保持しておきます。一方が更新中のためにアプリケーションで使用できない場合にも、これらの2つのコピーをアプリケーションで使用できるように保持することで、オンライン・アップグレードが機能します。この項で説明する手順では、双方向のレプリケーション・スキームが構成されていて、2つのデータ・ストアを実行していると想定しています(『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』を参照)。
| 注意: | 異なるリリース間でレプリケーションが機能するのは、最新バージョンのTimesTenのデータ・ストアが、以前のバージョンのTimesTenのデータ・ストアからアップグレードされている場合のみです。最新バージョンのTimesTenで作成されたデータ・ストアと、以前のバージョンとのレプリケーションは、サポートされていません。たとえば、バージョン5.1のTimesTenで作成されたデータ・ストアと、バージョン7.0のTimesTenで作成されたデータ・ストア間のレプリケーションは、サポートされていません。ただし、あるデータ・ストアをバージョン5.1で作成し、もう一方のデータ・ストアをバージョン5.1で作成してから、バージョン7.0にアップグレードした場合、これらのデータ・ストア間ではレプリケーションがサポートされます。 |
| 注意: | セキュリティ上の理由から、通常、TimesTen 7.0と以前のリリース間でのレプリケーションは許可されていません。レプリケーションを使用してオンライン・アップグレードを実行するには、TimesTen 7.0のメイン・デーモンを-insecure-backwards-compatオプションを使用して起動する必要があります。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の以前のリリースのTimesTenとの通信に関する項を参照してください。 |
概要
以前のリリースのTimesTenから新しいリリースへのデータ・ストアのアップグレードは、データ・ストアのレプリケートされる2つのコピーのいずれかからすべてのアプリケーションを切断して、以前のリリースのttMigrateを使用してデータ・ストアのバックアップを作成し、新しいリリースのttMigrateを使用して新しいデータ・ストアにバックアップをロードしてから、すべてのアプリケーションをアップグレード済のデータ・ストアに再接続することで実行されます。
| 注意: | データ・ストア表の所有者の名前を変更するために使用されるttMigrate -r -renameオプションは、オンライン・アップグレードでは使用できません。 |
オンライン・アップグレードの一般的な手順は、次のとおりです。
- アップグレードするデータ・ストアからすべてのアプリケーションを切断します。
- アップグレードするシステムでレプリケーションを停止します。
- -cオプションを指定して以前のリリースのttMigrateを使用し、アップグレードするシステムに存在するデータ・ストアをバックアップします。
- アップグレード中のシステムに新しいリリースのTimesTenをインストールします。
- -rオプションを指定して新しいリリースのttMigrateを使用し、アップグレード中のシステムでレプリケートされたデータ・ストアをリストアします。
- アップグレードしたデータ・ストアにすべてのアプリケーションを再接続します。
- アップグレードしたシステムでレプリケーションを再起動します。
| 注意: | ttMigrateを使用した後は、アップグレード前のデータ・ストアでのAUTOREFRESH STATEの設定方法に関係なく、アップグレード先のデータ・ストアのすべての自動リフレッシュ・キャッシュ・グループでAUTOREFRESH STATEがOFFに設定されます。ALTER CACHE GROUP文を使用して、AUTOREFRESH STATEをONに設定し直してください。 |
継続的な可用性を維持するため、切断されたデータ・ストアのコピーでアップグレードが実行される間、アプリケーションはデータ・ストアのいずれかで引き続き実行されます。TimesTenレプリケーションでは、アップグレード期間中にデータ・ストアのアクティブなコピーに加えられる更新を保持し、レプリケーションが再開されると更新内容をアップグレードされたデータ・ストアに転送して適用します。レプリケートされた更新が完全に適用されると、アプリケーションはアップグレードされたデータ・ストアに再接続されます。
次の表に、レプリケーションの実行中にオンライン・アップグレードを実行する手順を示します。アップグレード・システムは、データ・ストアのアップグレードが実行されているシステムで、アクティブなシステムは、アプリケーションが引き続き接続されるデータ・ストアを含むシステムです。
| 手順 | アップグレード・システム | アクティブ・システム |
|
1.
| 静的ポートを使用してアクティブ・システムにレプリケートされるように、レプリケーションを構成します。 | 静的ポートを使用してアップグレード・システムにレプリケートされるように、レプリケーションを構成します。 |
|
2.
| | すべてのアプリケーションをアクティブ・データ・ストアに接続します(接続されていない場合)。 |
|
3.
| アップグレード・データ・ストアからすべてのアプリケーションを切断します。 | |
|
4.
| | アップグレード・システムへのレプリケーションをpause状態に設定します。 |
|
5.
| アクティブ・システムに更新が伝播されるまで待機します。 | |
|
6.
| レプリケーションを停止します。 | |
|
7.
| ttMigrate -cを使用して、データ・ストアをバックアップします。 | |
|
8.
| 以前のリリースのTimesTenのTimesTenデーモンを停止します。 | |
|
9.
| 新しいリリースのTimesTenをインストールします。 | |
|
10.
| ODBC データソース アドミニストレータ(Windowsの場合)または.odbc.iniファイル(UNIXの場合)を使用し、新しいリリースのTimesTenでアップグレードするデータ・ストアのデータ・ソース名を作成します。 | |
|
11.
| ttMigrate -rを使用して、バックアップからデータ・ストアをリストアします。 | |
|
12.
| ttRepAdmin -receiver -resetを使用して、アクティブ・システムへのレプリケーションをstopに設定した後start状態に設定し、レプリケーション・ブックマークおよびログを消去します。 | |
|
13.
| レプリケーションを開始します。 | |
|
14.
| | アップグレード・システムへのレプリケーションをstart状態に設定し、レプリケーションの再開後、蓄積された更新が確実に伝播されるようにします。 |
|
15.
| | レプリケーションを開始します。 |
|
16.
| | すべての更新内容がアップグレード・システムに伝播されるまで待機します。 |
|
17.
| すべてのアプリケーションをアップグレード・データ・ストアに再接続します。 | |
前述の手順をアップグレード・システムで実行した後、同じ手順を使用して、アクティブ・システムをアップグレードできます。
制限事項
オンライン・アップグレードを実行できるのは、すべてのユーザー表がレプリケーション要件を満たしているデータ・ストアに対してのみです。すべてのユーザー表には、PRIMARY KEY宣言が含まれているか、NULLを指定できない列に一意索引が宣言されている必要があります。
要件
レプリケーションを使用してオンライン・アップグレードを実行するには、静的ポートを使用するようにレプリケーションを構成する必要があります。詳細は、『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』の動的ポートおよび静的ポートの割当てに関する項を参照してください。
双方向レプリケーション構成が存在しない1つのシステムでオンライン・アップグレードを実行する場合、アップグレード中のデータ・ストアの2つのコピーをサポートするのに十分なメモリーとディスク領域が使用可能であることを確認する必要があります。アップグレード中は、元のデータ・ストアとそのコピーの両方がアクティブになります。本番アプリケーションのパフォーマンスを維持するために、2つ目のシステムでデータ・ストアのコピーを作成することもできます。
ttMigrateユーティリティを使用して作成したデータ・ストアのバックアップ・コピーを格納するために、追加のディスク領域を割り当てる必要があります。通常、バックアップ・コピーのサイズは、使用中のデータ・ストアのサイズとほぼ同じです。このサイズを確認するには、ttIsqlを使用してsys.monitor表を問い合せます。
Command> SELECT perm_in_use_size FROM sys.monitor;
オンライン・アップグレードの例
この項では、具体的な例を使用して、双方向でレプリケートされている2つのTimesTenデータ・ストアをオンラインでアップグレードする手順について説明します。
ここでは、アップグレードの対象となる2つのTimesTenシステムを、アップグレード・システム(TimesTenがデータ・ストアとともにアップグレードされる)およびアクティブ・システム(アップグレード期間中、操作可能でアプリケーションに接続される)と呼びます。この手順が完了した後、同じ手順を繰り返してアクティブ・システムをアップグレードできます。アップグレード済のシステムがアクティブとなって動作し、アプリケーションに接続されます。ただし、アップグレードされたリリースをテストするために、アクティブ・システムの変換を遅延することもできます。
この例では、アップグレード・システムは、サーバーupgradehost上のデータ・ストアupgradeで構成されています。アクティブ・システムは、サーバーactivehost上のデータ・ストアactiveで構成されています。
次に示す手順は、その順序どおりに示されています。オンライン・アップグレードの手順は、次のとおりです。
| 手順
|
アップグレード・システム
|
アクティブ・システム
|
|
1.
|
データ・ストアがリリース間で通信できるように静的レプリケーション・ポート番号を設定し、ttIsqlを使用してレプリケーション・スキームrepschemeを変更します。
Command> call ttRepStop;
Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;
Command> call ttRepStart;
|
データ・ストアがリリース間で通信できるように静的レプリケーション・ポート番号を設定し、ttIsqlを使用してレプリケーション・スキームrepschemeを変更します。
Command> call ttRepStop;
Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;
Command> call ttRepStart;
|
|
2.
| データ・ストアに接続されているすべての本番アプリケーションを切断します。かわりに、アップグレード・システムで実行されているワークロードがアクティブ・システムでの動作を開始する必要があります。 | ttRepAdminユーティリティを使用して、データ・ストアactiveからデータ・ストアupgradeへのレプリケーションを一時停止します。
ttRepAdmin -connStr DSN=active -receiver -name upgrade -state pause
このコマンドにより、データ・ストアactiveからデータ・ストアupgradeへの更新のレプリケーションは一時的に停止されますが、activeに対する更新内容はデータ・ストアのログ・ファイルに保存されます。アップグレード手順の実行中にactiveに対して行われた更新は、後でupgradeが再起動されたときに適用されます。レプリケーション状態の詳細は、『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』のサブスクライバのレプリケーション状態の設定に関する項を参照してください。 |
|
3.
| データ・ストアactiveに送信されるすべてのレプリケーションの更新を待機します。データ・ストアupgradeで、更新の確認用として予約されている表に認識可能な更新を適用することで、更新がすべて送信されたことを確認できます。データ・ストアactiveに更新が適用されると、すべての以前の更新が送信されたことになります。 | |
|
4.
| ttAdminを使用して、レプリケーション・エージェントを停止します。
ttAdmin -repStop upgrade
これ以降、データ・ストアactiveに更新は送信されません。
| ttAdminを使用して、レプリケーション・エージェントを停止します。
ttAdmin -repStop active
これ以降、データ・ストアupgradeに更新は送信されません。
レプリケーション・エージェントの開始と停止については、『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』のレプリケーション・エージェントの開始と停止に関する項を参照してください。
|
|
5.
| ttRepAdminを使用して、データ・ストアupgradeからデータ・ストアactiveへのレプリケーションを停止します。
ttRepAdmin -connStr DSN=upgrade -receiver -name active -state stop
この手順によって、activeでのupgradeに送信される更新の蓄積が回避され、レプリケーション・ブックマークの一部がリセットされます。
|
|
|
6.
| ttMigrateを使用して、データ・ストアupgradeをバックアップします。データ・ストアが非常に大規模な場合は、この手順に長時間かかる可能性があります。 /backupファイル・システムに十分なディスク領域の空きがあれば、次のttMigrateコマンドを使用できます。
ttMigrate -c DSN=upgrade /backup/upgrade.dat
|
|
|
7.
|
ttMigrateコマンドが正常に実行された場合、データ・ストアupgradeを破棄します。
永続データ・ストア(Temporary=0)を破棄するには、ttDestroyを使用します。
ttDestroy upgrade
一時データ・ストア(Temporary=1)を破棄するには、ttAdminを使用します。
ttAdmin -ramUnload upgrade
| 注意: | 新しいリリースのTimesTenへの移行が正常に行われるまで、古いデータ・ストアupgradeの破棄を遅延できます。ただし、両方のデータ・ストアのレプリケーション・エージェントを停止したままにし、データ・ストアactiveでのactiveからupgradeへのレプリケーションをpause状態で保持する必要があります。 |
| データ・ストアactiveのレプリケーション・エージェントを再開します。
ttAdmin -wait -repStart active
|
|
8.
| 新しいリリースのTimesTenをインストールします。 | レプリケーション状態をstartに設定して、activeからupgradeへのレプリケーションを再開します。
ttRepAdmin -connStr DSN=active -receiver -name upgrade -start start
|
|
9.
| ttMigrateを使用して、手順6で作成したバックアップを新しいリリースのデータ・ストアupgradeにロードします。
ttMigrate -r "DSN=upgrade;AutoCreate=0" /backup/upgrade.dat
データ・ストアが一時データ・ストア(Temporary=1)の場合は、最初にttAdmin
-ramLoadを使用します。
ttAdmin -ramLoad upgrade
| 注意: | この手順では、アップグレードしているTimesTenの新しいリリースのttMigrateユーティリティを使用する必要があります。 |
|
|
|
10.
|
ttRepAdminを使用して、データ・ストアupgradeへのレプリケーションをstop状態にしてから、start状態にします。
ttRepAdmin -connStr DSN=upgrade -receiver -name active -state stop
sleep 10
ttRepAdmin -connStr DSN=upgrade -receiver -name active -state start
sleep 10
| 注意: | マシンのリソースやオペレーティング・システムによっては、状態の変更に最大で10秒かかるものもあるため、それぞれの状態が確実に有効になるようにsleepコマンドを使用しています。 |
|
|
|
11.
|
ttAdminを使用して、新しいデータ・ストアupgradeのレプリケーション・エージェントを開始し、データ・ストアactiveへの更新の送信を開始します。
ttAdmin -repStart upgrade
|
|
|
12.
|
データ・ストアupgradeがactiveから更新を受信するかを確認します。データ・ストアactiveで、更新の確認用として予約されている表に認識可能な更新を適用することで、更新が送信されたことを確認できます。upgradeに更新が適用されると、レプリケーションが動作していることになります。
|
アプリケーションがデータ・ストアactiveで実行中の場合は、データ・ストアupgradeの移行が正常に終了し、更新がactiveからupgradeに正しくレプリケートされたことを確認するまで、そのまま実行しておきます。
|
|
13.
|
|
更新が正常にレプリケートされていることを確認したら、すべてのアプリケーションをデータ・ストアactiveから切断し、データ・ストアupgradeに再接続できます。activeからの最後の更新がupgradeにレプリケートされたことを確認した後、データ・ストアactiveはアップグレード可能となります。
| 注意: | 新しいリリースのTimesTenでデータ・ストアupgradeで十分なテストが実行されるまで、新しいリリースのTimesTenへのactiveのアップグレードを遅延できます。 |
|