partyツールを必要とせず,Masterでの障害発生時にSlaveをMasterに自動昇格させることができますが,failoverの際にクライアント/アプリケーションとの接続が途切れ,再接続の必要があるのが難点でした。split)モジュールではクライアントからデータベースへの接続が途切れない新機能(transaction_replay/master_reconnection)が追加されています。GA今回はこの新機能について解説したいと思います。master_reconnectionmaster_reconnection=true(有効)に設定すると,セッション途中で接続先のMasterノードが自動failoverしても接続が維持(再接続)されるようにします。以下の条件があり,これらを満たすと再接続されます。デフォルトでは無効(false)です。実行中でない旧Masterノードにルーティングされているクエリがないtransaction_replayMasterの障害等で途中で中断されたトランザクションを再実行します(デフォルトではfalse)。自動的に有効となります。昇格したサーバで実行します。クライアント/アプリケーション側で再接続を行う必要はありません。設定した時間内に代替ノードが見つからない場合,クライアントとの接続は閉じられます。すべてのトランザクションが再実行されるわけではなく,以下のSQL文がトランザクションに含まれ,初回の部分的なザクションと同一の結果が得られる場合のみ,トランザクションが再実行されます。等が含まれている場合,同一の結果にはなりませんので,再実行されません。有効/無効での挙動の違いを確認してみます。以下の環境でテストを実施しました。split経由でINSERTを定期的に実行する以下のRubyスクリプトを用います。serviceセクションを以下のように設定し,master_reconnectionを無効(デフォルト)にしてテストを実行します。now());(id=4でMasterを停止,自動failover)id=4完了後にMasterノードを停止させると接続が切れ,そのまま接続が切れていますので,クライアント/アプリケーションでデータベースへの再接続を行う必要があります。有効にしてテストを再実行します。コネクタからのエラーメッセージは表示されていません。|+----+---------------------+テスト・スクリプトでは5秒間隔でINSERTを行っていますが,id=4とid=5のレコード間では13秒間隔となっているものの,接続は途切れていません。以下のように記録されています。server1server2(Master)がダウンしたことが検知され,server1がMasterに昇格,その後クエリがserver1にルーティングされていることが確認できます。ついて解説いたしました。Master-Slave構成にて自動failover時にアプリケーション/クライアント側でデータベースからの切断を検知,再接続を行う必要がなく,アプリケーション側でデータベース・システム構成に依存したコードを書く必要がなくなると考えます。以上の場合はサブスクリプションの購入が必要となります。newsletter!。