Oracle Berkeley DB - レプリケーションによる高可用性データ管理 | |
Berkeley DBでは、分散システムまたは冗長ハードウェア・システムにおいて高可用性および水平方向の読取りスケーラビリティを得るために、レプリケーションを使用します。 Berkeley DB HAは、自動フェイルオーバー機能が搭載された、単一のマスター、複数のレプリカ・システムで構成されています。 レプリカは読取りの操作、マスターは読取りと書込みの操作を行うことができます。 レプリカは、マスターまたは他のレプリカから送信される更新をトランザクション・ログ・レコードとして受信し、それらをローカルで適用します。 レプリカからマスターに状況が伝えられ、マスターではその情報を使用してレプリカ・グループ間の整合性を管理します。 レプリケート・システムの各ノードは、データおよびログの完全なコピーを保持します。 このアーキテクチャにより、極めて高い読取りスケーラビリティが得られます。また、ほぼ瞬時にフェイルオーバーが行われる他、100%に近い稼働率を提供することができます。 Berkeley DB HAを使用しているアプリケーションは、単一システムの処理の制約範囲を超えるスケーラビリティにより、適切に障害を管理して最大の可用性を実現します。 | |
![]() | |
Berkeley DB HAのインフラストラクチャは、TCP/IPだけでなく、どのような通信システムでもサポートできます。このサポートにより、(ブレードなどの)冗長システム間で内部高速カスタム・インターコネクトを使用して、組込みハードウェア・システム内のパフォーマンスを劇的に向上させることができます。 ただし、Berkeley DBではレプリケーション・グループの管理にビルトイン・サポートが提供されており、それにはTCP/IPネットワークが使用されます。 データベースの変更はマスター・ノードのみで行います。 アプリケーションでは、マスター側で要求の作成、更新、削除を実行し、マスターから、要求されている整合性の度合いに必要なアプリケーションと同数のレプリカにそれらの変更が自動的に配信されます。 トランザクションは、即座に整合性が取れ、ノードのクォーラム、または使用しているアプリケーションが要求する他の基準が必要です。 読取りは、どのノード、マスター、レプリカでも、また、どのタイミングでも処理することが可能です。 レプリカは、グループの結合、分離が柔軟にでき、再結合も可能です。つまり、ソリューションの規模を変更に応じて変えることができます。 マスターに障害が発生した場合、選択処理がコールされ、新規のマスターを特定し昇格させます。 このソリューションにより、以下が可能となります。
Berkeley DB HAの適用場所:
マスターの選択は、一意のマスターが常に選択されるように、分散された2フェーズの投票プロトコルを使用します。 選択には、プロセスに関与している適格なノードのうち、少なくとも過半数が必要です。 関与している適格なノードで、もっとも最新の環境の状態にあるノードがマスターとして選択されます。 適格なノードは以下の状態にあるいずれかのノードから選出されます。
レプリカが変更をできるだけ早く処理できるように、マスターは、変更をレプリカに非同期的に送信します。 変更はレプリカに次々と送信されます。つまり、トランザクションが進行中でも、アプリケーションがマスター上のトランザクションのコミットを試みる前に送信されます。 その後、トランザクションがマスター上で中断されると、レプリカもトランザクションを中断します。 アプリケーション・スレッドは、特定のトランザクションに追いつくために、1つ以上のレプリカを待機する場合があります(トランザクションの永続性の要件で必要な場合)。 レプリカは、そのようなトランザクションに対して明示的な受信確認の応答に応えますが、これは、マスター上の進行を阻止するものではありません。他のトランザクション作業は続けられます。 マスターによるレプリケーション・ストリームへの書込み操作と、レプリカでの読取り(再生)操作はそれぞれ非同期に行われます。 マスターは、アプリケーションが新規のログ・エントリを作成後すぐに、レプリケーション・ストリームへ書き込むことができます。 レプリカは、レプリケーション・ストリームから変更を読み取り次第、その変更を再生します。また、マスターによって要求された場合は、コミット操作の再生に対する受信確認に応答します。 | |
記事 | |
