MySQL5.5 - 性能改善と可用性向上
信頼性を向上させた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での改善ポイントついて解説します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- オラクル、「MySQL 5.7 Development Milestone Release(DMR)」をリリース
- MySQL5.6- さらなる機能追加とNoSQL
- MySQL 5.6での機能強化点(その3)- 人気のレプリケーションが更に機能強化
- PostgreSQLクラスタの動向
- MySQL Connect 2013でも発表されたMySQLの最新リリースと、関連ツールの基礎知識
- MySQLのリアルタイムモニタリングに「innotop」
- ここが新しい!MySQL 5.1
- 高可用性とデータ・シャーディングを実現できるMySQL Fabricとは?
- MySQL 5.6での機能強化点(その1)- パフォーマンスと使い勝手を大きく向上
- MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS