マルチマスタとは
マルチマスタとは、主にデータベースにおいて、複数台の更新可能なデータベースサーバで構成されたサーバシステムのことである。データベースは、参照するデータの正当性が重要視されるために、更新の競合を避けたり、更新中のデータの参照を禁止するといった、トランザクション処理が重要である。1台でデータベースサーバでトランザクション処理を行う分には特に問題はない。しかし、データベースが1台であることは、次のような問題を生む。
- データベースサーバで障害が発生したとき、システム全体が停止する
- 1台のサーバの性能に限界が来たときに対応ができなくなる
こういった問題を解決するために、マルチマスタ方式のデータベースが存在している。
マルチマスタをサポートするOSSのデータベース
多くの商用データベースでは、マルチマスタ方式のシステム構築が可能であるが、OSSのデータベースでもマルチマスタ方式が選択可能になってきている。
MySQL
OSSのデータベースではメジャーなソフトウェアであり、マルチマスタをサポートしている。
OpenLDAP
ディレクトリサーバであるOpenLDAPは、バージョン2.4よりマルチマスタ方式をサポートしている。
PostgreSQL
OSSのデータベースで、特に日本ではメジャーなソフトウェア。PostgreSQL9.4から、Streaming Replicationを拡張したBDR(Bi-Directional Replication)という方式でマルチマスタをサポートしている。
pgpool
pgpoolは、2台のpostgreSQLデータベースサーバに同じ更新を行うアプリケーションである。2台のマスタサーバに更新が行える点では、マルチマスタ方式を疑似的に実現しているとも言える。2台のマスターデータベースが存在することになるため、postgreSQLの耐障害性を上げることができる。ただし、pgpoolもアプリケーションである以上は、pgpoolプロセスの耐障害性を何かしら考える必要がある。
マルチマスタにおける問題点
マルチマスタ構成の問題点として、複数台のマスターサーバに同一エントリの追加や削除を行ったときに動作結果が不安定になる場合がある。結果として、データベースによっては、サーバ上のデータが異なる結果になることもある。同時更新が発生するようなシステムの場合には、マルチマスタであっても、更新は1台のサーバに集中させて対処する必要がある。また、アプリケーションは、エントリーの追加や削除の方法や順序によって結果が変わらないような設定とする必要がある。2台目は予備のマスタサーバになるが、システム障害時に運用が継続できるメリットは大きい。
データベースを冗長化する提案
マルチマスタ方式のデータベース構成を行えば、データベースサーバの冗長化は可能である。しかし、複数サーバへの処理の分散などを考えたりする必要がある。デージーネットでは、冗長性を持たせたデータベースの提案を行う場合には、heartbeat/DRBDを使った構成を提案することがある。この構成では、マルチマスタをサポートしていないデータベースサーバも冗長化可能である。この構成のメリットは、データベースを参照するアプリケーションにとって、システムがシンプルに見えることである。データベースサーバは常に1台しか稼働していないので、アプリケーション側はサーバ構成を意識する必要がない。
【カテゴリ】:クラスタ  データベース  
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |