pgpool-IIとSlony-IでCakePHP

0

No comments posted yet

Comments

Slide 1

pgpool-IIとSlony-IでCakePHP 2009/03/13 CakePHP勉強会@福岡 新原 雅司

Slide 2

■自己紹介 新原雅司(しんばら まさし) shin1x1 [Twitter/Wassr etc] Shin x blog [http://www.1x1.jp/blog/] CakePHPガイドブック(共著)

Slide 3

■Agenda 目的 全体構成 CakePHPで使う まとめ

Slide 4

■目的 PostgreSQLを冗長構成にして 「性能向上」「可用性」 を狙う

Slide 5

■全体構成

Slide 6

■pgpool-II PostgreSQL用ミドルウェア コネクションプーリング レプリケーション パラレルクエリ ロードバランス 今回は「マスタ・スレーブ」モードを利用 公式サイトhttp://pgpool.projects.postgresql.org/

Slide 7

■Slony-I PostgreSQL用レプリケーションシステム マスタ-スレーブ構成 非同期レプリケーション 数秒ずれることも。。。 公式サイト http://slony.info/

Slide 8

■CakePHPの対応 データベースの接続先変更 参照クエリの振り分け

Slide 9

■データベースの接続先変更

Slide 10

■データベースの接続先変更 データベース接続先変更 app/config/database.php PostgreSQLではなく、pgpool-IIに接続する

Slide 11

■ 参照クエリの振り分け

Slide 12

■pgpool-II のクエリ振り分け マスタスレーブモード 更新系は全てマスタ トランザクション内も全てマスタ (BEGIN to COMMIT or ROLLBACK) 参照系はスレーブ

Slide 13

■pgpool-II のクエリ振り分けの問題点 参照系クエリがスレーブに Slony-Iは非同期レプリケーション 古いデータを参照してしまう可能性がある 特に管理画面では頻繁に起こりうる ex) 更新したはずのデータが元の値で表示される

Slide 14

■pgpool-II の参照クエリをマスタへ トランザクション内に含める SQL文の先頭にコメントを入れる スレーブへ マスタへ /**/SELECT * FROM users; SELECT * FROM users;

Slide 15

■参照クエリの振り分け DboPostgres#execute()でコメントを付ける 全てのクエリ発行はここを経由 SELECT文ならコメントを付ける フラグを付けて発行先を切り替える public function execute($sql) { if (!AppModel::$toSlave) { if (preg_match('/^SELECT/i', $sql)) { $sql = '/**/'.$sql; } } return parent::execute($sql); } コメント付ける フラグで切り替え

Slide 16

■まとめ pgpool-IIとSlony-Iは十二分に使える 非同期レプリケーションに注意 意外と同期がズレてもokな部分は少ない 「CakePHPによる実践Webアプリケーション開発」 3/26発売! Amazonにて絶賛予約中ですm(_ _)m   「実践本下さい!!」

Slide 17

ご静聴ありがとうございました。 17

Tags: cakephp postgresql pgpool slony

URL: