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ユーザ会

おすすめ記事

記事・ニュース一覧