JPUG しくみ+アプリケーション分科会 第29回勉強会

ということで、5/31(土)に開催されたhttps://www.postgresql.jp/wg/shikumi/shikumi29/へ行ってきましたよ。

概要

  • 会場は産業技術大学院大学秋葉原キャンパス。
    • ここは秋葉原駅からも近いし、飲み屋さんのビルも近いので懇親会も困らないw
    • 秋葉原は最近、ラーメン店も増えてラーメン好きとしても訪問するのが楽しいエリアになりました。
  • 来場者は48人とのこと。応募は60人近くあったらしい。
  • 今回はUstの調子があんまり良くなかったようだ・・・
プログラム

今回はプレ勉強会あり、休憩&質問タイムありのちょっと変わった構成。

  • プレ勉強会(統計情報・ANALYZE)
  • PostgreSQLリカバリ超入門
  • バックアップことはじめ
  • 休憩&初心者質問タイム
  • PostgreSQLのツール紹介と解説

プレ勉強会

統計情報に関する説明
  • 前半はプランナが使う統計情報に関する説明。スピーカーは喜田さん。
  • 統計情報とは何か、稼働統計情報との違い。
    • 英語ドキュメントではプランナ用統計情報"the statstaics"、稼働統計情報は"run-time statstaics"とか表記されているらしい。
    • 区別がつきにくいのは英語ドキュメントも日本語ドキュメントも同じか・・・
  • pg_statsビューの説明。図付きでわかりやすかった。本家ドキュメントは図とかがないので、ちょっとわかりにくいんですよね。
ANALYZEソース説明
  • 後半はANALYZEコマンドのソースコードリーディング説明。スピーカーは田中さん。
  • サポートにあった問い合わせに回答できるように説明を進める。
    • ANALYZE時に表ロックとるの? 表全ての情報を使うことができるのか?。表サイズがpg_statsにない。
  • ANALYZEを処理フェーズに分けて説明。
    • 肝になる箇所はソースも示して説明。
    • 今後、読む人がどのあたりに注目して読めばいいのかという手引になっている。
  • default_statistics_targetに300をかけているのか?
  • acquire_sample_rows()が処理の肝らしい。
  • 説明自体はちょっと時間が足りなくて、若干説明不足だったかも・・・
    • サンプルとして使う行の選択に関する説明のあたりは、もう少し聞きたかった。
    • 別途アップロードされる資料に期待!
  • 過去にあったANALYZEに関するQA
    • ANALYZE時に表ロックとるの?DMLへの影響は?
      • SharedUpdateExclusiveロックを取得する。
      • SELECT/INSERT/UPDATE/DELETEには影響を受けない。
    • 表全ての情報を使うことができるのか?
      • default_statstaics_targetを増やすことで最大で 10000 *
    • 表サイズがpg_statsにない。
      • 表サイズに関する情報はpg_statsではなくpg_classにある。
      • 列に関する統計情報はpg_statsで参照可能。
  • TLの反応

@kasa_zipさん ANALYZEはもう一回プレでやってほしいなー 4回分くらいボリュームあった気がする・・

  • 質疑応答(俺からの質問)
    • 説明中で型のLT operator有無で収集関数を分けているとあったが、XML型のようにEQ operatorもない(補足:XML型は比較演算子が一切使えない)場合ってどうなるのか?
    • 比較演算子が使えない型はプランナ用統計情報は取得しても無意味なので、収集していないとは思うが・・・
    • 後で、田中さんから回答あり。やっぱりEQが使えないようなときには収集関数に null を設定して、収集機能を呼ばないようにした。

土屋先生からの挨拶

大事なお知らせ

  • 座長の坂田さんからのお知らせ。
  • しくみ+アプリケーション分科会勉強会は今回で終了です。
    • Ω ΩΩ< な、なんだってー!(棒)
    • いやまあ、名前が変わるだけなんですけどね。
  • あと、今後の勉強会でやってほしいネタを来場者に書いてもらうことに。
    • 来れなかった人は・・・?

@s87さん Ust.見てる人も意見出していいのかしら?

  • 坂田さんのプレゼン、Libre●fficeの問題か、きちんと表示されてなかった。
    • Libre●fficeをdisってるとこって、Ustで流れちゃった?w

