PostgreSQL 9.0 アップデートレプリケーションがやってきた!日本PostgreSQLユーザ会NTT OSSセンタ藤井 雅雄OSC2010 Kansai@Kyoto
お品書き• レプリケーション以外の新機能• レプリケーション
9.0は5年ぶりの「記念リリース」                • レプリケーションをぜひ使って欲しい!Ingress Ingress                                                      ...
レプリケーション以外の新機能
1. VACUUM FULLの刷新
VACUUM         進化し続けるVACUUM                    FULL刷新                                                       9.0         au...
VACUUM vs. VACUUM FULLid   name             id   name                 id   name1    京都      VACUUM   1    京都     VACUUM FU...
VACUUM FULLは使ってはならない (~8.4)• 時間がかかる• 排他ロック• 順序性が壊れる• インデックスのゴミが増える
VACUUM FULLの改善 ~8.4            9.0~
VACUUM FULLの利用価値UP (9.0~)• 高速• 排他ロック• 順序性はそのまま• インデックスのゴミも掃除※基本的にはVACUUMで十分
2. 排他制約
範囲や地理データ型の“重なり”を制限  • 一意性制約 (UNIQUE)    – “点” の “一致” を禁止N • 排他制約 (EXCLUDE) E  W    – “広がり” を持つ型の “重なり” を禁止   地理データ型の重なり   ...
空間を占めるオブジェクトの重なりを避ける例 CREATE TABLE placement (    object text,    location box, -- 矩形    EXCLUDE USING gist (location WITH...
3. application_name
コネクションに名前を付与できる                       chat          blog                                                  shopping活動状況    ...
その他
• 条件付き 及び 列単位のトリガ• アクセス制御のデフォルト設定 / 一括変更• LISTEN/NOTIFY の高速化 / メッセージ送信• Windows 環境での 64-bit 版サポート※新機能は Let’s postgres で紹介中...
レプリケーション
ウォームスタンバイの発展系 アーカイブ・  リカバリ                       9.0オンライン・バックアップ         8.3                 レプリケーション         8.0         ...
9.0 レプリケーション =            クライアント                           ホット・スタンバイ      SQL            SQLマスタ                    スタンバイ  ...
なぜレプリケーションが必要?高可用性                 負荷分散      クライアント                     クライアント               SQL         SQL            SQ...
特徴
マスタ / 複数スタンバイ              クライアント      更新SQL            参照SQL   複数スタンバイマスタ               変更
カスケード     NG      クライアント                 参照SQL     複数スタンバイ 更新SQLマスタ           スタンバイ         変更           変更
ログシッピング        クライアント       更新SQL マスタ                          スタンバイ               WAL                               リカバリ ...
メジャーバージョンとアーキテクチャの一致             クライアント   スタンバイ                              OS: 32bitマスタ                              PG:...
既存APをそのままレプリケーションに移行可能クライアント              クライアント              マスタ        スタンバイ 単独
DB全体をレプリケーションDB全体            テーブルごと マスタ   スタンバイ    マスタ      スタンバイ
WALが書かれないものはレプリケーションされない• サーバログ• パラメータの設定変更
シェアード・ナッシングシェアード・ナッシング           共有ディスク    マスタ       スタンバイ   マスタ      スタンバイ
非同期レプリケーション              クライアント  COMMITマスタ            “成功”                       スタンバイ      fsync      WAL
ホット・スタンバイ実行OK                          実行NG  SELECT                        INSERT / UPDATE / DELETE  SET                  ...
最新の変更が見えない SELECT count(*) =   3件   SELECT count(*) =   2件              参照                       参照マスタ                    ...
参照SQL vs. リカバリ                            SELECT                                 参照マスタ                    競合             ス...
手動フェイルオーバ         自動切り離し      クライアント            クライアントマスタ       スタンバイ   マスタ       スタンバイ
自動フェイルオーバ+ Pacemaker           + pgpool-II         クライアント                   クライアント       SQL  仮想IP                        ...
オンライン再組み込み      クライアントマスタ               スタンバイ
PostgreSQL組み込み• 簡単なインストール & 使い方• マルチプラットホーム• 日本語ドキュメント• 活発な開発
9.0は5年ぶりの「記念リリース」                • レプリケーションをぜひ使って欲しい!Ingress Ingress                                                      ...
ご清聴ありがとうございました
レコード単位のレプリケーション       レコード単位                スタンバイ マスタ       ファイル単位   スタンバイ
スタンバイ起動直後は接続できないマスタ          スタンバイバックアップ開始                     接続NG      1バックアップ完了      2                     接続OK      3
使いどころ• 参照スケールアウト• データ損失を許す高可用• ディザスタ・リカバリ
Upcoming SlideShare
Loading in …5
×

PostgreSQL9.0アップデート レプリケーションがやってきた!

1,379 views

Published on

@オープンソースカンファレンス2010 Kansai@Kyoto
http://www.ospn.jp/osc2010-kyoto/modules/eguide/event.php?eid=48

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,379
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PostgreSQL9.0アップデート レプリケーションがやってきた!

  1. 1. PostgreSQL 9.0 アップデートレプリケーションがやってきた!日本PostgreSQLユーザ会NTT OSSセンタ藤井 雅雄OSC2010 Kansai@Kyoto
  2. 2. お品書き• レプリケーション以外の新機能• レプリケーション
  3. 3. 9.0は5年ぶりの「記念リリース」 • レプリケーションをぜひ使って欲しい!Ingress Ingress 9.0 PostgreSQL PostgreSQL 8.1 6.0 6.0 (2010/8予定)1977 7.4 7.4 •パーティショニング •パーティショニング 8.3 1986 •2相コミット •2相コミット •HOT: 更新性能向上 •HOT: 更新性能向上 1996 2000 2003 •バッファ管理改良 •バッファ管理改良 •VACUUM自動化 •VACUUM自動化 •レプリケーション 2004 •全文テキスト検索 •全文テキスト検索 •列 / 条件付きトリガ •列 / 条件付きトリガPOSTGRESPOSTGRES 2005 •排他制約 2006 •排他制約 7.3 7.3 •Windows 64bit対応 2007 •Windows 64bit対応 2008 2009 8.0 2010 •Windows対応 8.2 •Windows対応 •セーブポイント •セーブポイント •CPUスケール •CPUスケール •メディア故障対応(PITR) •メディア故障対応(PITR) •オンライン索引作成 •オンライン索引作成 8.4 •テーブルスペース •テーブルスペース •GIN: 汎用転置索引 •GIN: 汎用転置索引 Window関数・再帰クエリ Window関数・再帰クエリ •VACUUM用メモリ自動管理 •VACUUM用メモリ自動管理 •他DBMS互換性向上 •他DBMS互換性向上
  4. 4. レプリケーション以外の新機能
  5. 5. 1. VACUUM FULLの刷新
  6. 6. VACUUM 進化し続けるVACUUM FULL刷新 9.0 autovacuum 8.4 コア統合 8.3VACUUM 8.2 自動メモリ管理遅延設定 8.1 HOT 8.0 7.4 XID周回 複数プロセス 管理改善 autovacuum REINDEX インデックスの 参照クエリでの ほぼ不要化 VACUUM改良 XID消費抑制
  7. 7. VACUUM vs. VACUUM FULLid name id name id name1 京都 VACUUM 1 京都 VACUUM FULL 1 京都 2 東京 3 兵庫 3 神奈川 2 大阪 UPDATE2 大阪 2 大阪3 兵庫 3 兵庫
  8. 8. VACUUM FULLは使ってはならない (~8.4)• 時間がかかる• 排他ロック• 順序性が壊れる• インデックスのゴミが増える
  9. 9. VACUUM FULLの改善 ~8.4 9.0~
  10. 10. VACUUM FULLの利用価値UP (9.0~)• 高速• 排他ロック• 順序性はそのまま• インデックスのゴミも掃除※基本的にはVACUUMで十分
  11. 11. 2. 排他制約
  12. 12. 範囲や地理データ型の“重なり”を制限 • 一意性制約 (UNIQUE) – “点” の “一致” を禁止N • 排他制約 (EXCLUDE) E W – “広がり” を持つ型の “重なり” を禁止 地理データ型の重なり 予約時間の重なり
  13. 13. 空間を占めるオブジェクトの重なりを避ける例 CREATE TABLE placement ( object text, location box, -- 矩形 EXCLUDE USING gist (location WITH &&) );
  14. 14. 3. application_name
  15. 15. コネクションに名前を付与できる chat blog shopping活動状況 サーバログ [blog] LOG: unexpected EOF on client connectionSELECT * FROM pg_stat_activity [chat] ERROR: deadlock detected WHERE application_name = ‘blog’ ...
  16. 16. その他
  17. 17. • 条件付き 及び 列単位のトリガ• アクセス制御のデフォルト設定 / 一括変更• LISTEN/NOTIFY の高速化 / メッセージ送信• Windows 環境での 64-bit 版サポート※新機能は Let’s postgres で紹介中!• http://lets.postgresql.jp/documents/technical/9.0/
  18. 18. レプリケーション
  19. 19. ウォームスタンバイの発展系 アーカイブ・ リカバリ 9.0オンライン・バックアップ 8.3 レプリケーション 8.0 ウォーム・ スタンバイ
  20. 20. 9.0 レプリケーション = クライアント ホット・スタンバイ SQL SQLマスタ スタンバイ 変更 ストリーミング・レプリケーション
  21. 21. なぜレプリケーションが必要?高可用性 負荷分散 クライアント クライアント SQL SQL SQLマスタ スタンバイ マスタ スタンバイ
  22. 22. 特徴
  23. 23. マスタ / 複数スタンバイ クライアント 更新SQL 参照SQL 複数スタンバイマスタ 変更
  24. 24. カスケード NG クライアント 参照SQL 複数スタンバイ 更新SQLマスタ スタンバイ 変更 変更
  25. 25. ログシッピング クライアント 更新SQL マスタ スタンバイ WAL リカバリ WAL WAL データベース
  26. 26. メジャーバージョンとアーキテクチャの一致 クライアント スタンバイ OS: 32bitマスタ PG: v9.1.0OS: 64bitPG: v9.0.0 OS: 64bit PG: v9.0.2
  27. 27. 既存APをそのままレプリケーションに移行可能クライアント クライアント マスタ スタンバイ 単独
  28. 28. DB全体をレプリケーションDB全体 テーブルごと マスタ スタンバイ マスタ スタンバイ
  29. 29. WALが書かれないものはレプリケーションされない• サーバログ• パラメータの設定変更
  30. 30. シェアード・ナッシングシェアード・ナッシング 共有ディスク マスタ スタンバイ マスタ スタンバイ
  31. 31. 非同期レプリケーション クライアント COMMITマスタ “成功” スタンバイ fsync WAL
  32. 32. ホット・スタンバイ実行OK 実行NG SELECT INSERT / UPDATE / DELETE SET CREATE / DROP / ALTER BEGIN / COMMIT / ROLLBACK VACUUM / ANALYZE バックアップ 一時テーブル
  33. 33. 最新の変更が見えない SELECT count(*) = 3件 SELECT count(*) = 2件 参照 参照マスタ スタンバイ 挿入 挿入 INSERT リカバリ
  34. 34. 参照SQL vs. リカバリ SELECT 参照マスタ 競合 スタンバイ 掃除 掃除 VACUUM リカバリ
  35. 35. 手動フェイルオーバ 自動切り離し クライアント クライアントマスタ スタンバイ マスタ スタンバイ
  36. 36. 自動フェイルオーバ+ Pacemaker + pgpool-II クライアント クライアント SQL 仮想IP pgpool-II SQL SQL マスタ スタンバイ マスタ スタンバイ
  37. 37. オンライン再組み込み クライアントマスタ スタンバイ
  38. 38. PostgreSQL組み込み• 簡単なインストール & 使い方• マルチプラットホーム• 日本語ドキュメント• 活発な開発
  39. 39. 9.0は5年ぶりの「記念リリース」 • レプリケーションをぜひ使って欲しい!Ingress Ingress 9.0 PostgreSQL PostgreSQL 8.1 6.0 6.0 (2010/8予定)1977 7.4 7.4 •パーティショニング •パーティショニング 8.3 1986 •2相コミット •2相コミット •HOT: 更新性能向上 •HOT: 更新性能向上 1996 2000 2003 •バッファ管理改良 •バッファ管理改良 •VACUUM自動化 •VACUUM自動化 •レプリケーション 2004 •全文テキスト検索 •全文テキスト検索 •列 / 条件付きトリガ •列 / 条件付きトリガPOSTGRESPOSTGRES 2005 •排他制約 2006 •排他制約 7.3 7.3 •Windows 64bit対応 2007 •Windows 64bit対応 2008 2009 8.0 2010 •Windows対応 8.2 •Windows対応 •セーブポイント •セーブポイント •CPUスケール •CPUスケール •メディア故障対応(PITR) •メディア故障対応(PITR) •オンライン索引作成 •オンライン索引作成 8.4 •テーブルスペース •テーブルスペース •GIN: 汎用転置索引 •GIN: 汎用転置索引 Window関数・再帰クエリ Window関数・再帰クエリ •VACUUM用メモリ自動管理 •VACUUM用メモリ自動管理 •他DBMS互換性向上 •他DBMS互換性向上
  40. 40. ご清聴ありがとうございました
  41. 41. レコード単位のレプリケーション レコード単位 スタンバイ マスタ ファイル単位 スタンバイ
  42. 42. スタンバイ起動直後は接続できないマスタ スタンバイバックアップ開始 接続NG 1バックアップ完了 2 接続OK 3
  43. 43. 使いどころ• 参照スケールアウト• データ損失を許す高可用• ディザスタ・リカバリ

×