データベース プロキシ (maxscale など) がバックエンド データベースとクライアントの間に存在する場合、プロキシ ノード自体に障害が発生すると、書き込みはどうなりますか。具体的には、次のシナリオに興味があります。
- クライアントが書き込みコマンドを発行します (自動コミットが有効になっていると仮定します)。
- データベース プロキシは、クライアントから書き込みコマンドを受け取り、それをバックエンド データベースに送信します。
- バックエンド データベースは、書き込みコマンドを受け取り、書き込みを実行し、トランザクションをコミットして、確認をプロキシ ノードに送り返します。
- プロキシ ノードは確認応答を受信します。しかし、プロキシ ノードが確認をクライアントに送り返す前に、プロキシ ノードは停止します。
このシナリオでは、トランザクションがコミットされ、データベースに関する限り、そのクライアント (つまり、プロキシ ノード) に通知されます。ただし、実際のクライアントは、トランザクションがコミットされたかどうかを知りません。
データベース プロキシはこのシナリオをどのように処理しますか?