//keyword
//PostgreSQL,postgres,8.4,インストール,設定
* PostgreSQL 8.4 (目次)[#q1444ee0]
---------------------------------------------
#contents
---------------------------------------------
//**PostgreSQLとは
//**インストールの前提
//-バージョン 8.1.11
//-/var/lib/pgsql/data/
//**はじめに [#n6316b52]
//プロンプトが「#」の場合はrootユーザ、プロンプトが「$」の場合はpostgresユーザで実行します。
*インストール環境 [#wa313cf4]
-OS
--CentOS 5.4 (kernel 2.6.18-164.11.1.el5)
-パッケージ
--postgresql-server-8.4.2-1PGDG.rhel5
--postgresql-libs-8.4.2-1PGDG.rhel5
--postgresql-8.4.2-1PGDG.rhel5
--compat-postgresql-libs-4-1PGDG.rhel5
*インストール [#u5167fb9]
-postgresql8.4を利用するためリポジトリを追加します。
# rpm -ivh http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-2.noarch.rpm
-postgresql-serversのインストール
# yum install postgresql-server
~
*データベースクラスタの初期化 [#y417a977]
-データベースクラスタの初期化を行います。
# su - postgres
$ initdb --encoding=UTF-8 --no-locale -D /var/lib/pgsql/data/
--''--no-locale''~
ロケールを無効にするオプションです。~
ロケールとは、言語や文化に応じた処理をするOSの機構で、~
PostgreSQLでは主にデータのソート処理に使用します。~
~
英語や日本語のデータを扱う場合には特に必要ありません。~
逆に有効にするとロケール処理の分、ソート処理などが遅くなります。~
~
~
--''-D''~
データベースの保存場所を指定します。
*PostgreSQLの設定 [#b9fd2916]
**postgresql.confの編集 [#t73522e9]
-パラメータ設定ファイル「postgresql.conf」を編集します。
# vi /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'
max_connections = 100
shared_buffers = 64MB
wal_buffers = 2MB
work_mem = 4MB
checkpoint_segments = 16
# PITR関連の設定
archive_mode = on
archive_command = 'cp "%p" /var/lib/pgsql/archive/"%f"'
# ログ関連の設定
log_destination = 'syslog'
log_min_error_statement = error
# 統計情報関連の設定
track_activities = on
track_counts = on
# autovacuum関連の設定
autovacuum = on
//-------------------------------------------------------------------//
#br
//|RIGHT:400||c
|設定項目|説明|h
|listen_addresses|postmasterがクライアントアプリケーションからの接続を監視するTCP/IPホスト名かアドレスを設定します。|
|max_connections|データベースサーバーへの同時接続の最大数を設定します。|
|shared_buffers|データベースサーバで使用される共有メモリバッファのページ数を設定します。|
|wal_buffers|WALデータ用に共有メモリ内で使用されるメモリ量を設定します。|
|work_mem |プランナが問い合わせ実行計画を作成するときに使う、マージソート結合とハッシュ結合のためのメモリ量を指定します。|
|checkpoint_segments|チェックポイントの間隔をセグメントファイル数で設定します。&br;トランザクションログがここに指定したセグメントファイル数に達した場合、チェックポイントを発生させます。1セグメントは16Mバイト。|
|log_destination |stderr (標準エラー出力), syslog, csvlogを選択します。複数選択も可能。|
|log_min_error_statement|デフォルトのERRORを設定した場合は、エラー、ログメッセージ、致命的エラー、パニックを引き起こした文がログに記録されます。|
|track_activities|サーバーで実行されているコマンドとその実行開始時刻を収集するか否かを設定します。 |
|track_counts|パフォーマンス統計情報を収集するか否かを設定します。&br;この値をoffにすると、自動バキューム機能が正常に動作しなくなります。 |
|autovacuum |VACUUMEおよびANALYZEを自動で実行するか否かを設定します。|
//------------------------------------------------------------------
**pg_hba.confの編集 [#v2155d4d]
-次にホスト認証設定ファイル「pg_hba.conf」を編集します。~
今回は、LAN(192.168.11.0/24 )からは認証により全データベースにアクセス可能にします。
# vi /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.11.0/24 password
**ログの設定 [#zc67dd74]
***postgresql.confの編集 [#t73522e9]
-ログをsyslogへ出力するよう「postgresql.conf」を編集します。
**ログの設定 [#r7e33cb4]
***postgresql.confの確認 [#t73522e9]
-ログをsyslogへ出力する設定を確認します。
# vi /var/lib/pgsql/data/postgresql.conf
log_destination = 'syslog'
log_min_error_statement = error
***syslogの設定 [#wcc0000a]
-ログを保存するためのディレクトリを作成します。
# mkdir /var/log/postgres
-ログの出力先を設定します。
# vi /etc/syslog.conf
local0.* /var/log/postgres/postgres.log
-syslogのログローテートにldap.logを追加します。
-syslogのログローテートにpostgres.logを追加します。
# vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog
/var/log/spooler /var/log/boot.log /var/log/cron /var/log/postgres/postgres.log {
-syslogを再起動します。
# /etc/init.d/syslog restart
**自動起動の設定 [#s03da8fb]
-chkconfigコマンドで自動起動をONにします
# chkconfig postgresql on
~
-chkconfigコマンドで自動起動の確認をします。
LUNレベル3,4,5がonになっていれば問題ありません。
# chkconfig --list postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
//-------------------------------------------------------
-PostgreSQLを起動します。
# /etc/init.d/postgresql start
~
-psコマンドで起動の確認を行います。
# ps ax |grep post
12846 ? S 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
12848 ? Ss 0:00 postgres: logger process
12850 ? Ss 0:00 postgres: writer process
12851 ? Ss 0:00 postgres: wal writer process
12852 ? Ss 0:00 postgres: autovacuum launcher process
12853 ? Ss 0:00 postgres: archiver process
12854 ? Ss 0:00 postgres: stats collector process
|プロセス名|説明|h
|postmaster|DBMSデーモン|
|logger process|サーバログ|
|writer process|バックグラウンドライタ|
|wal writer process|WAL ライタ|
|archiver process|アーカイブログ管理|
|autovacuum launcher process|自動バキューム|
|stats collector process|統計情報|
//-------------------------------------------------------
*バックアップ [#x7546a62]
**バックアップ方法 [#c5a491a0]
-PostgreSQLのバックアップ手段は主に3通りあります。
--PostgreSQLのPITR(Point In Time Recovery)機能を利用する
--PostgreSQLのダンプツール(pg_dump)を利用する
--OSコマンド(dump,cp,tar)を利用する
~
~
-各手段の特徴は下記のようになります。
||PITR|pg_dump|OSコマンド(cp,tarなど)|h
|大規模データベースへの対応|○((バックアップ・リストアの時間を短縮するため、スナップショットやボリューム複製機能を備えたストレージが必要))|×|×|
|オンラインバックアップ|○|○|×|
|リストア後の状態|任意の時点|バックアップ時点|バックアップ時点|
|メジャーバージョンアップへの利用|×|○|×|
***PITRでのバックアップ・リストア [#b4f15dac]
-今回はPITRの設定を行います。~
[[PostgreSQL/PITR]]
***pg_dumpでのバックアップ・リストア [#r8f52c7a]
[[PostgreSQL/pg_dump]]
***OSコマンドでのバックアップ・リストア [#redf3a14]
このバックアップ方式を利用する事はほぼ無いと思われるため省略します。
-データベースを停止してバックアップする事はほとんど無いと思われるため省略します。
//-------------------------------------------------------
*チューニング [#c3752f8c]
「postgresql.conf」によるチューニングを紹介します。
***同時接続数 [#ydc33c77]
-''max_connections''~
データベースへの最大同時接続数を設定します。同時接続数の多い場合は設定を見直す必要があります。~
~
~
***メモリ関連 [#dba8d0be]
-''shared_buffers''~
データベースエンジンが利用する共有メモリのサイズ。
設定を増やせば、キャッシュによる高速化が可能ですが、
8000~10000以上を指定するとバッファ管理のオーバーヘッドにより逆に性能が低下するようです。~
設定可能な最大値は「/proc/sys/kernel/shmmax」の値になります。
-''work_mem''~
セッションがソート処理およびテーブル結合などに使用するメモリサイズ。
最大量をKByte単位で設定します。
-''effective_cache_size''~
オプティマイザが利用するメモリサイズ。~
デフォルトの1000(8K単位のため8M)。~
-''wal_buffers''~
WALデータ用に共有メモリ内で使用されるメモリサイズ。
~
~
***autovacuum関連 [#m9048582]
autovacuumの設定はVACUUMに必要以上の負荷が掛からないよう、
「autovacuum_vacuum_cost_delay」「autovacuum_vacuum_cost_delay」の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の起動タイミングを調整できますが、負荷の上限値を設定すれば基本デフォルトでよいと思います。
|設定項目|説明|h
|autovacuum_naptime|autovacuumを起動する間隔を秒単位で指定|
|autovacuum_vacuum_threshold|VACUUMを起動するトリガとなる更新行数|
|autovacuum_analyze_threshold|ANALYZEを起動するトリガとなる更新行数|
|autovacuum_vacuum_scale_factor|VACUUMを起動するトリガとなる更新行数の割合|
|autovacuum_analyze_scale_factor|ANALYZEを起動するトリガとなる更新行数の割合|
~
~
//■参考
//http://yum.pgsqlrpms.org/reporpms/repoview/pgdg-centos.html
//参考http://plaza.rakuten.co.jp/gontata/diary/20090408/
//-------------------------------------------------------