|
|
pgpool-IIとSlony-IでCakePHP 2009/03/13 CakePHP勉強会@福岡 新原 雅司
■自己紹介 新原雅司(しんばら まさし) shin1x1 [Twitter/Wassr etc] Shin x blog [http://www.1x1.jp/blog/] CakePHPガイドブック(共著)
■Agenda 目的 全体構成 CakePHPで使う まとめ
■目的 PostgreSQLを冗長構成にして 「性能向上」「可用性」 を狙う
■全体構成
■pgpool-II PostgreSQL用ミドルウェア コネクションプーリング レプリケーション パラレルクエリ ロードバランス 今回は「マスタ・スレーブ」モードを利用 公式サイトhttp://pgpool.projects.postgresql.org/
■Slony-I PostgreSQL用レプリケーションシステム マスタ-スレーブ構成 非同期レプリケーション 数秒ずれることも。。。 公式サイト http://slony.info/
■CakePHPの対応 データベースの接続先変更 参照クエリの振り分け
■データベースの接続先変更
■データベースの接続先変更 データベース接続先変更 app/config/database.php PostgreSQLではなく、pgpool-IIに接続する
■ 参照クエリの振り分け
■pgpool-II のクエリ振り分け マスタスレーブモード 更新系は全てマスタ トランザクション内も全てマスタ (BEGIN to COMMIT or ROLLBACK) 参照系はスレーブ
■pgpool-II のクエリ振り分けの問題点 参照系クエリがスレーブに Slony-Iは非同期レプリケーション 古いデータを参照してしまう可能性がある 特に管理画面では頻繁に起こりうる ex) 更新したはずのデータが元の値で表示される
■pgpool-II の参照クエリをマスタへ トランザクション内に含める SQL文の先頭にコメントを入れる スレーブへ マスタへ /**/SELECT * FROM users; SELECT * FROM users;
■参照クエリの振り分け DboPostgres#execute()でコメントを付ける 全てのクエリ発行はここを経由 SELECT文ならコメントを付ける フラグを付けて発行先を切り替える public function execute($sql) { if (!AppModel::$toSlave) { if (preg_match('/^SELECT/i', $sql)) { $sql = '/**/'.$sql; } } return parent::execute($sql); } コメント付ける フラグで切り替え
■まとめ pgpool-IIとSlony-Iは十二分に使える 非同期レプリケーションに注意 意外と同期がズレてもokな部分は少ない 「CakePHPによる実践Webアプリケーション開発」 3/26発売! Amazonにて絶賛予約中ですm(_ _)m 「実践本下さい!!」
ご静聴ありがとうございました。 17
| URL: |
No comments posted yet
Comments