65
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 1 Windows でも PostgreSQL が使いたい 2018/12/10 PGConf.ASIA 2018 Day-0 NTTテクノクロス株式会社 山本 育

Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 1

WindowsでもPostgreSQLが使いたい

2018/12/10

PGConf.ASIA 2018 Day-0

NTTテクノクロス株式会社 山本 育

Page 2: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

目次

自己紹介

PostgreSQL for Windowsの歴史

導入方法

Linux版とWindows版の相違点

高可用性

性能評価

まとめ

2

Page 3: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

自己紹介

NTTテクノクロス株式会社 所属

山本 育

本日はPGEConsメンバの立場で発表します

PGECons = PostgreSQL Enterprise Consortium

https://www.pgecons.org/

Twitter #pgecons

3

Page 4: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 4

突然ですが…

Page 5: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 5

お客様の中にPostgreSQLを使ったことがある方は

いらっしゃいますか?✋🐘

Page 6: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 6

お客様の中にPostgreSQLをWindowsで使ったことがある方はいらっしゃいますか?✋🐘

Page 7: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PostgreSQL for Windowsの歴史

PostgreSQLはUnix互換プラットフォーム(RHEL, CentOS, Ubuntu, etc..)で動作させることが多い

もちろんPostgreSQLはWindowsでも動きます

7

Page 8: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PostgreSQL for Windowsの歴史

Windows版PostgreSQLの誕生から今に至るまでの、主な変更点

8

バージョン PostgreSQL for Windows構築

初期 Windows上では動作しない

~7.4 cygwin上で動作

8.0~ Windows上で動作するようになったGUIでインストールできるようになった

9.0~ 64ビットモードで動くようになった

9.6~ update_process_titleがデフォルトで無効になった

[PostgreSQL 9.6文書 リリースノートより]Windowsでは大部分の他プラットフォームよりもプロセスタイトルを更新するオーバーヘッドが大きく、また、大部分のWindowsユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。

Page 9: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

HOW TO INSTALL?

はじめのいっぽ

9

Page 10: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

導入方法

Windows for PostgreSQLを使うには

1. インストーラーを利用https://www.postgresql.org/download/windows/

2. ソースコードからインストールhttps://www.postgresql.org/docs/10/static/install-windows.html

詳細はPGEconsのWebで公開しています

https://pgecons-sec-tech.github.io/tech-report/html_wg3_windows/wg3_windows.html -e9929a972c8b27eec178dfecf58d9f8a

10

Page 11: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

導入方法 from インストーラー

1. EnterpriseDB社から提供されているインストーラーをダウンロード

https://www.postgresql.org/download/windows

2. 画面に沿って数クリック

11

Page 12: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

導入方法 from ソースコード

1. ☆Microsoft Visual Studio for Windows Desktopのインストール

2. ☆Microsoft Windows SDKのインストール

3. ☆Strawberry Perlのインストール

4. ビルド

build.bat

5. インストール

install.bat

12

☆: インストーラーがある

Page 13: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

導入方法

導入自体はインストーラーを利用した方が簡単

ソースコードから導入した方が細かい設定が可能

2017年度WG3活動報告書 Windows環境調査編configureオプションの比較

blocksize

wal_segsize

wal_blocksize

zlib

ges

13

Page 14: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

WHAT IS THE DIFFERENCE?

Linux版とのちがい

14

Page 15: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Linux版とWindows版の相違点

PostgreSQL自体は概ね同じ

主な相違点

1. インストール時のカスタマイズ可否

2. contribモジュールの対応状況

3. 周辺ツールの対応状況

4. ロギング

15

Page 16: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

インストール時のカスタマイズ可否

16

Windowsインストール時のカスタマイズ差分

対応していない項目が多い

ソースコードとインストーラーで差分がある

カスタマイズ項目一覧Unix版の設定値

configureのオプションfrom ソースコード

configure.plに記述from インストーラー

--enable-nls[=LANGUAGES] nls O

--with-openssl openssl O

--enable-debug X X

--with-libxml xml O

X(iconv) iconv X

O: 設定項目ありX: 設定項目なし

Page 17: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

インストール時のカスタマイズ可否

17

共通

各国語サポート Linux: --enable-nls[=LANGUAGES]

Windows: nls / インストーラー時の設定

SSL接続の有効化 Linux: --with-openssl

Windows: openssl /インストーラー時の設定

相違

