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

43
PostgreSQL 9.0 アップデート レプリケーションがやってきた! 日本PostgreSQLユーザ会 NTT OSSセンタ 藤井 雅雄 OSC2010 Kansai@Kyoto

Upload: others

Post on 24-May-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

PostgreSQL 9.0 アップデート

レプリケーションがやってきた!

日本PostgreSQLユーザ会

NTT OSSセンタ

藤井 雅雄

OSC2010 Kansai@Kyoto

Page 2: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

お品書き

•レプリケーション以外の新機能

•レプリケーション

Page 3: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

1977

20032004

20052006

20072008

2009

20001996

1986

PostgreSQL6.0

PostgreSQL6.0

7.37.3

7.47.4

IngressIngress

POSTGRESPOSTGRES

•Windows対応•セーブポイント•メディア故障対応(PITR)•テーブルスペース

•Windows対応•セーブポイント•メディア故障対応(PITR)•テーブルスペース

8.0

•パーティショニング•2相コミット

•バッファ管理改良

•パーティショニング•2相コミット

•バッファ管理改良

8.1

•CPUスケール

•オンライン索引作成•GIN: 汎用転置索引

•CPUスケール

•オンライン索引作成•GIN: 汎用転置索引

8.2

•HOT: 更新性能向上•VACUUM自動化

•全文テキスト検索

•HOT: 更新性能向上•VACUUM自動化

•全文テキスト検索

8.3

2010

Window関数・再帰クエリ•VACUUM用メモリ自動管理•他DBMS互換性向上

Window関数・再帰クエリ•VACUUM用メモリ自動管理•他DBMS互換性向上

8.4

•レプリケーション•列 / 条件付きトリガ

•排他制約•Windows 64bit対応

•レプリケーション•列 / 条件付きトリガ

•排他制約•Windows 64bit対応

9.0 (2010/8予定)

9.0は5年ぶりの「記念リリース」

• レプリケーションをぜひ使って欲しい!

Page 4: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

レプリケーション以外の新機能

Page 5: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

1.VACUUM FULLの刷新

Page 6: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

8.28.3

進化し続けるVACUUM

8.1

autovacuumコア統合

自動メモリ管理

HOT

複数プロセスautovacuum

8.49.0

VACUUMFULL刷新

XID周回

管理改善

8.0

VACUUM遅延設定

7.4

REINDEXほぼ不要化

参照クエリでのXID消費抑制

インデックスのVACUUM改良

Page 7: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

VACUUM vs. VACUUM FULL

大阪2

兵庫3

神奈川3

東京2

京都1

nameid

大阪2

兵庫3

京都1

nameid

兵庫3

大阪2

京都1

nameid

UPDATE

VACUUM VACUUM FULL

Page 8: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

VACUUM FULLは使ってはならない (~8.4)

• 時間がかかる

• 排他ロック

• 順序性が壊れる

• インデックスのゴミが増える

Page 9: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

~8.4 9.0~

VACUUM FULLの改善

Page 10: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

VACUUM FULLの利用価値UP (9.0~)

• 高速

• 排他ロック

• 順序性はそのまま

• インデックスのゴミも掃除

※基本的にはVACUUMで十分

Page 11: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

2.排他制約

Page 12: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

範囲や地理データ型の“重なり”を制限

•一意性制約 (UNIQUE)– “点” の “一致” を禁止

•排他制約 (EXCLUDE)– “広がり” を持つ型の “重なり” を禁止

地理データ型の重なり 予約時間の重なり

NEW

Page 13: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

空間を占めるオブジェクトの重なりを避ける例

CREATE TABLE placement (object text,location box, -- 矩形

EXCLUDE USING gist (location WITH &&));

Page 14: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

3.application_name

Page 15: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

コネクションに名前を付与できる

shoppingblogchat

SELECT *FROM pg_stat_activityWHERE application_name = ‘blog’

[blog] LOG: unexpected EOF on client connection

[chat] ERROR: deadlock detected

...

サーバログ活動状況

Page 16: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

その他

Page 17: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

• 条件付き 及び 列単位のトリガ

• アクセス制御のデフォルト設定 / 一括変更

• LISTEN/NOTIFY の高速化 / メッセージ送信

• Windows 環境での 64-bit 版サポート

※新機能は Let’s postgres で紹介中!• http://lets.postgresql.jp/documents/technical/9.0/

Page 18: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

レプリケーション

Page 19: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

8.3

ウォームスタンバイの発展系

アーカイブ・リカバリ

ウォーム・スタンバイ

9.0

レプリケーション

8.0

オンライン・バックアップ

Page 20: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

SQL

ホット・スタンバイ

ストリーミング・レプリケーション

クライアント

SQL

スタンバイマスタ

変更

9.0 レプリケーション =

Page 21: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

高可用性 負荷分散

