PostgreSQL 8.4 (目次) †
インストール環境 †
- 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
インストール †
- postgresql8.4を利用するためリポジトリを追加します。
# rpm -ivh http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-2.noarch.rpm
- 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の編集 †
- パラメータ設定ファイル「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
設定項目 説明 listen_addresses postmasterがクライアントアプリケーションからの接続を監視するTCP/IPホスト名かアドレスを設定します。 max_connections データベースサーバーへの同時接続の最大数を設定します。 shared_buffers データベースサーバで使用される共有メモリバッファのページ数を設定します。 wal_buffers WALデータ用に共有メモリ内で使用されるメモリ量を設定します。 work_mem プランナが問い合わせ実行計画を作成するときに使う、マージソート結合とハッシュ結合のためのメモリ量を指定します。 checkpoint_segments チェックポイントの間隔をセグメントファイル数で設定します。
トランザクションログがここに指定したセグメントファイル数に達した場合、チェックポイントを発生させます。1セグメントは16Mバイト。log_destination stderr (標準エラー出力), syslog, csvlogを選択します。複数選択も可能。 log_min_error_statement デフォルトのERRORを設定した場合は、エラー、ログメッセージ、致命的エラー、パニックを引き起こした文がログに記録されます。 track_activities サーバーで実行されているコマンドとその実行開始時刻を収集するか否かを設定します。 track_counts パフォーマンス統計情報を収集するか否かを設定します。
この値をoffにすると、自動バキューム機能が正常に動作しなくなります。autovacuum VACUUMEおよびANALYZEを自動で実行するか否かを設定します。
pg_hba.confの編集 †
- 次にホスト認証設定ファイル「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
ログの設定 †
postgresql.confの確認 †
- ログをsyslogへ出力する設定を確認します。
# vi /var/lib/pgsql/data/postgresql.conf log_destination = 'syslog' log_min_error_statement = error
syslogの設定 †
- ログを保存するためのディレクトリを作成します。
# mkdir /var/log/postgres
- ログの出力先を設定します。
# vi /etc/syslog.conf local0.* /var/log/postgres/postgres.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
自動起動の設定 †
- 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
プロセス名 説明 postmaster DBMSデーモン logger process サーバログ writer process バックグラウンドライタ wal writer process WAL ライタ archiver process アーカイブログ管理 autovacuum launcher process 自動バキューム 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でのバックアップ・リストア †
- 今回はPITRの設定を行います。
PostgreSQL/PITR
pg_dumpでのバックアップ・リストア †
OSコマンドでのバックアップ・リストア †
- データベースを停止してバックアップする事はほとんど無いと思われるため省略します。
チューニング †
「postgresql.conf」によるチューニングを紹介します。
同時接続数 †
- max_connections
データベースへの最大同時接続数を設定します。同時接続数の多い場合は設定を見直す必要があります。
メモリ関連 †
- shared_buffers
データベースエンジンが利用する共有メモリのサイズ。 設定を増やせば、キャッシュによる高速化が可能ですが、 8000~10000以上を指定するとバッファ管理のオーバーヘッドにより逆に性能が低下するようです。
設定可能な最大値は「/proc/sys/kernel/shmmax」の値になります。
- work_mem
セッションがソート処理およびテーブル結合などに使用するメモリサイズ。 最大量をKByte単位で設定します。
- effective_cache_size
オプティマイザが利用するメモリサイズ。
デフォルトの1000(8K単位のため8M)。
- wal_buffers
WALデータ用に共有メモリ内で使用されるメモリサイズ。
autovacuum関連 †
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の起動タイミングを調整できますが、負荷の上限値を設定すれば基本デフォルトでよいと思います。設定項目 説明 autovacuum_naptime autovacuumを起動する間隔を秒単位で指定 autovacuum_vacuum_threshold VACUUMを起動するトリガとなる更新行数 autovacuum_analyze_threshold ANALYZEを起動するトリガとなる更新行数 autovacuum_vacuum_scale_factor VACUUMを起動するトリガとなる更新行数の割合 autovacuum_analyze_scale_factor ANALYZEを起動するトリガとなる更新行数の割合
Last-modified: 2010-07-19 (月) 23:38:06 (11d)