DeNAが社内利用しているMySQLの自動フェイルオーバーツール、オープンソースで公開開始
MySQLがダウンしたときに自動的に別のMySQLへ処理を引き継ぐことで、高可用性を実現するフェイルオーバーツール「MySQL-MHA: MySQL Master High Availability manager and tools」がオープンソースとして公開されたことを、作者の松信嘉範(まつのぶよしのり)氏がブログで伝えています。
松信氏はモバゲーなどで知られるDeNAに勤務しており、MySQL-MHAによる自動フェイルオーバー機能はDeNAのインフラ運用を支えているとのこと。同氏のブログから引用します。
Difficulties of master failover is one of the biggest issues in MySQL. Many people have been aware of this issue, but in most cases there were not practical solutions. I created MHA to make our (DeNA's) existing 100+ 5.0/5.1/5.5 and future MySQL applications highly available.
MySQLにおいてマスターのフェイルオーバーはもっとも難しいの1つ課題です。多くの人がこれに対応しようとしましたが、多くの場合、現実的なソリューションにはなりませんでした。私が開発したMHAは、DeNAが保有する100台以上のMySQL 5.0/5.1/5.5や今後のMySQLアプリケーションの高可用性を実現しています。
なぜMySQLのフェイルオーバーが難しいか
MySQL-MHAは、今年の4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」で、松信氏によって紹介されたものです(参考:DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール)。
松信氏はMySQLのフェイルオーバーの難しさを、このときのスライドで次のように説明しています。
万が一MySQLのマスターが落ちたときにはスレーブをマスターに昇格させるわけですが、マスターとスレーブのレプリケーションが非同期に行われるため、マスターがダウンしたときに、まだスレーブへレプリケートされてないデータが発生する可能性があります。
そのままでは、マスターのデータが欠けたままだったり、ほかのスレーブとデータがずれたままになってしまうわけです。MySQL-MHAにはこうした問題を解決する機能などが実装されています。
松信氏のブログでは、さらに詳しく説明されています。
MySQL-MHAは、「http://code.google.com/p/mysql-master-ha/」からコードやドキュメントを入手可能です。