マスタ スタンバイ

クライアント

マスタ スタンバイ

クライアント

なぜレプリケーションが必要?

SQL SQLSQL

Page 22: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

特徴

Page 23: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

複数スタンバイ

マスタ

更新SQL

クライアント

変更

マスタ / 複数スタンバイ

参照SQL

Page 24: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

カスケード NG

マスタ スタンバイ

クライアント

複数スタンバイ

変更 変更

更新SQL 参照SQL

Page 25: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

WALリカバリ

データベースWALWAL

更新SQLマスタ

クライアント

スタンバイ

ログシッピング

Page 26: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

メジャーバージョンとアーキテクチャの一致

マスタ

スタンバイクライアント

OS: 64bit

PG: v9.0.0

PG: v9.1.0

OS: 32bit

OS: 64bit

PG: v9.0.2

Page 27: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

既存APをそのままレプリケーションに移行可能

マスタ

クライアント

スタンバイ

クライアント

単独

Page 28: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

DB全体 テーブルごと

DB全体をレプリケーション

マスタ スタンバイ マスタ スタンバイ

Page 29: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

WALが書かれないものはレプリケーションされない

• サーバログ

• パラメータの設定変更

Page 30: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

シェアード・ナッシング 共有ディスク

マスタ スタンバイ マスタ スタンバイ

シェアード・ナッシング

Page 31: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

マスタ スタンバイ

クライアント

COMMIT

“成功”

WAL

fsync

非同期レプリケーション

Page 32: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

ホット・スタンバイ

実行OK

SELECT

SET

BEGIN / COMMIT / ROLLBACK

バックアップ

実行NG

INSERT / UPDATE / DELETE

CREATE / DROP / ALTER

VACUUM / ANALYZE

一時テーブル

Page 33: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

最新の変更が見えない

INSERT

SELECT count(*) = 2件

リカバリ

挿入

参照

マスタ スタンバイ

挿入

SELECT count(*) = 3件

参照

Page 34: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

参照SQL vs. リカバリ

VACUUM

SELECT

リカバリ

掃除

参照

掃除

マスタ スタンバイ競合

Page 35: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

手動フェイルオーバ 自動切り離し

マスタ スタンバイ

クライアント

マスタ スタンバイ

クライアント

Page 36: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

+ Pacemaker + pgpool-II

マスタ スタンバイ

クライアント

マスタ スタンバイ

クライアント

自動フェイルオーバ

SQL

SQLSQL

仮想IP pgpool-II

Page 37: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

オンライン再組み込み

マスタ

スタンバイ

クライアント

Page 38: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

PostgreSQL組み込み

• 簡単なインストール & 使い方

• マルチプラットホーム

• 日本語ドキュメント

• 活発な開発

Page 39: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

1977

20032004

20052006

20072008

2009

20001996

1986

PostgreSQL6.0

PostgreSQL6.0

7.37.3

7.47.4

IngressIngress

POSTGRESPOSTGRES

•Windows対応•セーブポイント•メディア故障対応(PITR)•テーブルスペース

•Windows対応•セーブポイント•メディア故障対応(PITR)•テーブルスペース

8.0

•パーティショニング•2相コミット

•バッファ管理改良

•パーティショニング•2相コミット

•バッファ管理改良

8.1

•CPUスケール

•オンライン索引作成•GIN: 汎用転置索引

•CPUスケール

•オンライン索引作成•GIN: 汎用転置索引

8.2

•HOT: 更新性能向上•VACUUM自動化

•全文テキスト検索

•HOT: 更新性能向上•VACUUM自動化

•全文テキスト検索

8.3

2010

Window関数・再帰クエリ•VACUUM用メモリ自動管理•他DBMS互換性向上

Window関数・再帰クエリ•VACUUM用メモリ自動管理•他DBMS互換性向上

8.4

•レプリケーション•列 / 条件付きトリガ

•排他制約•Windows 64bit対応

•レプリケーション•列 / 条件付きトリガ

•排他制約•Windows 64bit対応

9.0 (2010/8予定)

9.0は5年ぶりの「記念リリース」

• レプリケーションをぜひ使って欲しい!

Page 40: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

ご清聴ありがとうございました

Page 41: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

レコード単位のレプリケーション

レコード単位

ファイル単位

マスタ

スタンバイ

スタンバイ

Page 42: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

スタンバイ起動直後は接続できない

バックアップ開始

バックアップ完了

1

2

3

接続NG

接続OK

マスタ スタンバイ

Page 43: PostgreSQL 9.0 アップデート レプリケーションがやってきた! · PostgreSQL 9.0 アップデート ... NTT OSSセンタ 藤井雅雄 OSC2010 Kansai@Kyoto. お品書き

使いどころ

• 参照スケールアウト

• データ損失を許す高可用

• ディザスタ・リカバリ