デバッグモードの起動 Linux: --enable-debug

Windows: 設定できない

Page 18: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

インストール時のカスタマイズ可否

18

特殊

XMLのサポート有効化 Linux: --with-libxml

Windows: xml /インストーラー時の設定

iconvの追加設定が必須

Page 19: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

contribモジュールの対応状況

19

contribモジュールはPostgreSQLインストール時についてくるモジュール群で有効化することでPostgreSQLをより便利に使える

contribモジュールの多くは対応済み

40/46件が対応

contribのWindows対応状況

未対応モジュール(6件)

通常の運用で使うことはない

Page 20: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

contribモジュールの対応状況

モジュール名 説明

intagg 整数型の集約子と列挙子の提供

intarray NULLのない整数配列を操作する関数と演算子を提供

sepgsql SELinuxのセキュリティポリシーに基づいたアクセス制御機能を提供

sslinfo 接続するSSL証明書に関する情報を提供

uuid-ossp UUIDを生成する関数を提供

xml2 XPath問い合わせとXSLT機能を提供

20

未対応モジュール一覧

Page 21: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

周辺ツールの対応状況

21

PostgreSQLは周辺ツールが充実している

周辺ツールを使うことで運用が楽になる

周辺ツールはWindows対応していないことが多い

カテゴリごとにツールを紹介

バックアップ

運用監視

その他便利ツール

周辺ツールのWindows対応状況

Page 22: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

周辺ツールの対応状況(バックアップ)

22

対応済み

pg_basebackup(demo) 本体機能

静止点を取って物理バックアップを取得できる

未対応

pg_rman バックアップ/リストアを体系的に管理する

バックアップは物理方式

Linux環境でしか動作しない

Page 23: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

周辺ツールの対応状況(運用監視)

23

対応済み

pg_stat_statements contrib同梱

SQL文の実行時の統計情報を記録する

未対応

pg_statsinfo PostgreSQLのサーバ運用状況を定期的に取得する

pg_stats_reporterと合わせるとグラフィカルに参照できる

Linux環境でしか動作しない

pg_mons zabbixを使ったサーバ運用状況の監視

内部はshellの構成なのでWindowsでは動かない

Page 24: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

周辺ツールの対応状況(その他便利ツール)

24

対応済み

pgAdmin4(demo) GUIでPostgreSQLを操作できるツール

Windowsインストーラーはデフォルトで使える

Page 25: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

ロギング

25

PostgreSQLは様々な形式でログ出力できる

stderr

csvlog

syslog(Linuxのみ)

eventlog(Windowsのみ)

Page 26: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

ロギング

26

eventlog出力

イベントビュアーからPostgreSQLのログを参照できる

インストーラーを利用するとイベントソースに”PostgreSQL”を自動登録する

log_destination = ‘eventlog’ と設定する

Page 27: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

HIGH AVAILABILITY

もしもにそなえる

27

Page 28: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

High Availability

High Availability(HA)とは= 高可用性

サービス停止が少ないシステム

システムの各コンポーネントの冗長性を上げる

データの破損を防ぐ & 復旧を早くするため

手法: コンポーネントを複製する

障害時に復旧までの時間を短くする

手法: 切り替え自動化のコンポーネントを追加する

28

Page 29: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

DBの冗長構成

問題点: DBサーバは単一故障点になりえる

冗長性を上げる

PostgreSQLは冗長構成が組める Hot Standby(Replication型) 検証済み

Cold Standby(ディスク共有型) 未検証

29

Page 30: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Hot Standby(Replication型)

Replication型とは

DB(Master)に書き込んだデータを他のDB(Standby)に伝搬する方法

Replicationにはモードがある 同期

非同期

Standbyは参照のみできる 参照の負荷分散の目的にも使える

PostgreSQLの機能なのでWindowsでも利用できる ストリーミングレプリケーション機能

30

Page 31: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Hot Standby(Replication型, 非同期ver)

クライアント

Master Standby

31

1. 更新

3. データの伝搬

4. OK

2. OK

「OK」を受けてもデータが複製されているか不明

ディスク ディスク

Page 32: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Hot Standby(Replication型, 同期ver)

クライアント

Master Standby

32

1. 更新

2. データの伝搬

3. OK

4. OK

「OK」を受け取ればデータの複製が保証されている

ディスク ディスク

Page 33: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Hot Standby(Replication型)

クライアント

