6.2 キャッシュされたメンテナンス・データのバックアップ

キャッシュ内で使用可能な情報を保持するには、MicroTxトランザクション・コーディネータをメンテナンス・モードで実行してからアップグレードする必要があります。

キャッシュを有効にすると、キャッシュされたデータはローカルでのみ使用でき、読取りおよび書込み操作が最適化されます。メンテナンス・モードを開始すると、MicroTxコーディネータのすべてのレプリカのトランザクション・ログが、データ・ストアとキャッシュの両方に移入されます。

キャッシュされたデータをバックアップできるのは、次の条件が満たされている場合のみです。次の条件が満たされない場合は、この手順をスキップしてください。

  • キャッシュがMicroTxトランザクション・コーディネータに対して有効になっている。「キャッシュの有効化」を参照してください。
  • MicroTxで、Oracle Databaseまたはetcdをデータ・ストアとして使用している。内部メモリーをデータ・ストアとして使用する場合は、キャッシュを有効にできません。
MicroTxトランザクション・コーディネータをメンテナンス・モードで実行するには:
  1. 環境に基づいて、maintenance-broadcast.yamlファイルでMicroTxをデプロイしたネームスペースの値を更新します。maintenance-broadcast.yamlは、installation_directory/otmm-RELEASE/otmm/microtx-upgrade/maintenanceフォルダにあります。
  2. MicroTxトランザクション・コーディネータをデプロイしたネームスペースでmaintenance-broadcast.yamlファイルを実行します。
    cd installation_directory/otmm-RELEASE/otmm/microtx-upgrade/maintenance
    kubectl apply -f maintenance-broadcast.yaml

    次の出力が表示されます。

    serviceaccount/otmm-tcs created
    pod/maintenance-job created
    role.rbac.authorization.k8s.io/endpoint-listing-role created
    rolebinding.rbac.authorization.k8s.io/endpoint-listing-role-binding created
    peerauthentication.security.istio.io/otmm-tcs-peerauth created
  3. データ・ストアのメンテナンス表から、キャッシュされた古いメンテナンス・データをクリアします。これにより、以前のアップグレード中にトランザクション・コーディネータをメンテナンス・モードで実行したときにバックアップされたデータが削除されます。maintenance-script.shは、installation_directory/otmm-RELEASE/otmm/microtx-upgrade/maintenanceフォルダにあります。
    kubectl exec -it maintenance-job -n otmm -- /bin/sh -c "$(cat maintenance-script.sh)"

    次のオプションが表示されます。

    Which URL would you like to hit?
    1) Clear old maintenance data
    2) Start maintenance (5 mins)
    3) Start maintenance with a duration (mins)
    4) Check maintenance status
    Enter your choice (1, 2, 3 or 4):
    1. 1を入力します。

      注意:

      メンテナンス・モードを開始する前に、古いメンテナンス・データをクリアする必要があります。メンテナンス・モードを開始した後は、このオプションを使用しないでください。メンテナンス・モードでデータが破損した場合、またはポッドが応答しなくなった場合、このオプションは、プロセスを再起動するリカバリ・ポイントとして機能します。
    2. デプロイしたMicroTxアプリケーションの名前を入力します。
    3. MicroTxトランザクション・コーディネータへのアクセスに使用するポートを入力します。
    次のメッセージが表示されるまで待ってから、次のステップに進みます。
    Maintenance data deleted successfully
  4. スクリプトを再度実行してメンテナンス・モードを開始し、オプション2または3を入力します。
    kubectl exec -it maintenance-job -n otmm -- /bin/sh -c "$(cat maintenance-script.sh)"
    • 2と入力して、進行中のトランザクションが完了するデフォルトの時間バッファ(5分)を使用します。
    • 3と入力して、進行中のトランザクションが完了する時間バッファを分単位で指定します。値を分単位で入力するよう求められます。5より大きい整数を入力してください。5分未満の値を入力すると、スクリプトではデフォルト値の5分が使用されます。

    メンテナンス・モードが開始されると、次のメッセージが表示されます。

    coordinator maintenance process started
  5. スクリプトを再度実行し、オプション4を入力して進行状況を確認し、メンテナンス・モードが正常に完了したことを確認します。
    kubectl exec -it maintenance-job -n otmm -- /bin/sh -c "$(cat maintenance-script.sh)"

    メンテナンス・モードが正常に完了すると、次のメッセージが表示されます。

    maintenance mode completed

    メンテナンス・モードがまだ進行中の場合、このステップの実行が数回必要になることもあります。メンテナンス・モードが正常に完了したことを確認した後にのみ、次のステップに進みます。

  6. 次のコマンドを実行して、maintenance-broadcast.yamlによって作成されたリソースを削除します。
    kubectl delete -f maintenance-broadcast.yaml

    次のメッセージが表示されます。

    serviceaccount "otmm-tcs" deleted
    pod "maintenance-job" deleted
    role.rbac.authorization.k8s.io "endpoint-listing-role" deleted
    rolebinding.rbac.authorization.k8s.io "endpoint-listing-role-binding" deleted
    peerauthentication.security.istio.io "otmm-tcs-peerauth" deleted

次:適切な方法を使用して、Transaction Manager for Microservices Enterprise Editionの最新リリースにアップグレードします。最新リリースにアップグレードすると、アップグレード・プロセスはMicroTxコーディネータの古いレプリカを停止し、MicroTxコーディネータの新しいレプリカをローリング方式で起動します。新しいMicroTxコーディネータ・レプリカのキャッシュには、データ・ストアで使用可能なキャッシュされたメンテナンス・データのコピーが移入されます。