Hosting Department:ホスティングを活用するための基礎知識
第12回 ホスティングサービスでDBメンテナンスを学ぶ part.3
ホスティングサービスにおけるDB(データベース)メンテナンスに関する集中連載の第3回として,MySQLへのアクセスを高速化するmemcachedの基本を解説します。また,併せてMySQLに関するTipsをいくつか紹介します。
MySQLを高速化するmemcached
DB(データベース)の巨大化に伴い,レスポンスの向上が課題となっています。その解決策の1つとして脚光を浴びているのが,分散型メモリキャッシュサーバであるmemcachedです。memcachedはDBへのアクセスをキャッシュしてアクセス回数を減少させることで,アクセスの高速化とDBの負荷軽減を実現します。また分散システムに対応し,スケーラビリティの向上にも貢献します。
当初はLiveJournalという,英語圏で主に用いられるCMS(コンテンツ・マネジメント・システム)向けに開発されたmemcachedですが,現在ではLiveJournalのほか,WikipediaやYouTube,mixiなどの大規模サイトでも利用されています。
memcachedの特長
では,memcachedの主な特長を簡単に紹介しましょう。
- クロスプラットフォーム
- memcachedはLinux/FreeBSD/Solaris/MacOS XなどのUNIX系OSのほか,Windowsでも動作します。選択可能なプラットフォームの幅が広く,導入の障壁は低いといえます。
- プロトコルのシンプルさ
- memcachedのプロトコルは行単位のシンプルなものであり,クエリーからの操作の他,シェルからの操作も可能です。当然,PHPやPerl,Ruby,C/C++,C#などの言語からも接続できます。
- オンメモリでの処理
- キャッシュデータは,memcached内蔵のオンメモリストレージに格納します。このため高速に処理可能な半面,memcachedやOSを再起動すると,キャッシュデータが保持されないという難点もあります。
- 分散処理はクライアントで実現
- 分散型キャッシュサーバであるmemcachedですが,実はmemcached同士の通信機能は持たず,自身には分散機能を備えていません。分散処理はmemcachedの機能を利用しつつ,クライアント側で実現します。
- libeventの利用
- memcachedはlibeventという外部ライブラリを使用します。このため,memcachedを利用するにはlibeventもインストールする必要があります。
実際の利用
memcachedのインストールに先立って,前述の外部ライブラリlibeventを忘れずにインストールしましょう。インストールを終えたら,一般的なサーバプログラムと同様にシェルから起動します。デーモンとしての起動も,もちろん可能です。
memcachedをインストールしたからといっても,そのままでは高速化されません。クライアントプログラムやスクリプトをmemcachedを利用するように変更する必要があります。プログラムなどは自力で書き換えても構いませんが,言語別のモジュールが公開されているので,それを利用するのが早道です。
MySQLのTips
集中連載の最後として,MySQLを利用する上で知っていると便利な小技をいくつか紹介します。
MySQLデータのバックアップ/リストアで最も単純な方法は,データファイルのコピーです。ストレージエンジンの種類により方法が少し異なり,一般的なInnoDBではデータディレクトリ以下をそのままコピー/展開すれば事足ります。InnoDBでの手順は,少し複雑になります。
この他,mysqldumpやInnoDB Hot Backupなどのツールを使う方法もあります。
すべての接続情報を記録するには,シェルでmysql --logと指定します。
これにより,いつ誰がどのホストから接続し,どのようなクエリを実行したかを記録できます。
- 参考文献
- gihyo.jp 特集「memcachedを知り尽くす」
- 日本MySQLユーザ会