Master Standby

33

更新/参照 参照

データの伝搬ディスク ディスク

Page 34: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Cold Standby(共有ディスク型)

共有ディスク型とは

書き込むディスクを共有して、バックアップノードを用意する方法

StandbyノードはPostgreSQLが停止しているので参照できない

共有ディスクが用意できればWindowsでも利用できる

34

Page 35: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Cold Standby(共有ディスク型)

クライアント

Master Standby

35

更新/参照

共有ディスク

..zzZZ

• 共有ディスクの冗長化を検討する

• Standbyノードには何もできない

Page 36: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

障害時に復旧までの時間を短くする

PostgreSQLのMater障害時に復旧(フェイルオーバー)する

1. Hot Standby(Replication型) Masterを切り離す

StandbyをMasterに昇格する

2. Cold Standby(共有ディスク型) Masterを切り離す

Standbyノードを起動する

36

Page 37: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Hot Standby)

Masterの故障が発生する

37

クライアント

Master Standby

37

更新/参照 参照

ディスク ディスク

Crash!!

Page 38: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Hot Standby)

Masterを切り離す

38

クライアント

Master Standby

38

Masterの切り離しpg_ctl stop

ディスク ディスク

Crash!!

Page 39: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Hot Standby)

StandbyをMasterに昇格する

39

クライアント

Master Standby

39

コマンド発行pg_ctl promote

ディスク ディスク

Crash!!

Page 40: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Hot Standby)

StandbyをMasterに昇格する

40

クライアント

Master Master

40

更新/参照

ディスク

Crash!!

Master

ディスク

Page 41: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Cold Standby)

クライアント

Master Standby

41

更新/参照

共有ディスク

..zzZZCrash!!

Page 42: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

フェイルオーバー(Cold Standby)

クライアント

Master Master

42

共有ディスク

Crash!!

コマンド発行pg_ctl start

更新/参照

Page 43: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

障害時に復旧までの時間を短くする

復旧を自動化する

Replication型 Pgpool-II(WAL shipping)を利用する

PostgreSQL自体に復旧を自動化する機能はない

共有ディスク型 WSFCを利用する 未検証

WSFC(Windows Server Failover Cluster)

43

Page 44: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Master障害時に復旧までの時間を短くする

Pgpool-IIを使う

Pgpool-IIとは クライアントとPostgreSQLの間に入ってクエリを一次受けする

PostgreSQLの故障を検知してフェイルオーバーする

良いところ 故障の検知

フェイルオーバーの自動化

参照クエリの自動分散

不便なところ Pgpool-II自身はWindows環境で動かない

今回の検証時もLinux環境で動作させた

Pgpool-IIはssh経由で操作するのでWindows Serverにsshを入れる必要がある

44

Page 45: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Pgpool-IIを用いたフェイルオーバー自動化

クライアント

Pgpool-II

Master Standby

45

更新/参照 参照

データの伝搬ディスク ディスク

更新/参照

Page 46: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Pgpool-IIを用いたフェイルオーバー自動化

クライアント

Pgpool-II

Master Standby

46

ディスク ディスク

Crash!!

Master故障の検知

Page 47: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Pgpool-IIを用いたフェイルオーバー自動化

クライアント

Pgpool-II

Master Master

47

ディスク ディスク

Crash!!

Standbyの自動昇格

Page 48: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Pgpool-IIを用いたフェイルオーバー自動化

クライアント

Pgpool-II

Master Master

48

ディスク ディスク

Crash!!

更新/参照

更新/参照

Page 49: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

冗長構成Replication型 共有ディスク型

Pros. • PostgreSQLで完結できる• 多くのパターンの故障を救える• 参照系の負荷を分散できる• Pgpool-IIを組み合わせてフェイルオーバーが自動化できる

• Windows Serverの常套手段を使える

• Microsoftのポリシーに沿える

Cons. • Pgpool-IIを利用すると• LinuxOSマシンが必須• Windowsにsshが必要

• 共有ディスクをつくる必要がある

• 共有ディスク故障の冗長化を検討する必要がある

49

Page 50: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PERFORMANCE MEASUREMENT

じっさいのところ

50

Page 51: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

性能評価

Windows版は性能が悪いと言われていた

測定結果が見当たらなかったので実際に測定した

Linux版とWindows版の性能比較

Windows版のパラメータチューニング性能比較

51

Page 52: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PostgreSQL for Windowsの歴史

