PostgreSQL 8.1
| Table of Contents |
はじめに
PostgreSQLの構築手順です。
コマンドは、プロンプトが「#」の場合はrootユーザ、プロンプトが「$」の場合はpostgresユーザで実行します。
尚、PostgreSQL 8.4の構築手順は
こちら
を参照して下さい。
インストール環境
-
OS
- CentOS 5.3
-
パッケージ
- postgresql-server-8.1.11-1.el5_1.1
パッケージのインストール
-
postgresql-serversのインストール
# yum install postgresql-server
これでインストールは完了です。
データベースクラスタの初期化
-
データベースクラスタの初期化を行います。
# su - postgres$ initdb --encoding=UTF-8 --no-locale -D /var/lib/pgsql/data/
-
--no-locale
ロケールを無効にするオプションです。
ロケールとは、言語や文化に応じた処理をするOSの機構で、
PostgreSQLでは主にデータのソート処理に使用します。
英語や日本語のデータを扱う場合には特に必要ありません。
逆に有効にするとロケール処理の分、ソート処理などが遅くなります。
-
-D
データベースの保存場所を指定します。
-
--no-locale
PostgreSQLの設定
postgresql.confの編集
-
設定ファイル「/var/lib/pgsql/data/postgresql.conf」にて動作設定を行います。
#全てのIPからの接続を許可しますlisten_addresses = '*'#autovacuumを有効にします。autovacuum = on #実行統計情報の収集機能が有効を有効にします。#autovacuumによるVACUUM処理は、この機能が有効になっている必要があります。stats_row_level = on
pg_hba.confの編集
-
ホスト認証設定ファイル「/var/lib/pgsql/data/pg_hba.conf」でデータベースに対するアクセス権を設定します。
今回は、LAN(192.168.11.0/24 )からは認証により全データベースにアクセス可能にします。# TYPE DATABASE USER CIDR-ADDRESS METHODhost all all 192.168.11.0/24 password
自動起動の設定
-
chkconfigコマンドで自動起動をONにします
# chkconfig postgresql on
-
chkconfigコマンドで自動起動の確認をします。LUNレベル3,4,5がonになっていれば問題ありません。
# chkconfig --list postgresqlpostgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
起動
-
PostgreSQLを起動します。
# /etc/init.d/postgresql start
-
psコマンドで起動の確認を行います。
# ps ax |grep postgres32399 pts/0 S 0:02 postgres: logger process32407 pts/0 S 0:01 postgres: writer process32410 pts/0 S 0:03 postgres: stats buffer process32411 pts/0 S 0:08 postgres: stats collector process
バックアップ
バックアップ手段
-
PostgreSQLのバックアップ手段は主に3通りあります。
- PostgreSQLのPITR(Point In Time Recovery)機能を利用する
- PostgreSQLのダンプツール(pg_dump)を利用する
-
OSコマンド(dump,cp,tar)を利用する
-
各手段の特徴は下記のようになります。
PITR pg_dump OSコマンド(cp,tarなど) 大規模データベースへの対応 ○ *1 × × オンラインバックアップ ○ ○ × リストア後の状態 任意の時点 バックアップ時点 バックアップ時点 メジャーバージョンアップへの利用 × ○ ×
PITRでのバックアップ・リストア
pg_dumpでのバックアップ・リストア
OSコマンドでのバックアップ・リストア
このバックアップ方式を利用する事はほぼ無いと思われるため省略します。
チューニング
「postgresql.conf」によるチューニングを紹介します。
同時接続数
-
max_connections
最大同時接続数を設定します。同時接続数の多い場合は設定を見直す必要があります。
メモリ関連
-
shared_buffers
データベースエンジンが利用する共有メモリのサイズ。設定を増やせば、キャッシュによる高速化が可能ですが、8000~10000以上を指定するとバッファ管理のオーバーヘッドにより逆に性能が低下するようです。
設定可能な最大値は「/proc/sys/kernel/shmmax」の値になります。
-
sort_mem
ソート処理で利用するメモリサイズ。ソート処理はSQLのORDER BYを指定した場合だけでなく、テーブル結合も実行されるため、
ソートバッファを大きくすることでパフォーマンスの向上が期待できます。
-
effective_cache_size
オプティマイザが利用するメモリサイズ。
デフォルトの1000(8K単位のため8M)は少なすぎるように思います。
autovacuum関連
autovacuumの設定はVACUUMに必要以上の負荷が掛からないよう、「autovacuum_vacuum_cost_delay」「autovacuum_vacuum_cost_limit」の2パラメータで負荷の上限値を設定すればよいと思います。
-
autovacuum_vacuum_cost_delay
自動VACUUM機能によるVACUUMにかかったコストがautovacuum_vacuum_cost_limitで指定した制限値に達したときに
VACUUMを休止する期間をミリ秒単位で指定します。
この値が-1の場合は、vacuum_cost_delayの値になります。
-
autovacuum_vacuum_cost_limit
自動VACUUM機能による1回のVACUUM処理による累積のコストがこの値に達したときに、そのVACUUM処理を停止させる制限値を指定します。
この値が-1の場合は、vacuum_cost_limitの値になります。
-
autovacuum_vacuum_その他
下記の設定でVACUUMの起動タイミングを調整できますが、負荷の上限値を設定すれば基本デフォルトでよいと思います。設定項目 説明 autovacuum_naptime autovacuumを起動する間隔を秒単位で指定 autovacuum_vacuum_threshold VACUUMを起動するトリガとなる更新行数 autovacuum_analyze_threshold ANALYZEを起動するトリガとなる更新行数 autovacuum_vacuum_scale_factor VACUUMを起動するトリガとなる更新行数の割合 autovacuum_analyze_scale_factor ANALYZEを起動するトリガとなる更新行数の割合