ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2009-01-15

不況のときこそMySQL

いやはや世の中は不況である。正直、トヨタが賃金カットに乗り出したというニュースには驚きを禁じ得ない。不況であるならば、賃金ではなくフリーソフトウェアやOSSを利用してITコストをカットして欲しいと思うのが、GPLerの心情である。その中でも、MySQLerとしては商用データベースからMySQLへの移行をお勧めしたい。そして日本企業にもっと安くて速くて安定したデータベースを利用して頂きたいのである。

しかし、そうは言っても商用データベースを使って作り込んだシステムをいきなりMySQLに変更するのは大変なことであろう。そもそもMySQLを運用するのも初めてだ!という方も多いかも知れない。そこで、今日はMySQLを商用環境で運用する際のポイントを紹介したいと思う。

1. ライセンス

これは非常によくある誤解であるが、社内利用するだけの場合、GPLライセンスは何も制約がない。GPLソフトウェアを自由に組み合わせてシステムを構築することが出来るし、改造することも可能である。

GPLソフトウェアを利用すると、必ず自分が作成したものをGPLライセンスで公開しないといけないと思っている人が多いのだが、実際に公開する義務が生じるのはそのソフトウェアを販売・公開・配布などする場合だけである。自分で利用するだけであれば如何なる義務も生じない。むしろ、如何なる使い方をしても良いという自由が保証されたソフトウェアである。

2. ハードウェア・OSの選定

コストを重視するなら、ハードウェアはx86一択だろう。ベンダーはどこでも良い。可用性の高い運用を考えるとサーバを複数台利用したいので、本体価格・サポート共に安いものを選ぶといい。予算に余裕があれば、SSD(現時点ではインテル製の一択)、またはバッテリーバックアップ付きのRAIDカード(Adaptecがオススメ)を使うといいだろう。それだけで性能が飛躍的に向上する。

OSは、価格を重視するならタダで使えるものを選ぶといいだろう。お勧めは筆頭でCentOSであろう。次いでUbuntu。Linuxを選択すると、以降で述べるDRBD/Heartbeatを利用できるのが大きい。

その他のUNIX系OSなら、Solaris、FreeBSDなどを利用しよう。UNIX系OSが嫌ならWindowsでも構わない。Windowsを利用するとOSが有料になってしまうが、商用データベースのライセンス料に比べれば価格の比重は小さい。(とはいえ、Linuxで運用出来るなら、わざわざWindowsにする理由はないのだが。)

3. サポート

本番環境でMySQLを運用するなら、商用サポートを利用することをオススメする。特に、MySQL運用の経験が浅いうちは必須であろう。サポートに入るメリットは時間を節約できることである。何か問題が起こった時に素早く復旧できるというだけでなく、原因の調査(ITILでいうところの問題管理)にかかる時間を圧倒的に短縮できる。

また、開発期間中からサポートに入ると、使い方や実装についてのアドバイスを受けたり、開発中に起きた問題を早期解決することが出来るので、開発期間の短縮に繋がるだろう。

お金を節約して時間をかけるか、時間を節約してお金をかけるか?サポートを購入すると時間を節約できるのである。

幸いにしてMySQLのサポートはそれほど高くない。(サブスクリプション契約ではライセンス料は無料である。)

サポートに興味がある人はMySQL担当者に連絡しよう。
http://www-jp.mysql.com/about/contact/

4. バックアップ運用

商用データベースを利用している場合でも同じだと思うが、バックアップ運用は必須である。よく言われることであるが、RAIDのミラーリングだけでは絶対に不十分で、その場合誤ってデータを削除するなどの人為的なミスに対応することが出来ない。もちろん、ディスク不良(RAIDの場合はダブルフェイル)が発生した時に、データを消失してしまうことがないよう、バックアップは確実に採取するようにしたい。

夜間にアクセスが発生しない場合があるなら、mysqldumpなどでバックアップをとるといいだろう。24時間ずっとアクセスが発生するシステムならばMySQLのレプリケーション機能を利用して、スレーブからバックアップを取る方法がある。

5. HAソリューション

Linuxを利用している場合には、DRBD+Heartbeatという格安のHAソリューションが存在する。DRBD+Heartbeatについては過去に解説しているのでそちらを参照して欲しい。
http://nippondanji.blogspot.com/2008/05/blog-post_30.html

DRBDの特徴は、共有ディスクが必要ないということである。また、DRBDはMySQLサブスクリプションでもサポートしている。(ただしDRBDは追加オプションなので、利用時は料金が少しだけ割り増しになる。)

また、HA機能を内蔵したストレージエンジンであるMySQL Clusterもある。MySQL Clusterは並列負荷分散型のRDBMSであり、フェイルオーバー機能を備えているのが特徴である。(フェイルオーバーにかかる時間は数秒程度)

6. 監視

MySQLのサブスクリプションを購入しているならば、MySQL Enterprise Monitor(以降MEM)を利用できる。MEMはSNMPトラップを発生させられるので、他の監視ソフトウェアと組み合わせることも可能である。MEMは死活監視だけでなく、パフォーマンスやキャパシティなどを監視できる総合監視ツールである。

死活監視や簡単な状態監視だけで良ければ、簡単な監視スクリプトをNagios等の監視ツール上で運用すれば良い。

7. セキュリティ

MySQLのセキュリティ機能は、基本的に他のRDBMSと変わらない。認証方式はパスワードであるし、通信経路はSSLで守ることが出来る。アプリケーションとMySQLを単一のホストに同居させるなら、外部からの接続を遮断するという選択もある。また、SQLインジェクション対策などはアプリケーション側で行わなければいけないというところも同じである。つまり、極めてシンプルに要約すると、MySQLでは次のセキュリティ対策が必要になる。
  • 盗聴対策=SSLを使用する。
  • 不正ログイン対策1=ユーザー管理=不要なユーザを削除する+必要以上の権限を与えないようにする。
  • 不正ログイン対策2=パスワードの漏洩を防ぐ=アプリケーション側の接続設定が第3者から見られない様にする。
  • SQLインジェクション対策=アプリケーション側で対策する。

というわけで、MySQLは安価ながらも商用データベースの代替になり得る機能を備えているので、この不況をぜひMySQLで乗り切っていただきたい!!!

0 コメント:

コメントを投稿