Windows版PostgreSQLの誕生から今に至るまでの、主な変更点

52

バージョン PostgreSQL for Windows構築

~8.0 cygwin上で動作

8.0~ Windows上で動作するようになったGUIでインストールできるようになった

9.0~ 64ビットモードで動くようになった

9.6~ update_process_titleがデフォルトで無効になった

[PostgreSQL 9.6文書 リリースノートより]Windowsでは大部分の他プラットフォームよりもプロセスタイトルを更新するオーバーヘッドが大きく、また、大部分のWindowsユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。

Page 53: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PostgreSQL for Windowsの歴史

Windows版PostgreSQLの誕生から今に至るまでの、主な変更点

53

バージョン PostgreSQL for Windows構築

~8.0 cygwin上で動作

8.0~ Windows上で動作するようになったGUIでインストールできるようになった

9.0~ 64ビットモードで動くようになった

9.6~ update_process_titleがデフォルトで無効になった

[PostgreSQL 9.6文書 リリースノートより]Windowsでは大部分の他プラットフォームよりもプロセスタイトルを更新するオーバーヘッドが大きく、また、大部分のWindowsユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。

Page 54: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

update_process_titleが与える性能影響

update_process_titleが無効になるとPostgreSQLの性能はあがる

54

参考:[RFC] Change the default of update_process_title to off

(https://www.postgresql.org/message-id/0A3221C70F24FB45833433255569204D1F5BE3E8%40G01JPEXMBYT05)

スケールファクタ=300

参照のみモードの結果

Page 55: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

性能測定

1. Linux版とWindows版同じパラメータで性能比較

2. Windows版の影響しそうなパラメータをチューニングして性能測定 shared_buffers

64MB

40GB

PostgreSQL 10.1を利用

pgbenchを利用して測定(pgbenchとは)

詳しい測定方法は以下を参照ください

https://pgecons-sec-tech.github.io/tech-report/html_wg1_2017/wg1_2017.html - document-contents/wg1/wg1_2017/scaleup

55

Page 56: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

性能測定

1. Linux版とWindows版同じパラメータで性能比較

2. Windows版の影響しそうなパラメータをチューニングして性能測定 shared_buffers

64MB

40GB

PostgreSQL 10.1を利用

pgbenchを利用して測定(pgbenchとは)

56

Page 57: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Linux版とWindows版の性能比較

参照モデルの場合、Windows版/Linux版での性能差はなかった

更新モデルの場合、高負荷時はWindows版の方が性能が低い可能性がある

57

Page 58: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

性能測定

1. Linux版とWindows版同じパラメータで性能比較

2. Windows版の影響しそうなパラメータをチューニングして性能測定 shared_buffers

64MB

40GB

PostgreSQL 10.1を利用

pgbenchを利用して測定(pgbenchとは)

58

Page 59: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

Windows版パラメータチューニング性能測定

shared_buffersを変更しても性能は変わらない

64MB以上に設定すればよい

59

Page 60: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

CLOSING...

さいごに

60

Page 61: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

まとめ

Windows版のPostgreSQLも安心して利用できる

ただし、一部利用できない周辺ツールがある

61

Page 62: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PGEConsのご紹介

PostgreSQL本体および各種ツールの情報収集と提供、整備などの活動を通じて、エンタープライズ領域への普及を推進する(2012年4月設立)

参加企業が共同検証や情報発信を実施

正会員16社・一般会員46社 (2018年12月現在)

理事会

WG1 WG2 WG3

事務局

技術部会 広報・発信部会

総会

監事

運営委員会

CR部会

理事長 :日本電信電話株式会社運営委員長 :日本電気株式会社技術部会長 :富士通株式会社CR部会長 :SRA OSS, Inc. 日本支社広報・発信部会長 :株式会社日立製作所広報・発信副部会長 :株式会社アシスト

事務局長 :SRA OSS, Inc. 日本支社

監事 :税理士法人ジャストスタッフ

62

Page 63: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

PGEConsの成果物

PGEConsのWebサイトで成果物を公開しています

https://pgecons-sec-tech.github.io/tech-report/

本日発表した成果物も公開しています

63

Page 64: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.

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

64

Page 65: Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL EnterpriseConsortium, All Rights Reserved. PostgreSQL for Windowsの歴史 Windows版PostgreSQLの誕生から今に至るまでの、主

Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 65