Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL...
Transcript of Windowsでも PostgreSQLが使いたい - PGConf ASIA · 2018-12-27 · Copyright © PostgreSQL...
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 1
WindowsでもPostgreSQLが使いたい
2018/12/10
PGConf.ASIA 2018 Day-0
NTTテクノクロス株式会社 山本 育
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
目次
自己紹介
PostgreSQL for Windowsの歴史
導入方法
Linux版とWindows版の相違点
高可用性
性能評価
まとめ
2
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
自己紹介
NTTテクノクロス株式会社 所属
山本 育
本日はPGEConsメンバの立場で発表します
PGECons = PostgreSQL Enterprise Consortium
https://www.pgecons.org/
Twitter #pgecons
3
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 4
突然ですが…
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 5
お客様の中にPostgreSQLを使ったことがある方は
いらっしゃいますか?✋🐘
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 6
お客様の中にPostgreSQLをWindowsで使ったことがある方はいらっしゃいますか?✋🐘
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
PostgreSQL for Windowsの歴史
PostgreSQLはUnix互換プラットフォーム(RHEL, CentOS, Ubuntu, etc..)で動作させることが多い
もちろんPostgreSQLはWindowsでも動きます
7
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ユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
HOW TO INSTALL?
はじめのいっぽ
9
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
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
導入方法 from インストーラー
1. EnterpriseDB社から提供されているインストーラーをダウンロード
https://www.postgresql.org/download/windows
2. 画面に沿って数クリック
11
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
☆: インストーラーがある
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
導入方法
導入自体はインストーラーを利用した方が簡単
ソースコードから導入した方が細かい設定が可能
2017年度WG3活動報告書 Windows環境調査編configureオプションの比較
blocksize
wal_segsize
wal_blocksize
zlib
ges
13
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
WHAT IS THE DIFFERENCE?
Linux版とのちがい
14
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Linux版とWindows版の相違点
PostgreSQL自体は概ね同じ
主な相違点
1. インストール時のカスタマイズ可否
2. contribモジュールの対応状況
3. 周辺ツールの対応状況
4. ロギング
15
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: 設定項目なし
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
インストール時のカスタマイズ可否
17
共通
各国語サポート Linux: --enable-nls[=LANGUAGES]
Windows: nls / インストーラー時の設定
SSL接続の有効化 Linux: --with-openssl
Windows: openssl /インストーラー時の設定
相違
デバッグモードの起動 Linux: --enable-debug
Windows: 設定できない
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
インストール時のカスタマイズ可否
18
特殊
XMLのサポート有効化 Linux: --with-libxml
Windows: xml /インストーラー時の設定
iconvの追加設定が必須
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
contribモジュールの対応状況
19
contribモジュールはPostgreSQLインストール時についてくるモジュール群で有効化することでPostgreSQLをより便利に使える
contribモジュールの多くは対応済み
40/46件が対応
contribのWindows対応状況
未対応モジュール(6件)
通常の運用で使うことはない
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
contribモジュールの対応状況
モジュール名 説明
intagg 整数型の集約子と列挙子の提供
intarray NULLのない整数配列を操作する関数と演算子を提供
sepgsql SELinuxのセキュリティポリシーに基づいたアクセス制御機能を提供
sslinfo 接続するSSL証明書に関する情報を提供
uuid-ossp UUIDを生成する関数を提供
xml2 XPath問い合わせとXSLT機能を提供
20
未対応モジュール一覧
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
周辺ツールの対応状況
21
PostgreSQLは周辺ツールが充実している
周辺ツールを使うことで運用が楽になる
周辺ツールはWindows対応していないことが多い
カテゴリごとにツールを紹介
バックアップ
運用監視
その他便利ツール
周辺ツールのWindows対応状況
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
周辺ツールの対応状況(バックアップ)
22
対応済み
pg_basebackup(demo) 本体機能
静止点を取って物理バックアップを取得できる
未対応
pg_rman バックアップ/リストアを体系的に管理する
バックアップは物理方式
Linux環境でしか動作しない
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では動かない
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
周辺ツールの対応状況(その他便利ツール)
24
対応済み
pgAdmin4(demo) GUIでPostgreSQLを操作できるツール
Windowsインストーラーはデフォルトで使える
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
ロギング
25
PostgreSQLは様々な形式でログ出力できる
stderr
csvlog
syslog(Linuxのみ)
eventlog(Windowsのみ)
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
ロギング
26
eventlog出力
イベントビュアーからPostgreSQLのログを参照できる
インストーラーを利用するとイベントソースに”PostgreSQL”を自動登録する
log_destination = ‘eventlog’ と設定する
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
HIGH AVAILABILITY
もしもにそなえる
27
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
High Availability
High Availability(HA)とは= 高可用性
サービス停止が少ないシステム
システムの各コンポーネントの冗長性を上げる
データの破損を防ぐ & 復旧を早くするため
手法: コンポーネントを複製する
障害時に復旧までの時間を短くする
手法: 切り替え自動化のコンポーネントを追加する
28
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
DBの冗長構成
問題点: DBサーバは単一故障点になりえる
冗長性を上げる
PostgreSQLは冗長構成が組める Hot Standby(Replication型) 検証済み
Cold Standby(ディスク共有型) 未検証
29
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Hot Standby(Replication型)
Replication型とは
DB(Master)に書き込んだデータを他のDB(Standby)に伝搬する方法
Replicationにはモードがある 同期
非同期
Standbyは参照のみできる 参照の負荷分散の目的にも使える
PostgreSQLの機能なのでWindowsでも利用できる ストリーミングレプリケーション機能
30
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Hot Standby(Replication型, 非同期ver)
クライアント
Master Standby
31
1. 更新
3. データの伝搬
4. OK
2. OK
「OK」を受けてもデータが複製されているか不明
ディスク ディスク
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Hot Standby(Replication型, 同期ver)
クライアント
Master Standby
32
1. 更新
2. データの伝搬
3. OK
4. OK
「OK」を受け取ればデータの複製が保証されている
ディスク ディスク
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Hot Standby(Replication型)
クライアント
Master Standby
33
更新/参照 参照
データの伝搬ディスク ディスク
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Cold Standby(共有ディスク型)
共有ディスク型とは
書き込むディスクを共有して、バックアップノードを用意する方法
StandbyノードはPostgreSQLが停止しているので参照できない
共有ディスクが用意できればWindowsでも利用できる
34
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Cold Standby(共有ディスク型)
クライアント
Master Standby
35
更新/参照
共有ディスク
..zzZZ
• 共有ディスクの冗長化を検討する
• Standbyノードには何もできない
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
障害時に復旧までの時間を短くする
PostgreSQLのMater障害時に復旧(フェイルオーバー)する
1. Hot Standby(Replication型) Masterを切り離す
StandbyをMasterに昇格する
2. Cold Standby(共有ディスク型) Masterを切り離す
Standbyノードを起動する
36
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Hot Standby)
Masterの故障が発生する
37
クライアント
Master Standby
37
更新/参照 参照
ディスク ディスク
Crash!!
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Hot Standby)
Masterを切り離す
38
クライアント
Master Standby
38
Masterの切り離しpg_ctl stop
ディスク ディスク
Crash!!
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Hot Standby)
StandbyをMasterに昇格する
39
クライアント
Master Standby
39
コマンド発行pg_ctl promote
ディスク ディスク
Crash!!
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Hot Standby)
StandbyをMasterに昇格する
40
クライアント
Master Master
40
更新/参照
ディスク
Crash!!
Master
ディスク
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Cold Standby)
クライアント
Master Standby
41
更新/参照
共有ディスク
..zzZZCrash!!
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
フェイルオーバー(Cold Standby)
クライアント
Master Master
42
共有ディスク
Crash!!
コマンド発行pg_ctl start
更新/参照
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
障害時に復旧までの時間を短くする
復旧を自動化する
Replication型 Pgpool-II(WAL shipping)を利用する
PostgreSQL自体に復旧を自動化する機能はない
共有ディスク型 WSFCを利用する 未検証
WSFC(Windows Server Failover Cluster)
43
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
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Pgpool-IIを用いたフェイルオーバー自動化
クライアント
Pgpool-II
Master Standby
45
更新/参照 参照
データの伝搬ディスク ディスク
更新/参照
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Pgpool-IIを用いたフェイルオーバー自動化
クライアント
Pgpool-II
Master Standby
46
ディスク ディスク
Crash!!
Master故障の検知
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Pgpool-IIを用いたフェイルオーバー自動化
クライアント
Pgpool-II
Master Master
47
ディスク ディスク
Crash!!
Standbyの自動昇格
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Pgpool-IIを用いたフェイルオーバー自動化
クライアント
Pgpool-II
Master Master
48
ディスク ディスク
Crash!!
更新/参照
更新/参照
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
冗長構成Replication型 共有ディスク型
Pros. • PostgreSQLで完結できる• 多くのパターンの故障を救える• 参照系の負荷を分散できる• Pgpool-IIを組み合わせてフェイルオーバーが自動化できる
• Windows Serverの常套手段を使える
• Microsoftのポリシーに沿える
Cons. • Pgpool-IIを利用すると• LinuxOSマシンが必須• Windowsにsshが必要
• 共有ディスクをつくる必要がある
• 共有ディスク故障の冗長化を検討する必要がある
49
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
PERFORMANCE MEASUREMENT
じっさいのところ
50
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
性能評価
Windows版は性能が悪いと言われていた
測定結果が見当たらなかったので実際に測定した
Linux版とWindows版の性能比較
Windows版のパラメータチューニング性能比較
51
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ユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。
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ユーザはプロセスタイトルを表示できるツールを持っていないことから、更新してもあまり役に立ちません。
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
参照のみモードの結果
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
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
性能測定
1. Linux版とWindows版同じパラメータで性能比較
2. Windows版の影響しそうなパラメータをチューニングして性能測定 shared_buffers
64MB
40GB
PostgreSQL 10.1を利用
pgbenchを利用して測定(pgbenchとは)
56
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Linux版とWindows版の性能比較
参照モデルの場合、Windows版/Linux版での性能差はなかった
更新モデルの場合、高負荷時はWindows版の方が性能が低い可能性がある
57
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
性能測定
1. Linux版とWindows版同じパラメータで性能比較
2. Windows版の影響しそうなパラメータをチューニングして性能測定 shared_buffers
64MB
40GB
PostgreSQL 10.1を利用
pgbenchを利用して測定(pgbenchとは)
58
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
Windows版パラメータチューニング性能測定
shared_buffersを変更しても性能は変わらない
64MB以上に設定すればよい
59
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
CLOSING...
さいごに
60
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
まとめ
Windows版のPostgreSQLも安心して利用できる
ただし、一部利用できない周辺ツールがある
61
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
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
PGEConsの成果物
PGEConsのWebサイトで成果物を公開しています
https://pgecons-sec-tech.github.io/tech-report/
本日発表した成果物も公開しています
63
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved.
ご清聴ありがとうございました
64
Copyright © PostgreSQL Enterprise Consortium, All Rights Reserved. 65