メールマガジン

MariaDB MaxScale

今月の気になるオープンソース情報(2019年7月号)

OSS研究室 松崎 元昭

今回はDBクラスタシステムを構成することができるMariaDB MaxScaleを紹介します。

DBクラスタの用途

DBクラスタとは、複数のDBサーバを束ねたデータベースシステムです。複数レプリカによるデータの完全性の確保、サービスの可用性の確保、また参照負荷を分散するなどの利点があり、比較的大規模なDBシステムに利用されます。

DBクラスタは、データベースにメインコンテンツや大切なデータを格納している次のようなシステムに利用が期待されます。

  • コンテンツサービスプロバイダやWebホスティングサービスなどで利用するデータベースサービス
  • 恒常的に多くの問い合わせがある権威DNSサービスのバックエンド
  • メールデータの格納にDBを利用するソフトウェアを利用したメールサービスのバックエンド
  • 停電後の復旧時などなどバースト的な問い合わせが発生するDHCPサービスやRADIUSサービスのバックエンド

MariaDB MaxScaleの特徴

MariaDB MaxScaleは、MariaDBクラスタへの問い合わせや更新操作(「クエリ」といいます)を中継(「プロキシ」といいます)するOSSです。クライアントアプリケーションに複数DBサーバの存在を意識させないように交通整理する機能(「ルーティング」といいます)を持っています。

MariaDB MaxScaleには、以下のような特徴があります。

  • MySQLプロトコルに特化したプロキシサーバ
  • 冗長構成されたバックエンドDBサーバに対応
  • Master-Slave型クラスタ、マルチマスタ型クラスタのどちらにも対応
  • 読み込みクエリと書き込みクエリを別サーバに振り分けることができる
  • マスタサーバの故障を検知し、バックエンドDBを縮退させることができる
  • 管理コマンドにより、バックエンドDBの状態標示、MaxScaleサーバの操作等ができる
  • モジュールプラグイン型の実装により、機能追加ができる構造になっている
  • MariaDB MaxScaleは主に、MariaDB Galera ClusterなどのMariaDBクラスタと組み合わせて利用します。

更新系クエリと参照系クエリの分散

MariaDB MaxScaleは、クライアントから発行されたクエリを解析し、更新系のクエリと参照系クエリを判定し、発行先の実サーバを分けることができます。すなわち、更新系のクエリは決まった1台のサーバに処理をさせ、単純にデータを参照するだけの処理は残ったサーバに処理を分散することで、バックエンドのDBクラスタを効率よく利用できるようになります。

障害発生時のMasterサーバの切り替え

更新系クエリと参照系クエリの分散により、効率よくMariaDBクラスタを利用するためには、実サーバが健全に稼働していることが前提になります。逆に言えば、障害が発生しているサーバは、利用する対象から除外されなくてはなりません。MariaDB MaxScaleは、定期的に実サーバをモニタリングして実サーバの障害を検知し、必要に応じて参照系サーバの除外、更新系サーバの切り替えを行います。

MariaDB MaxScaleを利用したDBクラスタの構成例

MariaDB Galera Clusterとの組み合わせ

MariaDB MaxScaleは、マルチマスタ型であるMariaDB Galera Cluterとの組み合わせのために独自のモニタリング機能を実装しており、更新用ノードの故障検知、故障復旧が素早く安全に行われるようになっています。また、MariaDB Galera Clusterが持つスケールアウトの容易さから、参照系サーバを横展開しやすく、頻繁にDB参照を受けるサービスに向いています。

AWS上での利用

Amazon RDS for MariaDBでは、リードレプリカと呼ばれる、データを複数の更新系以外のRDSにコピーして参照できるような仕組みを提供しています。これとMariaDB MaxScaleの負荷分散機能を組み合わせることにより、やはり参照系サーバのスケールアウトが容易なDBクラスタを構成することができます。

また、MariaDB MaxScaleは、Amazon Auroraクラスタレプリカとの連携もできるようになっています。

MariaDB MaxScaleの冗長化

MariaDB MaxScaleは、それ自体が中継機能を担うものであり、内部的に保持している情報は更新系サーバ(マスタサーバ)がどのノードあるかという情報だけです。このため、Active/Standby型のHAクラスタによる冗長化が容易にできます。MariaDB MaxScaleを冗長構成にすることによって、DBクラスタシステムの可用性を高めることができます。

デージーネットでは

デージーネットではこれまで、サーバシステムとしてのHAクラスタによるデータベースサーバを構築してきましたが、実稼働サーバが単一サーバでありスケールアウトが困難でした。データベースの仕組みとしてのDBクラスタの利用方法について、まずはMariaDB Galera ClusterとMariaDB MaxScaleを組み合わせたDBクラスタの基礎的な動作について検証を行いました。今後もさまざまなアプリケーションの性質に応じた適切な構成について、継続して調査を進めていきます。

デージーネットマガジン2019年7月号記事一覧

MariaDB MaxScaleの先頭へ