Fedora Core 4 PostgreSQL


PostgreSQL7.4.x インストールガイド (更新:2005.10.18)

※PostgreSQL7.3.×以前のバージョンからの移行する方は事前にデータの退避作業、インストール後に復元作業が発生します。
この作業方法についてはこちらを参照ください。

PostgreSQL用アカウント・ディレクトリ作成

あらかじめPostgreSQL用のアカウントを作成します。
rootユーザーで作成します。

$ su -
$ [root Password]
$ adduser postgres

ソースファイルを展開するディレクトリを作成します

$ mkdir /usr/local/src/postgresql-7.4.9

作成したディレクトリの権限変更

$ chown postgres /usr/local/src/postgresql-7.4.9

プログラムのインストールディレクトリを作成します。

$ mkdir /usr/local/pgsql

作成したディレクトリの権限変更

$ chown postgres /usr/local/pgsql

ソースファイルの入手・展開

PostgreSQLのWebサイトよりソースファイルを取得
ここではバージョン7.4.9を選択してます。
最新バージョンを確認して相応に置き換えてください
PostgreSQLのWebページ http://www.jp.postgresql.org/(日本ミラーサイトです)

$ cd /usr/local/src/
$ wget ftp://ftp.jp.postgresql.org/source/v7.4.9/postgresql-7.4.9.tar.gz

postgresユーザになりDLしたファイルを解凍

$ su - postgres
$ cd /usr/local/src/
$ tar xzf postgresql-7.4.9.tar.gz

解凍したファイルのディレクトリへ

$ cd postgresql-7.4.9

コンフィグ・コンパイル・インストール

マルチバイト対応オプションをつけてコンフィグレーション
その他必要に応じて各自調べて追加修正してください

$ ./configure --enable-multibyte=EUC_JP \
 --with-openssl=/usr/bin/openssl

標準のmake作業 (かなり時間がかかります)

$ make

ここで下記の表示が出ていればmake作業はOKです

All of PostgreSQL successfully made. Ready to install.

make作業が問題なくでき、動作環境として問題ないか確認します

$ make check

ここですべてのテストがクリアした旨の表示が出ていればインストールOKです

インストールを実施

$ make install

ここで下記の表示が出ていればインストールOKです

PostgreSQL installation complete.

環境変数設定・データベース初期化

環境設定ファイルを編集します
bash用の設定です。(ご使用のshellに合わせて書き換えてください)
テキストエディタで ~/.bashrc を追記編集します。

$ vi ~/.bashrc
PATH="$PATH":/usr/local/pgsql/bin
PG=/usr/local/pgsql
export PGLIB=$PG/lib
export PGDATA=$PG/data
export MANPATH="$MANPATH":$PG/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

編集した内容を反映させます

$ source ~/.bashrc

データベースクラスタを作成します
これはデータベースのデータを管理するためのものです

$ initdb

ここで下記の表示が出ていればOKです

Success. You can now start the database server using:

    /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

以上でPostgreSQLのインストール完了

自動起動設定

postgresユーザーからrootに戻ります

次にPostgreSQLが自動起動するように設定を追加します
作業はシステムの起動管理設定ですのでrootで行います
設定ファイルは/etc/rc.d/init.dの配下に作成します。

$ exit
$ cd /etc/rc.d/init.d

テキストエディタでファイルを新規作成します

$ vi postgresql

下記の内容を入力します

#! /bin/sh

# Installation prefix
prefix=/usr/local/pgsql

# Data directory
PGDATA="/usr/local/pgsql/data"

# Who to run pg_ctl as, should be "postgres".
PGUSER=postgres

# Where to keep a log file
PGLOG="$PGDATA/serverlog"

## STOP EDITING HERE

# Check for echo -n vs echo \c
if echo '\c' | grep -s c >/dev/null 2>&1 ; then
    ECHO_N="echo -n"
    ECHO_C=""
else
    ECHO_N="echo"
    ECHO_C='\c'
fi

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# What to use to start up the postmaster
DAEMON="$prefix/bin/pg_ctl"

set -e

