サーバ/インフラを支える技術 第2章 ワンランク上のサーバ/インフラの構築 その2

今日はキャッシュサーバと MySQLレプリケーションについて。

  • HTTP プロトコルの If-Modified ヘッダとステータスコード 304 Not Modified の話題(Webを支える技術でも読みましたね)
  • Squid キャッシュサーバ
    • Squid をリバースプロキシとして利用できる
    • HTTP プロトコルの機能を使ったページ単位のキャッシュ
    • 静的コンテンツのキャッシュに向いている
  • memcached によるキャッシュ
    • アプリケーションが利用するオブジェクト単位でのデータキャッシュ
    • 動的コンテンツのキャッシュに利用する
  • MySQLレプリケーション
    • 障害時の復旧を素早くできるようにするためデータを複製しておく
    • シングルマスタ、マルチスレーブ
    • 非同期のコピー
    • SQL 文単位でのレプリケーション
      • 大量の更新をする場合でも SQL 文ごと転送するので通信するデータ量は少ない
      • 実行結果に揺らぎがある場合(ORDERD BY を指定しないで LIMIT をつけるなど)はマスターとスレーブで結果が変わってしまってDB内容が食い違う可能性もある
    • 行単位でのレプリケーション
      • 実際に更新された行のデータを転送
    • スレーブは I/O スレッド(マスタからのデータをリレーログに記録)とSQLスレッド(リレーログを参照して更新処理)の2つに分けて処理