MariaDBサーバーとMariaDBクラスターは、MariaDBCorporationが提供するオープンソース製品です。 MariaDBサーバーは最も人気のあるリレーショナルデータベースの1つであり、元々はMySQLサーバーからフォークされていました。
MariaDBクラスターは、Galera Cluster wsrepライブラリを使用してノード間でデータを同期する、MariaDBサーバーから構築された高可用性ソリューションです。 Galeraのレプリケーション方法は同期的(または「実質的に同期的」)であり、データがすべてのノードで同じになるようにします。
MariaDBサーバーは、標準のレプリケーションを介して高可用性にすることもできます。レプリケーションは、非同期または準同期にすることができます。
では、標準レプリケーションを使用するMariaDBサーバーは、Galeraクラスターを使用するMariaDBクラスターとどのように異なりますか?このブログでは、これら2つを比較します。 ClusterControlを使用して、いくつかの違いを説明します。
MariaDBサーバーアーキテクチャ
MariaDBサーバーのアーキテクチャは、次の図に示すように、シングル/スタンドアロンインスタンスまたはマスター/スレーブレプリケーションにすることができます。
MariaDBサーバーのシングルインスタンスアーキテクチャは、1つのノードのみを表します。単一インスタンスを持つことの欠点は、データベースの単一障害点です。データベースがクラッシュして復旧しない場合は、フェイルオーバーメカニズムがないため、最後のバックアップからデータベースを回復するために復元を実行する必要があります。
マスター/スレーブアーキテクチャは分散セットアップであり、マスターがライターとして機能し、スレーブがリーダーとして機能します。 MaxscaleやProxySQLなどのロードバランサーを使用すると、データベーストラフィックを分割して、書き込みがマスターに送信され、読み取りがスレーブに送信されるようにすることができます。レプリケーションを設定すると、データベースの単一障害点がなくなりますが、マスターに障害が発生した場合は自動的にフェイルオーバーできる必要があります。そうしないと、アプリケーションがデータベースに書き込むことができなくなり、影響を受けます。 ClusterControlは、MariaDBレプリケーションの自動フェイルオーバーとリカバリを提供するように構成できます。
MariaDBクラスターアーキテクチャ
MariaDBクラスターは、以下のアーキテクチャ図に示すように、MariaDBサーバーとGaleraレプリケーションで構成される高可用性ソリューションです:
これは同期(「実質的に同期」)レプリケーションであり、すべてのノードが書き込み可能です。同期レプリケーションは、変更がガレラノードの1つで発生した場合、コミットされる前にクラスタ内の他のすべてのノードで利用可能になることを保証します。
大きな違いは、アプリケーションの観点からはすべてのノードが同等であり、任意のデータベースインスタンスに書き込みトラフィックを送信できることです。また、ノードに障害が発生した場合にデータが失われないように、すべてのノードにまったく同じデータが必要です。
MariaDBの導入
MariaDBレプリケーションとMariaDBクラスターの両方を、ClusterControlを介してデプロイできます。 MariaDBサーバーをデプロイするときは、MySQLレプリケーションを選択することから始める必要がありますが、MariaDBクラスターの場合は、MySQLガレラを選択する必要があります。
MariaDBサーバーの場合、単一ノードのMariaDBインスタンスをデプロイするか、マスター/スレーブおよび双方向レプリケーションをセットアップできます。レプリケーションセットアップのノードの最小数は2であり、1つのマスターと少なくとも1つのスレーブが必要です。マスターのIPアドレスを入力し、スレーブを追加するだけです(マスター/スレーブアーキテクチャが必要な場合)。双方向レプリケーションを設定する場合は、[2番目のマスターの追加]フィールドを使用できます。マスターマスターセットアップは双方向レプリケーションでプロビジョニングされますが、ノードの1つは読み取り専用として設定されます。その理由は、データのドリフトや「誤ったトランザクション」のリスクを最小限に抑えるためです。
MariaDBクラスターの場合、ターゲットデータベースノード用に少なくとも3つのホストが必要です。インストールされます。これは、ネットワークパーティショニングまたは「スプリットブレイン」シンドロームを処理できる必要があるためです。 MySQLサーバー構成を定義するときにノードを追加するときにIPアドレスを入力する必要があります。
データベースのベンダーとしてMariaDBを選択することを忘れないでください。データベースのバージョンは、ルートパスワードをインストールして入力します。デフォルト以外のdatadirを他のパスに変更することもできます。
すべてを構成したら、クラスターをデプロイするだけです。データベース展開のための新しいジョブがトリガーされます。
3番目のホストに2つのGaleraノードと1つのGaleraアービトレーター(別名garbd)を配置することも可能であることに注意してください。
MariaDBサーバーとクラスターの監視
データベースの監視はデータベースの重要な部分であり、データベースの状態の現在の状態を知ることができます。 MariaDBサーバーとMariaDBクラスターの監視の違いは、同期のためのガレラメトリックです。
MariaDBサーバーでは、MySQLメトリクスを使用して現在のデータベースの状態を確認できます。; MySQLサーバー-一般、MySQLサーバー-キャッシュ、MySQL InnoDBメトリック。これは、以下に示すように、MariaDBクラスターにも表示されます。
MySQL Server --Generalは、InnoDBバッファープールのヒット率、データベース接続、クエリ、ロック、およびデータベースメモリ使用率の現在の状態に関する情報を提供します。
MySQL Server -キャッシュ、キャッシュで提供される多くの情報があります。主にデータベースのキャッシュに関連します。例:バッファプールサイズ、バッファプールインスタンス。テーブルキャッシュの使用状況、ヒット率、キャッシュのヒットとミスに関する情報もあります。スレッドキャッシュの使用状況とヒット率の情報も確認できます。
MySQL Server -InnoDBメトリックは、InnoDBストレージに関連するメトリックを示します。例:バッファープールアクティビティ、InnoDB行操作、InnoDBログファイルサイズ、InnoDBデータの読み取り/書き込み。
MariaDBサーバーでは、マスター/スレーブレプリケーションをセットアップする場合に1つあります。 MySQLレプリケーションのメトリックのサブカテゴリ-マスター。マスターバイナリログファイル、マスターバイナリログの位置、およびbinlogの作成頻度に関する情報があります。
MariaDBサーバーにはデータベースに関連する多くの情報があり、これらはMariaDBクラスターでも利用できます。違いは、MariaDBクラスターには2つのダッシュボード(Galeraの概要とGaleraサーバーのグラフ)があることです。
Galeraの概要には、Galeraレプリケーションの現在の状態に関連する情報が表示されます。クラスターサイズ、送信されたフロー制御、受信されたフロー制御、一時停止されたフロー制御などの情報があります。
Galera Server Chartsには、クラスター名、クラスターステータス、サイズ、グローバルキャッシュサイズに関する情報があります。
標準レプリケーションを備えたMariaDBサーバーとMariaDBクラスターは、データベースサービスの点では実際には異なる製品ではありませんが、可用性とスケーラビリティの要件に応じて異なる特性を備えています。 ClusterControlは、標準レプリケーションを備えたMariaDBサーバーとMariaDBクラスター展開の両方をサポートしているため、両方のセットアップを試して、考えをお知らせください。