MySQL5.5 - 性能改善と可用性向上

2011年11月25日(金)
梶山 隆輔

信頼性を向上させたMySQLの準同期レプリケーション

レプリケーションはMySQLの標準機能として2000年にリリースされたMySQL 3.23から利用可能となっている定番機能の一つです。1台のマスタに対して1台のスレーブを用意してバックアップ用途とするほか、広く利用されているのはWebサイトの負荷分散のために複数台のスレーブを使用する構成です。MySQLのレプリケーションは柔軟性が高く、スレーブを多段構成にしてさらに負荷を分散する構成や、双方向でレプリケーションを行うマルチマスタ構成、リング状の構成などが可能です。FacebookではMySQLのレプリケーションでアメリカ大陸に東西を横断するディザスタリカバリを構成し、数千台のMySQLサーバを運用しています。

MySQL 5.1までは非同期レプリケーションのみを実装していました。MySQL 5.5ではこれに加え、よりデータの信頼性を高めた準同期レプリケーションを実装しました。MySQLに限らず非同期レプリケーションの最大の制約は、マスタで障害が発生するタイミングによってはトランザクションを失ってしまうリスクがある点です。

MySQLの準同期レプリケーションでは、トランザクション内容をスレーブに転送してからアプリケーションに応答を返すため、アプリケーションがコミットの応答を得た場合には、確実にトランザクションがマスタとスレーブ上で永続化されることになり、コミット直後にマスタで障害が発生してもトランザクションは保持されます。

図4:非同期レプリケーションと準同期レプリケーションの処理フローの比較(クリックで拡大)

非同期レプリケーションと準同期レプリケーションにはそれぞれ利点があります。

  • 非同期レプリケーション:スレーブを待つ必要が無いため応答時間のオーバーヘッドが無い
  • 準同期レプリケーション:トランザクションを確実にスレーブに転送するため信頼性が高い

複数のスレーブを運用している場合、1台を準同期レプリケーションのスレーブとしてトランザクションの冗長性を高め、他を非同期レプリケーションのスレーブとしてオーバーヘッドを最小限に参照の負荷分散を行うといった構成も可能です。

MySQL 5.5での細かな改善点

MySQL 5.1から実装されたパーティショニングでは、レンジ、ハッシュ、リストの各分割方式とその組み合わせがサポートされています。このパーティショニングのキーとなる列での、日付型のサポートや複数列をキーに指定することが可能となりました。

他にもLOAD XML INFILEコマンドでのXMLのインポート機能、SIGNAL/RESIGNALによるストアドプロシージャでのエラーハンドリング、MySQLサーバ内部の稼働統計情報を取得するPERFORMANCE_SCHEMAなどが新たにMySQL 5.5で追加されています。

MySQLサーバの開発チームでは、稼働環境に合わせて最適化したビルドオプションでバイナリを作成しているため、MySQLでは通常MySQLサーバのバイナリをダウンロードして利用することをお勧めしています。ただし、既存機能の変更や追加などでソースコードからビルドする場合、MySQL 5.5からはビルドツールがGNU AutotoolsからCMakeに変更となっています。

サーバのいくつかのパラメータではデフォルト値が変更になっており、またパラメータ名が変更になったものあります。

例:サーバのキャラクタセットを設定する--default-character-setが--character-set-serverに変更に。クライアント側の設定は変更無し。

詳細は下記をご確認ください。
→参照:1.4. What Is New in MySQL 5.5

次回は開発中のMySQL 5.6での改善ポイントついて解説します。

日本オラクル株式会社

2008年にMySQL社に入社し、アジア各国でのMySQLを活用したシステム構築の導入支援を担当。現在はオラクルのMySQLビジネスユニットでのセールスコンサルティングチームのアジア太平洋地域マネージャー。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています