PostgreSQLドキュメントの歩き方 – デプロイメント編

PostgreSQLには A4サイズに印刷して 4000ページほどになる巨大なドキュメントが付属しています。さらに、日本PostgreSQLユーザ会の有志により、日本語訳版も作られています。PostgreSQLの機能についてはこのドキュメントで網羅していますが、機能の充実によって内容が膨れ上がり、知りたいことを探すのにどこから手を付けようか悩むことも少なくないでしょう。

そこで本稿では「PostgreSQL ドキュメントの歩き方」として、 PostgreSQL入門者むけに遠大なドキュメントに立ち向かうヒントを提供します。今回は、デプロイメント編として PostgreSQL を導入する場面を想定し、有益な情報が見つけられるドキュメントページをご紹介します。

PostgreSQLドキュメントの基本

PostgreSQLドキュメント(日本語版)は日本PostgreSQLユーザ会(JPUG)の Webサイトで公開されています。トップページから「ドキュメント」タブをクリックすると以下のページにたどり着きます。

PostgreSQLドキュメントページ

「最新版の付属ドキュメント」から現在翻訳が完了していて公開されている最新バージョンのHTMLドキュメントに進むことができます。「バージョンごとのドキュメント一覧」からは、PostgreSQLバージョンを選んで、それぞれのドキュメントに進むことができます。これらのページには必ずしもリリースされているPostgreSQL最新バージョンのドキュメントが在るわけではない点に注意してください。

未だ翻訳が完了していないバージョンを見たい場合には「翻訳作業中を含む最新版」を選んで別サイトに進んでください。こちらでは英語と日本語が併記された形で翻訳途中のドキュメントも公開されています。

PostgreSQLのドキュメントは各バージョンごとに明確に分かれています。最新版ドキュメントがそれ以前のバージョンに対するドキュメントを兼ねるというスタイルではありません。使うバージョンと読んでいるドキュメントの少なくともメジャーバージョン(末尾の数字以外)が、一致するようにしてください。

なお、JPUG のPostgreSQLドキュメント公開ページには以下のように「他のバージョンの文書」というリンクがあって、同じ項目の他バージョンのページに横移動できるようになっています。
本稿では PostgreSQL 10.x バージョンを前提に見るべきページを紹介しますが、読者の皆様が関心が別バージョンであるなら、このリンクから横移動すればよいでしょう。

他バージョン文書のリンク

また、PostgreSQLドキュメントには[索引]もあります。PostgreSQLに関する不明な用語があって、それを調べるには索引を使うことになります。しかしながら、この索引はそれほど充実しているとはいえず、単語をインターネット検索して PostgreSQLドキュメント内にヒットしたページを調べるほうが良いかもしれません。

ソフトウェアのインストール

PostgreSQLをインストールするときに見るべきページを紹介します。

環境確認

まずは、導入先のマシンが PostgreSQL に対応したプラットフォームかどうかを予め確認しておいた方が良いでしょう。これから導入マシンを決めるという場合も参考にしてください。

ただし、より具体的に、この OS むけにパッケージは在るかどうかを調べるにはドキュメントを離れて、postgresql.org のページを確認しなければなりません。以下ページの「Binary packages」のリンクでインストール対象の OS 毎のバイナリパッケージ取得方法が記載されています。

バイナリからのインストール

実は PostgreSQLドキュメントにはコンパイル済みバイナリのインストール方法については言及がありません。前述の各OS むけのバイナリパッケージ配布のページにインストール手順も記載されていますので、それを参照してください。

ソースコードからのインストール

ソースコードからビルドする手順は[16章 ソースコードからインストール]に丁寧に解説されています。手っ取り早く実行するには、ソースコード一式を入手後、[16.4. インストール手順]から読んでもよいでしょう。

ビルドやインストールがうまくいかないときは、コンパイラが古かったり、ライブラリが不足しているのかもしれません。[16.2. 必要条件]に必要な条件が書かれているので参考にしてください。

サーバ準備と起動

続いては、ソフトウェアインストール後、PostgreSQLを稼動させるまでの手順で参照すべきページを紹介します。

ユーザとディレクトリの準備

Linux で rpmパッケージを利用した場合や Windows でインストーラを使用した場合、必要なディレクトリやサービス稼動用のpostgresユーザは自動的に用意されます。

