PostgreSQL > 2.サーバ構成・設定ファイルによるDBA

サーバの構成・設定ファイルなどで行うデータベース管理についての俯瞰を記載。



データベースクラスタの管理操作

PostgreSQLでは1つのデータベースインスタンス(サービス)で、複数のデータベースを扱う。
この複数のデータベースの集合を、データベースクラスタと呼ぶ。
PostgreSQLでは、データベースクラスタ単位で、初期化・起動・停止を行う。

データベースクラスタの初期化

データベースクラスタは一度だけ、初期化を行う必要がある。
これによって、postgresコマンドの-Dオプションで指定するデータベースディレクトリあるいは、環境変数PGDATAで参照されるディレクトリを初期化する。

以下のコマンドにて行う。
initdb [options...] -D directory

通常RHEL系にインストールされているPostgreSQLでは、以下のサービスコマンドを実行する。
/etc/init.d/postgresql initdb
あるいは
service postgresql initdb
(実行結果例)
データベースを初期化中:                                    [  OK  ]

この結果、-Dオプションあるいは環境変数PGDATAで指定されるディレクトリが作成され、データベースクラスタを起動することが可能になる。


データベースクラスタの起動

以下のコマンドにて行う。
pg_ctl [-D データベースディレクトリ] start

通常RHEL系にインストールされているPostgreSQLでは、以下のサービスコマンドを実行する。
/etc/init.d/postgresql start
あるいは
service postgres start
(実行例)
postgresql サービスを開始中:                               [  OK  ]


データベースクラスタの起動(デバッグモード)

postgresqlコマンドにオプションを指定して起動する。
バックグラウンドモードで起動する必要がある。
(起動例)
postgresql -D /var/lib/pgsql/data -d 5 -E&

(停止例)
pg_ctl -D /var/lib/pgsql/data stop

データベースクラスタの停止

以下のコマンドにて行う。
pg_ctl -D データディレクトリ stop

通常RHEL系にインストールされているPostgreSQLでは、以下のサービスコマンドを実行する。
/etc/init.d/postgresql stop
あるいは
service postgres stop
(実行例)
postgresql サービスを停止中:                               [  OK  ]

データベースクラスタの削除

データベースクラスタを削除する場合は、データベースクラスタを停止して、データベースディレクトリをリネームあるいは削除すれば良い。

再度、データベースクラスタの初期化を行うことで、インストール直後のデータベースの状態に戻すことができる。

(削除例)
/etc/init.d/postgresql stop
mv /var/lib/pgsql/data /var/lib/pgsql/data.BACKUP


PostgreSQLデータディレクトリ

PostgreSQLを起動時に-Dオプションで指定される。
あるいは環境変数PGDATAによって、参照される。

設定ファイル

pg_hba.conf
pg_ident.conf
postgresql.conf

起動ログ

pg_log/**
データベースの起動に失敗した場合や、クラッシュした場合にまずこのログを参照すること。

データベースログ

pg_clog/**
pg_multixact/**
pg_subtrans/**
pg_tblspc/**
pg_twophase/**
pg_xlog/**

データベースファイル

base/**
global/**

データベースファイルの使用量の確認

base以下には各種テーブルスペース毎のファイルが可能されている。
データベースOIDとデータベース名を取得することで、実際のファイルサイズを計算することが可能。

OIDを確認
oid2name
(出力例)
All databases:
    Oid  Database Name  Tablespace
----------------------------------
  11511       postgres  pg_default
  11510      template0  pg_default
      1      template1  pg_default
この結果から、postgresデータベースはOIDは11511と分かる。

次に、baseディレクトリ下のディスク使用量を計算する。
du -sh /var/lib/pgsql/data/base
(出力例)
4.7M    /var/lib/pgsql/data/base/11510
4.7M    /var/lib/pgsql/data/base/1
4.8M    /var/lib/pgsql/data/base/11511
14M     /var/lib/pgsql/data/base/

これらの結果より、postgresデータベースのディスク使用量は4.8MBと分かる。

その他

PG_VERSION
postmaster.opts
postmaster.pid

詳細な内容については、参考:http://www.postgresql.jp/document/8.3/html/storage-file-layout.htmlを参照すること。


PostgreSQL構成ファイル(postgresql.conf)


実際に起動時に有効な構成の確認方法

システムカタログのpg_settingsテーブルに問い合わせを行うことで取得する。
psql -c "SELECT name,setting FROM pg_settings;



(調査・編集中)


ホストベース認証設定ファイル(pg_hba.conf)

PostgreSQLへの認証方式などを、このファイルによって管理している。
接続先のデータベースに設定した権限や、パスワード以前に、まずこちらの認証方式にでの評価が行われる。

(例)
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               ident sameuser
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident sameuser
# IPv6 local connections:
host    all         all         ::1/128               ident sameuser

  1. 基本的なルールとして、上から順に評価されます。
  2. ある認証設定のレコード(行)が選ばれると、認証の成功・失敗によらず、後続のレコード(行)は参照されない。
  3. どのレコードも一致しない場合は、アクセスが拒否される。

尚、デフォルトで設定されているMETHODの「ident sameuser」は、シェルのユーザとPostgreSQLのユーザが一致している場合に、認証を許可する設定。

シェルの認証が行われていれば、そのままPostgreSQLへの接続も許可されるため、実質的にWindows統合認証のような感覚で使用することが可能。

(調査・編集中)



ident認証用構成ファイル(pg_ident.conf)

(調査・編集中)


最終更新日 : [2011-04-12]
最終更新:2011年04月12日 21:07