11.3 トランザクション・リカバリについて
トランザクション・コーディネータ・サーバーは、障害後にサーバーが再起動したときに進行中のトランザクションを再開します。
トランザクション・コーディネータ・サーバーは、再起動するたびに、トランザクション・ストアに格納されている進行中のトランザクションをすべて処理し、進行中のトランザクションを再起動します。リカバリは、トランザクション・ストアで使用可能なデータによって異なります。トランザクション・ストアは、トランザクション・コーディネータがクラッシュまたは再起動した後でも、以前のトランザクションに関する情報を保持する必要があります。MicroTxがトランザクション・データを格納するようetcdまたはOracle Databaseを設定した場合は、コーディネータの再起動後、進行中のトランザクションに関する情報とトランザクションの詳細を取得できます。ただし、個別のトランザクション・ストアを設定しておらず、内部メモリーを使用してトランザクション詳細を格納している場合は、コーディネータがクラッシュまたは再起動すると、格納されているすべての情報が失われます。
MicroTxは、次の状態のトランザクションについて、トランザクション・ストアで使用可能なデータに基づいて進行中のトランザクションをリカバリします:
| トランザクション・プロトコル | トランザクション・ステータス | トランザクション・リカバリの一環としてトランザクション・コーディネータは... | 
|---|---|---|
| XA | Preparing | トランザクションをロールバックします | 
| XA | Rolling back | トランザクションをロールバックします | 
| XA | Committing | prepareおよびcommitコマンドを再送信し、トランザクションを正常にコミットするために再試行します | 
| Saga | Closing | closeコマンドを再発行してトランザクションをクローズします | 
| Saga | Canceling | cancelコマンドを再発行して、トランザクションを取り消します | 
| TCC | Confirming | confirmコマンドを再発行してトランザクションを確定します | 
| TCC | Canceling | cancelコマンドを再発行して、トランザクションを取り消します | 
また、XAトランザクション・プロトコルの場合、トランザクション・コーディネータは、コミットされていないトランザクションを動的にリカバリします。「XAトランザクションの動的リカバリについて」を参照してください。
親トピック: トランザクション・コーディネータの管理