そうではなくソースからビルドした場合には[18章 サーバの準備と運用]が参考になります。
[18.1. PostgreSQLユーザアカウント]の手順でデータベースを操作するユーザを作成します。あわせて[16.5. インストール後の設定作業]を参考に、作成したユーザに環境変数の設定をしておきましょう。

データベースクラスタ作成と起動

[18.2. データベースクラスタの作成]に記載の手順でデータベースのデータファイルを作成するディレクトリを作成し、データベースクラスタの初期化を行ってください。データベースクラスタ初期化の際に指定できるオプションの詳細については、[initdb]コマンドのページを見る必要があります。

ここで起動の準備が整いました。[18.3. データベースサーバの起動]を参考にデータベースサーバ(サービス)を起動しましょう。ここにはPostgreSQLを専用コマンドで直接起動する方法、Linuxやその他UNIX系のサービス管理機能の枠組みで起動する方法が記載されています。しかし、残念なことに Windows における起動方法は記載がありません。

Windows ではサービス登録をしたうえで、Windowsが提供するサービス制御コマンド(netやsc)あるいはGUI(「コントロールパネル」→「管理ツール」→「サービス」)で PostgreSQLの起動・停止を行うのが一般的です。サービス登録には[PostgreSQLサーバアプリケーション – pg_ctl]の register サブコマンドの使い方を確認してください。

データベースサーバが正しく起動しているか、使用可能な状態になっているかを確認するため少し操作してみるには、チュートリアルの[1.3. データベースの作成][1.4. データベースへのアクセス]の記述が参考になります。起動したPostgresSQLサーバ内に作成するデータベースについての体系的な解説は[22章 データベース管理]にあります。

テーブルスペース

PostgreSQLでは、データ格納用に別のストレージボリュームを追加して使うには、テーブルスペース(テーブル空間)を作ります。これについては以下に解説があります。

設定ファイル

PostgreSQL導入時には設定ファイルの調整もするはずです。そのためには各設定ファイルの役割、書き方、各設定項目の意味を把握する必要があります。

postgresql.conf については[19章 サーバ設定]に、pg_hba.conf については[20章 クライアント認証]に、また、レプリケーションを構成したりオンライン物理バックアップからリストアするときに使う recovery.conf については[27章 リカバリの設定]に説明が記載されています。

ログ出力の設定

PostgreSQLのログ出力設定は postgresql.conf で行います。初期構築時に[19.8.1. ログの出力先]を確認して、適切な設定を与えておきましょう。

log_destination 設定に syslog や eventlog を指定して OS機能にログを渡す方式にした場合には、OS側も必要に応じて設定が必要で、これについても log_destination の節にごく若干ながら記載があります。また、log_destination 設定に stderr を指定する場合、PostgreSQL自身によるログ収集とローテーションの設定が必要です。logging_collector 設定と、それに続くいくつかの設定について目を通しておきましょう。

なお、構築時にログ監視を行なう場合、PostgreSQL のログレベルが19章内の [表19.1 メッセージ深刻度レベル]に記載されています。

VACUUM / ANALYZE

PostgreSQL運用には定常的な VACUUM と ANALYZE の実行が必要です。構築時にこれらをどのように実行するか決めて、運用に組み入れる必要があります。

VACUUMについては、それが何であるかから始まって詳しい解説が[24.1. 定常的なバキューム作業]にあります。このページとこのページからリンクいているページに関連する全ての情報があります。

ANALYZEについては、前述のページ内の小節[24.1.3. プランナ用の統計情報の更新]に加えて、SQLコマンド解説ページの[ANALYZE]の項を参照してください。

拡張の導入

PostgreSQLには拡張(あるいは拡張モジュール)という機能追加の枠組みが用意されています。PostgreSQL本体とともに配布されている拡張もあれば、サードパーティ配布されている拡張もあります。まず、[付録F 追加で提供されるモジュール]で拡張の概念と共通的なインストール・アンインストール手順を把握しましょう。PostgreSQL本体付属の拡張の一覧も同ページの目次に記載されています。

デプロイメント編まとめ

デプロイメント編はここまでです。ドキュメント上の章立てが実際にするであろう操作順に沿っていることもあれば、そうでないこともあります。本稿がドキュメント参照の一助となれば幸いです。

次回は運用管理編です。