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