# Only start if we can find pg_ctl.
test -f $DAEMON || exit 0

# Parse command line parameters.
case $1 in
  start)
        $ECHO_N "Starting PostgreSQL: "$ECHO_C
        su - $PGUSER -c "$DAEMON start -D '$PGDATA' -s -l $PGLOG"
        echo "ok"
        ;;
  stop)
        echo -n "Stopping PostgreSQL: "
        su - $PGUSER -c "$DAEMON stop -D '$PGDATA' -s -m fast"
        echo "ok"
        ;;
  restart)
        su - $PGUSER -c "$DAEMON restart -D '$PGDATA' -s -m fast"
        echo "ok"
        ;;
  status)
        su - $PGUSER -c "$DAEMON status -D '$PGDATA'"
        ;;
  *)
        # Print help
        echo "Usage: $0 {start|stop|restart|status}" 1>&2
        exit 1
        ;;
esac
exit 0

実行用のパーミッションを立てます

$ chmod +x postgresql 

各起動レベルにリンクをはります

$ cd ../rc0.d
$ ln -s ../init.d/postgresql K02postgresql
$ cd ../rc1.d/
$ ln -s ../init.d/postgresql K02postgresql
$ cd ../rc2.d/
$ ln -s ../init.d/postgresql K02postgresql
$ cd ../rc3.d/
$ ln -s ../init.d/postgresql S98postgresql
$ cd ../rc4.d/
$ ln -s ../init.d/postgresql S98postgresql
$ cd ../rc5.d/
$ ln -s ../init.d/postgresql S98postgresql

以上で自動起動の設定が完了です。
作業はpostgresユーザで行います

$ su - postgres

ps -aef でPostgreSQLのタスクが残っていないか確認します
正常に終了しているのを確認しましたら
再びrootになり新しく設定した自動起動の確認を行います

$ exit
$ /etc/rc.d/init.d/postgresql start

タスクの確認をします
下記のようにPostgreSQLが新しく起動されていれば作業は完了です。

$ ps -u postgres
  PID TTY          TIME CMD
  740 ?        00:00:02 postmaster
  750 ?        00:00:00 postmaster
  751 ?        00:00:00 postmaster

※PIDはプロセスIDですのでサーバー個々で違う番号が表示されます

データの退避・復旧方法

※下記に記載する内容はあくまで私個人の環境によるものです。すべての動作を補償するものではありません。
また作業で生じた損害等について一切責任を負いかねます。ご了承下さい。
各自必要に応じて関連ドキュメントで自分にあった方法を確認してください。

新しい7.4.xをインストール作業する前に下記の方法で必ずデータを退避(バックアップ)してください。
作業はpostgresユーザで行います

$ su - postgres
$ pg_dumpall > backup.pgsql

次に既存のPostgreSQLのディレクトリは別名にして退避させます。
(インストール後にinitdbを行う際に /usr/local/pgsql/data にデータがあると初期化失敗するため)
作業はrootユーザで行います

$ su -
password : (root passwordを入力)
$ mv /usr/local/pgsql /usr/local/pgsql.old

以上で新規にPostgreSQLのインストール作業を開始してください。
新しい7.4.xをインストール作業を終え、退避させたデータを復旧させます。
initdbを行ってからpostgresを起動してください。
作業はpostgresユーザで行います

$ su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
$ /etc/rc.d/init.d/postgresql start
$ psql -f backup.pgsql template1

定期的なメンテナンス etc

本来はcronなどで定期的に処理させる方が望ましいのですが、利用頻度に応じて下記の処理を行うといいでしょう。

作業はpostgresユーザで行います
VACUUM処理
レコードの更新や削除などで不要になった領域を削除等を目的に使用します。

$ su - postgres
$ vacuumdb -a

定期的なデータのバックアップ
上記のデータの退避で記載しましたが、定期的に年月日付のファイル名でバックアップを取ると万が一の復旧に役に立ちます。

$ su - postgres
$ pg_dumpall > backup20031225.pgsql


Last-modified: 2015-04-23 (木) 15:17:46 (964d)