手動アップグレードの実行
この項では、TimesTenClassicオブジェクトの手動アップグレードの実行のプロセスについて説明します。この項にはさらに次の項が含まれています:
TimesTenClassicオブジェクトの変更: 手動アップグレード
manual
アップグレード・プロセスを利用するには、新しいTimesTenコンテナ・イメージを参照するようにTimesTenClassicオブジェクトの.spec.ttspec.image
データ項目を変更する必要があります。新しいTimesTenイメージを参照するようにTimesTenClassicオブジェクトを変更すると、オペレータは変更を認識して、オペレータが作成したStatefulSetを変更します。
新しいTimesTenイメージを参照するようにTimesTenClassicのsample2
オブジェクトを変更しましょう。sample2
オブジェクトの.spec.ttspec.imageUpgradeStrategy
がManual
であるとします。
新しいTimesTenコンテナ・イメージを使用するようにsample2
TimesTenClassicオブジェクトを変更しました。スタンバイ・データベースをアップグレードすることで手動アップグレードを続行しましょう。
スタンバイ・データベースのアップグレード
次のステップを実行して、スタンバイ・データベースをアップグレードします。
ノート:
スタンバイ・データベースをアップグレードする場合でも、レプリケーション構成によっては、アクティブ・データベースが中断する可能性があります。これは、アプリケーションに影響を与える可能性があります。適切なタイミングでアップグレードを実行してください。
スタンバイ・データベースを正常にアップグレードしました。これで、アクティブ・データベースからスタンバイにフェイルオーバーする準備が整いました。
フェイルオーバー
この時点で、アクティブ・データベースからスタンバイ・データベースにフェイルオーバーする必要があります。
ノート:
フェイルオーバーすると、アクティブなデータベースは停止され、すぐにフェイルオーバーされます。本番日の最も忙しい時間にこの手順を実行しないでください。
フェイルオーバーする前に、アクティブ・データベースでアプリケーションを停止します。(ttAdmin
-close
およびttAdmin
-disconnect
コマンドを使用することもできます。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のユーザー接続のためのデータベースのオープンとクローズおよびデータベースの接続の切断を参照してください。
データ損失の可能性をなくすために、ttRepAdmin
-wait
コマンドを使用して、アクティブ・データベースで実行されたすべてのトランザクションがスタンバイ・データベースにレプリケートされるように、レプリケーションの遅れが回復されるまで待機します。Oracle TimesTen In-Memory DatabaseリファレンスのttRepAdminを参照してください
スタンバイの遅れが回復されたら、アクティブ・ポッドを削除して、アクティブ・データベースからスタンバイにフェイルオーバーします。アクティブ・ポッドを削除すると、オペレータは自動的に障害を検出して、スタンバイ・データベースをアクティブに昇格させます。アクティブ・データベース(この例ではsample2-0
)を使用しているクライアント/サーバー・アプリケーションは、自動的に新しいアクティブ・データベース(この例ではsample2-1
)に再接続されます。処理中のトランザクションはロールバックされます。準備したSQL文は、アプリケーションで再準備する必要があります。クライアント/サーバーのフェイルオーバーの詳細は、「フェイルオーバーおよびリカバリの処理について」を参照してください。
削除されたポッドを置き換えるために、Kubernetesは新しいsample2-0
ポッドを自動的に作成します。オペレータは、新しいポッドをスタンバイ・ポッドとして構成します。この新しいポッドは、新しく作成したTimesTenイメージを実行するようになります。
ノート:
この操作は、スケジュールされた本番環境の停止中に実行することをお薦めします。
新しいリリースのTimesTenに正常にアップグレードされました。この時点で、アクティブ・ポッドとスタンバイ・ポッドは、新しいTimesTenリリースが含まれている新しいTimesTenイメージを実行しています。
この例では、sample
およびsample2
TimesTenClassicオブジェクトがアップグレードされます。アップグレード・プロセスが完了しました。アクティブ・データベースとスタンバイ・データベースで新しいリリースのTimesTenが実行されていることを確認しましょう。