サーバの構成・設定ファイルなどで行う
データベース管理についての俯瞰を記載。
データベースクラスタの管理操作
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
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
- 基本的なルールとして、上から順に評価されます。
- ある認証設定のレコード(行)が選ばれると、認証の成功・失敗によらず、後続のレコード(行)は参照されない。
- どのレコードも一致しない場合は、アクセスが拒否される。
尚、デフォルトで設定されているMETHODの「ident sameuser」は、シェルのユーザとPostgreSQLのユーザが一致している場合に、認証を許可する設定。
シェルの認証が行われていれば、そのままPostgreSQLへの接続も許可されるため、実質的に
Windows統合認証のような感覚で使用することが可能。
(調査・編集中)
ident認証用構成ファイル(pg_ident.conf)
(調査・編集中)
最終更新:2011年04月12日 21:07