PostgreSQL 8.1



はじめに

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
      データベースの保存場所を指定します。

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          METHOD
    host    all         all         192.168.11.0/24       password

自動起動の設定

  • 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 postgres
    32399 pts/0    S      0:02 postgres: logger process
    32407 pts/0    S      0:01 postgres: writer process
    32410 pts/0    S      0:03 postgres: stats buffer process
    32411 pts/0    S      0:08 postgres: stats collector process

バックアップ

バックアップ手段

  • PostgreSQLのバックアップ手段は主に3通りあります。
    • PostgreSQLのPITR(Point In Time Recovery)機能を利用する
    • PostgreSQLのダンプツール(pg_dump)を利用する
    • OSコマンド(dump,cp,tar)を利用する

  • 各手段の特徴は下記のようになります。
    PITRpg_dumpOSコマンド(cp,tarなど)
    大規模データベースへの対応*1××
    オンラインバックアップ×
    リストア後の状態任意の時点バックアップ時点バックアップ時点
    メジャーバージョンアップへの利用××

PITRでのバックアップ・リストア

PostgreSQL/PITR

pg_dumpでのバックアップ・リストア

PostgreSQL/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_naptimeautovacuumを起動する間隔を秒単位で指定
    autovacuum_vacuum_thresholdVACUUMを起動するトリガとなる更新行数
    autovacuum_analyze_thresholdANALYZEを起動するトリガとなる更新行数
    autovacuum_vacuum_scale_factorVACUUMを起動するトリガとなる更新行数の割合
    autovacuum_analyze_scale_factorANALYZEを起動するトリガとなる更新行数の割合



*1 バックアップ・リストアの時間を短縮するため、スナップショットやボリューム複製機能を備えたストレージが必要
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-09-06 (月) 01:36:16 (9h)