• 追加された行はこの色です。
  • 削除された行はこの色です。
  • PostgreSQL/8.4 へ行く。

//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/

//-------------------------------------------------------
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS