MySQL

現在MySQLは5.1系と5.5系の開発が活発に進められている。プロダクションリリースが実施されたのはMySQL 5.1のプロダクトラインであり、次のプロダクションリリースはMySQL 5.5系からになるとみられる。このMySQL 5.5における目玉機能のなりそうなのがレプリケーション機能の拡張だ。どういった拡張が実施されるのかがMySQL 5.5: What's New in Replication (Oracle's MySQL Blog)において簡単に紹介されている。

MySQLのレプリケーション機能はセットアップが簡単なわりにスケーラビリティがあって、しかも扱いやすい。データの冗長性やバックアップ目的での利用が簡単に実施できることから、MySQLの機能として人気がある。MySQL 5.5ではこの機能を拡張し、従来のバージョンよりもよりミッションクリティカルなシーンで採用しやすいものになる見通し。紹介されている主な機能拡張は次のとおり。

  • マスターとスレーブサーバにおけるデータ一貫性を保証するセミ同期レプリケーション機能の導入。
  • スレーブサーバの動作検知のチェック期間をさらに短く指定できるように変更。
  • クラッシュしたスレーブが自動的にリカバリする機能を実現。
  • 特定のサーバをトポロジからはずした場合に、まとめてほかのサーバへ処理を振り分けるフィルタリング機能の実装。
  • マスターおよびスレーブ間におけるより正確なデータタイプ変換の実現。

MySQLが提供しているレプリケーション機能は、デフォルトの状態では非同期になっている。マスターとスレーブはそれぞれ独立して一貫性を保っており、優れたパフォーマンスを実現している。反面、マスタースレーブ間でデータの一貫性を保証することができず、クラッシュした場合などにデータが失われる可能性もある。

MySQL 5.5で導入が進められているセミ同期レプリケーションはマスターから少なくともスレーブのどれかひとつへデータの同期を保証するもの。サーバはスレーブでの書き込みを待つようになる。タイムアウトした場合には一時的に非同期レプリケーションへ切り替わるが、スレーブの準備ができればふたたびセミ同期レプリケーションで機能するという。