PostgreSQLリカバリ超入門

  • スピーカーはhttp://www.amazon.co.jp/gp/product/4774153923/の著者の鈴木啓修さん。
    • 発表資料の元ネタも上記の本。
  • 100枚のスライドを25分で説明するハイスピードセッション。
  • まず、物理的な格納構造、メモリとディスクへのアクセスなどの説明から。
  • ここからクラッシュリカバリ、WALの話に繋がる。

@daiti0804さん WALの説明。 @kasa_zip さんがすごい、ちょいWALオヤジ( @fujii_masao )のこと見てる

  • どこからリカバリを始めるか。そしてCHECKPOINTの話へ。
    • CHECKPOINTの開始点=REDO point

@kasa_zipさん PostgreSQLってUNDOって考えがないので、リカバリ時に他のDBMSを知っている人から見ると違和感あるかも?

  • CHECKPOINT直後にWALページライトの話。

@kasa_zipさん FullPageWriteの話はチェックポイント中のパーシャルライトのケースを話すと、多少分かりやすいかも...

  • 最後にオンラインバックアップの話に繋がる。ぬこ画像&うさ画像
    • 次の佐藤さんのバックアップの話に綺麗に繋がった。
  • 図を使ってああいう分かりやすい説明を書けるように俺もならないとな・・・
  • 最後に。ひろのぶさんの本、英訳者(プロ・アマ問わず)募集中とのことw

バックアップことはじめ

  • スピーカーはバックアップ姫こと佐藤千佳さん。
  • 自己紹介・・・ビールの話長いw

@daiti0804さん オクトーバーフェスとの宣伝??ww
@kasa_zipさん オクトーバーフェストの想い出を聞いている
@kasa_zipさん 北海道のビアガーデンが楽しみだという話を聞いている

  • まず、バックアップの一般論を話してからPostgreSQL固有の話という展開。
  • 名言入りましたー
    • 論よりバックアップ
    • リカバリができないバックアップはただのゴミ
  • 様々なバックアップの取得方法の紹介。

@h141gmさん 最近の大きな案件だとストレージスナップショットで取ることも多い

  • ミラーリングレプリケーション/DR構成だけでは、バックアップとしては不十分と認識すべしとという話。
  • そして論理バックアップと物理バックアップの違い、そして選定の話へ。
    • 過去の対応の実績からすると、論理バックアップとオンラインバックアップを使うケースがやっぱり多いとのこと。
  • クラウドサービスによるバックアップ/リストアの話も聞いてみたいな・・・

@daiti0804さん 懇親会で十分な気も…ww

  • バックアップ計画、バックアップ方式を選定するために検討すべきことは結構多い、
    • ここまできちんと考えないといけないってこと。
    • 基本的な方針。「どこまで復旧したいのか」「停止ができるか」でバックアップの方式を決めれば良い。

@h141gmさん 負荷とリカバリにかけられる時間の選択肢も欲しい

  • 故障別の対応方法。よくありそうな7つの障害パターンと対応方法の話。こういう話は現場の運用者にとってありがたい。
  • この頃、TLではpg_basebackupを使ってオフラインバックアップを取れる?って話で盛り上がっていたりする。
  • 次はバックアップツールの紹介。
    • pg_basebackupだけでなく、外部ツール(pg_rman)も紹介。
    • なんか、pg_rmanの中の人っぽい方がTL上に

@strayedumi pg_rman・・・作り直したい思いが・・・

  • バックアップツールのうちWindows対応しているかどうかという話も現場では結構重要。
    • pg_rmanはWindows対応しているのか、とか聞かれるらしい。
  • AmandaやBarmanの説明もあった。
  • Barmanの説明
    • Barmanのメンテナは2ndQuadrant社
    • pg_rmanとは異なり、リモートバックアップが可能。
    • Windowsは未対応。Python/Pythonモジュール依存。
    • 現状日本語ドキュメントがない。

@daiti0804 そういえば、2ndQuadrantの方がこの勉強会にもいたような…
@daiti0804 日本語で最も詳しいBarmanの解説かも?

