Hosting Department:ホスティングを活用するための基礎知識

第12回 ホスティングサービスでDBメンテナンスを学ぶ part.3

この記事を読むのに必要な時間:およそ 1 分

ホスティングサービスにおける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ユーザ会

コメント

コメントの記入