ZabbixのDBでPercona Xtradb Clusterを使う
半年ほど前に、ソーシャルゲームの案件に携わった際にPercona ServerというMySQLの派生プロダクトの存在を知り、どっかで絶対使い倒してやろうと考えていた。
今の携わっている案件にてZabbixを立てる機会があったのだが、
そのZabbixを立てる際にPercona XtraDB Clusterというツールを導入してみた。
Percona XtraDB Cluster - A High Scalability Solution for MySQL Clustering and High Availability
これがまた非常に面白いツールで、Multi-Masterな構成を組むことができる。
レプリのアーキテクチャはこの辺に詳細に記載がある。
Multi-Master replication — Percona XtraDB Cluster 5.5 Documentation
いくらMulti-Masterな構成が組めるとはいえ、VIPを振って複数台でラウンドロビンしてやるぜ!
とまでは怖くてできず、せいぜい1台にVIPを振って、Activeが死んだらSlaveにVIPを切り替えといった運用しか今のところはできていない。
ただ、クラスタに1台サーバを新規追加したい、となった場合に非常に面白いツールであった。
たとえば、既存のクラスタから外したい場合には、
デーモンを止めるでもサーバシャットダウンすれば外れる。
その後、再度クラスタに追加したいとなった場合、データを全部削除したあと、
データの同期先を指定して起動するだけで勝手にクラスタにjoinする。
ちゃんとした環境で(例えばソーシャルゲームで使う等)ゴリゴリ使ったわけではないため、
負荷をかけても不整合は発生しないのか、とかその辺がすごく気になっている。
少なくともZabbix ServerのDBとしては、20万アイテム程度の監視を問題なく捌いているような状況である。