休憩&初心者質問コーナー

  • 実は最初に、何人かのメンバーが黄緑のJPUGステッカーを胸あたりに貼っていたのですが、これは質問があったら答える人という印。
    • 何故か俺も貼られてしまったw
  • が・・・思ったより質問しようという人が現れなかった。
    • もうちょっと質問しやすい雰囲気にしないといけないのかなー。
    • 例えば俺がサクラになるとかw
  • パーティションに関する質問に@kasa_zipさんが答えていたくらいかなあ・・・

PostgreSQLのデータ構造を知るためのツール解説

  • タイトルうろおぼえ・・・
  • スピーカーは笠原(@kasa_zip)さん。
    • "つれー 機能実質1時間も寝てないからつれーわー 実質1時間しか寝てないからなー" らしいw
  • 最初にPostgreSQLを構成するデータの概説。
  • pg_clogとかVM/FSMの話も。
  • Filenodeマップファイルとか、意識したことなかったなー。
  • で、ここからツールの話。
    • pg_filedump/pageinspectはデータ/インデックスファイルのメタ情報を見やすくするツール
    • pg_xlogdumpはPostgreSQL停止中に使うことがオススメと。
  • 坂田さんから質問。
    • チェックサム機能が9.3で入ったのに、なんでファイルフォーマットバージョンが上がってないの?
    • 藤井さんの話では、タイムラインID領域を転用したので、フォーマットは変えなかったのではとのこと。
  • pg_filedumpで有用な表示。attribute数の表示、infomaskを有効ビットを見やすく可視化してくれる。インデックスリーフかどうかも表示。
  • pg_xlogdumpの説明
    • 普通の運用者向けツールではないのであまりフレンドリーではない。
    • 運用中に使うと最新のWALが流れてくるので停止中に使うほうが良いとのこと。
    • pg_xlogdumpの使いどころって何よというツッコミがw
      • 運用で使うことはたぶんないだろう。
      • ただ、フルページライトの頻度を調べることでチェックポイント間隔の調整に使えるかも。

@daiti0804 ひろのぶさんブログにpg_xlogdump使ったシェルが書いてある

  • pageinspectを使ったインデックスのリーフ分割の状況を可視化するという使い方の例を説明。わかりやすい。
  • 最後にpg_filedumpによるコミットヒントビットを表示するというデモ。
  • さすがに笠原さんもちょっと疲れていたみたい・・・。

懇親会

@daiti0804さん 佐藤さんの懇親会についての金言
「勉強会は締め切られちゃったみたいなので懇親会だけ参加します。実は勉強会より懇親会のほうが勉強になるは秘密だよ。」

  • ということで、前回と同様に隣の居酒屋コンプレックスビルで懇親会開始。
  • 1次会(3F)、20人近くいたなあ。2次会(7F?)も10人くらいいたような気がする(もう記憶がない)
突っ込まれるぬこ
  • 飲み会なんでいろんな話が飛び交ったんだけど・・・
  • 「勉強会でやってほしいこと」に「PostgreSQL拡張の作り方」をリクエストしたら、ひろのぶさんから「あなたが話しなさい」とカウンターを食らった件について
  • 今回、2名の女性が懇親会にも参加!
    • で、例によって「PostgreSQL女子会作ろーよ」みたいな話をしたら、「じゃあ、ぬこさん部長やってよ」と佐藤千佳さんに切り返された件について
  • 2次会で、パキエルさんとイアンさんと名刺を交換したら、近くにいた佐藤さん@SRA.OSS から「ぬこさんとコネがあってもビジネスにならないよーw」。ぐぬぬ・・・
  • 今日の質問コーナーで質問者があまり出なかった件に関して、「じゃあ俺がサクラやればよかったかなー」と言ったら、佐藤さん@SRA.OSS から「ぬこさんが質問するとわざとらしすぎるでしょw」。ぐぬぬ・・・
その他印象に残った話
  • PostgreSQL女子会に対抗してPostgreSQLイケメン部がいるのではという話w
  • JPUGの組織に関してひろのぶさんが話始めると、かなり怖い話に・・・おっと誰か来た(ry