More info...

2009-12-16

MySQL 5.5登場

MySQL 5.5がリリースされた。「えっ?!この前5.4をリリースしたばっかりでしょ?!まだ5.4すら使ってないよ!!」と驚かれた方はご安心を。これは開発リリースモデルが変更されたためで、MySQL 5.4はこれでいったん開発終了して今後の開発はバージョン5.5をベースにして継続されることになる。バージョン5.4も5.5も「マイルストーンリリース」(以下MR)という位置づけであり、GA(正式リリース)版ではない点に注意して頂きたい。MR版の位置づけは次のようなもの。
  • 品質的にはRC(リリース候補)版と同レベル(従ってほぼ安定している)
  • 3〜6ヶ月ごとに新しいバージョンが出る
  • 新しいMR版では機能が追加されることになるが、RC版と同レベルまで安定した機能だけが追加の対象になる
  • MR版へ追加する予定の機能については別のブランチで開発が進められる
  • 12〜18ヶ月ごとにMRのうち一つをGA版へと昇華させる
このモデルはMySQL 5.1のリリースで得た教訓(機能を詰め込みすぎたためリリースまでに凄く時間が掛かってしまった)を活かして、豊富な機能を効率的に実装していこうという取り組みの結果産まれたものである。従って、次は数ヶ月後にMySQL 5.6が披露されることになるだろうが驚かないで頂きたい。5.6で統合される機能についてはまだ確定はしていないが、候補として挙がっているもの(例えば4 byte UTF-8への対応やなど)の中から開発が進み品質が安定したものだけがマージされることになるだろう。MySQL 5.6についても楽しみにしておいて頂きたい!!

さて、今回リリースされたMySQL 5.5であるが、品質的には既にRC版と同レベルなので「問題が起きても気合いと根性とハックで乗り切ってやる!」というパワーユーザーは現場で使って頂いて構わない。というかむしろガンガン使って頂いて問題を焙り出して頂くと大変有り難いので一つよろしくお願いします!!!!111また、MR版についてもオフィシャルな商用サポートが受けられるので、サポートを受けたい方はMySQLのサブスクリプションを購入して頂きたい。(しっかりサポートするのでぜひw)

次に新機能の紹介に移るが、その前におさらいとしてMySQL 5.4で追加された機能を見てみよう。
  • InnoDBの性能改善(I/O、CPUスケーラビリティなど。この改善はInnoDB Pluginに引き継がれている。)
  • DTrace Probeの追加
  • 設定値のデフォルト値を変更(より多くのリソースを使うように)
  • INFORMATION_SCHEMAの拡張
  • SHOW ENGINE INNODB STATUSの拡張(さらなる情報の表示)
※結局BKA JOINとサブクエリ最適化は見送られた。

さらにMySQL 5.5で追加された新機能は次の通り。
  • Semi-Synchronous Replication(日本語では準同期レプリケーションとでも言うかな?)
  • InnoDB Plugin 1.0.5がビルトインのInnoDBと置き換えられた。
  • ストアドプロシージャにおけるSIGNAL/RESIGNAL機能。
  • XML機能の拡充(LOAD XML文など)
  • パーティショニングの種類が追加(RANGE COLUMNS/LIST COLUMNS/INT以外の型のサポート)
  • ALTER TABLE ... TRUNCATE PARTITION文の追加
  • パーティショニングされたMyISAMテーブルに対するCACHE INDEXのサポート
  • TO_SECONDS()関数(ただしFROM_SECONDS()はない。機能追加要求済み。http://bugs.mysql.com/49729 自分でパッチ書くか・・・
この通り、MySQL 5.5ではMySQL 5.4に比べて大幅な機能追加が行われている。その中でも特に目玉となる機能が「Semi-Synchronous Replication」である。Semi-Synchronous Replicationの動作原理は以前に本ブログで紹介した通りなのでそちらも参照して頂きたい。Semi-Synchronous Replicationの設定方法は次の通り。

1. Semi-Synchronous Replication用プラグインをインストールする。

マスター上
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'libsemisync_master.so';

スレーブ上
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'libsemisync_slave.so';

2. Semi-Synchronous Replicationを有効にする。

マスター上
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

スレーブ上
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;

3. スレーブI/Oスレッドを再起動する。
mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

Semi-Synchronous Replicationは最強のHAソリューションになり得る機能であり、こいつを利用すれば速ければ1秒未満でフェイルオーバーすることも可能だ。高速なフェイルオーバーが必要な場合にはActive-Active構成のクラスタソリューションを利用する場合が多いが、Active-Active構成であってもクライアントはフェイルオーバー先にDBへ再接続しなければならないのでフェイルオーバーに掛かる時間はゼロではない。再接続にそれなりに時間が掛かることを考えると、Semi-Synchronous Replicationのフェイルオーバー時間が問題になることは少ないだろう。従って、もはや高速なフェイルオーバーだけを目的としたActive-Active構成のクラスタは不要!であろう。また、InnoDB Pluginによる垂直スケーラビリティ向上の効果は絶大なので、高性能なハードウェアを利用すれば「性能向上のためのActive-Active構成のクラスタ」すらも不要になる可能性もある。(Semi-Synchronous Replicationを用いたHAクラスタの構成には多少の癖があるので、詳細は以前書いたエントリを参照して頂きたい。)

現在何かと世間を騒がせているMySQLであるが、このように目覚ましい速度で開発が進められているということは特筆すべきである。オラクル社もMySQLへのさらなる投資を公約しているので、今後もこの開発ペースが衰える事はないだろう。なので安心してMySQLを使って頂きたい!!!MySQl 5.6にも乞うご期待!!!

0 件のコメント:

コメントを投稿