MySQL Fabric

MySQL FabricはMySQLサーバー群を管理する統合型のフレームワークです。より高い可用性(HA)とデータ・シャーディングによる拡張性を実現します。これらの機能は、個別または組み合わせで利用することが可能です。

これらの機能は以下で構成されています:

  • 管理リクエストを処理するmysqlfabricプロセス。HA機能を使用する際、このプロセスは、マスターサーバーの監視をすることが可能です。また、マスターサーバーの障害の際、スレーブ・データベースをマスターに昇格させます。
  • MySQL Fabric対応コネクタ – MySQL Fabricからルーティング情報(アクセス対象のMySQLサーバーの役割と構成の一覧)を取得してキャッシュし、それらの情報を元にトランザクションやクエリを目的のMySQLサーバーに送ります。
MySQL Fabric provides high availability and database shading for MySQL Servers

MySQL FabricはMySQL サーバーに、高可用性とデータ・シャーディングを提供します

高可用性(High Availability)

HAグループは、複数のMySQLサーバーのプール情報から成り立っています。いかなるタイミングにおいても、それらのサーバーのいずれかがプライマリ(MySQL リプリケーション・マスター)であり、その他がスレーブです。HAグループは、グループ内でデータのアクセスが常に利用可能になっているようにします。

MySQL レプリケーションによってデータの複製を行って安全性を高めます。MySQL Fabricでは、高可用性構成のために以下の2つの追加コンポーネントが用意されています:

  • 障害探知と昇格  – MySQL FabricがHAグループ内のプライマリを監視し、障害が発生すると、いずれかのスレーブ・データベースを新しいマスターに昇格させます
  • データベースリクエストのアクセス先の選択 – 書き込み処理のマスターへの送信と、読み込み処理のスレーブ間でのロードバランスは、フェールオーバーが発生して構成が変更になっても、アプリケーションからは意識する必要がありません

シャーディング – スケールアウト

単一のMySQL サーバー(またはHAグループ)の容量や書き込みパフォーマンスが上限に近付いた場合、MySQL Fabricは複数のMySQLサーバー「グループ」全体に対してデータをパーティショ二ングすることによって、データベース・サーバーをスケールアウトさせることが可能です。ここでの「グループ」は、単一のMySQLサーバーまたはHAグループを指します。

管理者は、データが複数のサーバー間でどのようにシャードさせるか、どのテーブルの列をシャーディング・キーとして使用するかを指定することが可能です。また、シャードにこれらのキーをマップする場合、ハッシュまたはレンジ・ベースのマッピングを使用するかどうかも指定可能です。

追加のシャードが必要な場合、MySQL Fabricは、既存のシャードを分割することやシャードを再構成することも可能です。

MySQL Fabric – コネクタとの連携

MySQL Fabric対応コネクタは、Java、PHP、Python用が用意されています。これらのコネクタは自動的にMySQL Fabricからのルーティング情報を取得し、MySQLサーバーにクエリやトランザクションを正しく送れるようにルーティング情報をキャッシュします。アプリケーションはMySQLサーバー群の構成や個別のサーバーの状態を意識することなく、シャーディング・キーを提供するだけでアクセス先のMySQLサーバーが自動的に選択されます。

プロキシ不要の構成

トランザクションとクエリは、正しいMySQLサーバーに直接ルーティングできるので、MySQLサーバーは、プロキシを通過させることで生じる余分な遅延を解消し、複雑性を回避出来ます。また、ターゲットマシンのいずれかで実行するためのエージェントが必要ありません。

その他のリソース