PostgreSQL8.0.0のインストール - MONO*LOG

PostgreSQL8.0.0のインストール

PostgreSQLの8.0.0がついに19日にリリースされた。(参考:SlashDot, MYCOM PC WEB)

・Windows 2000/XP用サーバーの公式サポート
Cygwin経由でのみ利用可能であったが、ようやくWinでも利用可能に。
Windows2000/Windows2000 Server/Windows2003 Serverが対象となる。インストーラー形式のバイナリはpginstallerにて配布されている。
・Tablespace
ディスク上の配置を固定ディレクトリでなく移動可能にする。これによりI/Oの分散も期待できる。
・Savepoint
トランザクションの一部をロールバックすることが可能に。
・Point In Time Recovery (PITR)
差分バックアップやロールフォワードといったデータ保護機能が強化された。
・パフォーマンス改善
特にバッファアルゴリズムが刷新されたこと、バックグラウンドのディスク書き込みプロセス、VACUUM時のキャッシュ利用の改善など。

3年ほど前にはじめてPostgreSQLに触れたときには、VACUUMとselectの遅さにとても苦労させられた苦い経験があり、結局MySQLに移行を余儀なくされた経験がある。ずいぶんと久しぶりになるがさっそくインストールして、PHPから利用してみたいと思う。

まずはインストールから。 PostgreSQL 公式サイトから最新のソースをダウンロード。

まずは、PostgreSQL を起動するのに必要なユーザアカウントを作成する。
PostgreSQL を /usr/local/pgsql 以下にインストールすることにして、ユーザアカウント postgres を作成する。パスワードも忘れずに設定しておくこと。

# useradd -d /usr/local/pgsql postgres # passwd postgres # chmod 755 /usr/local/pgsql



また、PostgreSQL では Oracle のように環境変数に各種設定をセットしている。
後々 PHP や Perl で利用するのであれば、コンパイル時にこれらの環境変数を参照できないと困るので、/etc/bashrc あたりに追記してしまうことをおすすめする。


# vi /etc/bashrc export PGHOME=/usr/local/pgsql export PGDATA=$PGHOME/data export PGLIB=$PGHOME/lib export PATH=$PATH:$HOME/bin:$PGHOME/bin



マルチバイト環境用にドキュメント (doc/README.mb.jp) があるので目を通しておく。 これによると、マルチバイトサポートのオプションはデフォルトで有効になっており、フロントエンドが SJIS だろうが EUC だろうが UNICODE だろうがバックエンドが EUC であれば許容すると。ふむふむ。ただ、ロケールの指定をすると面倒なことが多いとのこと。

とりあえず、以下のようなオプションでコンパイルをしておいた。

$ ./configure --prefix=/usr/local/pgsql --with-perl $ gmake $ su # gmake install



※アプリケーション開発に必要なヘッダファイルをインストールするには、下記コマンドを実行しておく。>

# gmake install-all-headers



※クライアント用にPostgreSQLをインストールする場合には、gmake install のかわりに以下のコマンドを実行する。以降の作業も必要ない。

# gmake -C src/bin install # gmake -C src/include install # gmake -C src/interfaces install # gmake -C doc install



インストール後には、データベース用のディレクトリを作成する。

# mkdir /usr/local/pgsql/data # chown postgres.postgres /usr/local/pgsql/data



インストールが終わったら postgres ユーザにて initdb コマンドでDBを初期化する。このときに -E オプションでバックエンドの文字コードを指定しておくと、以降の create database 関連でのデフォルト文字コードとなる。今回はEUCで初期化する。
ロケールの指定を省略するとシェルの設定を引き継ぐようになっているみたいだが日本語環境の場合、組み合わせによってソートや速度に問題が出るようだ。--no-locale(--locale=C) で明示的に指定すること。

$ su - postgres $ initdb --no-locale -E EUC_JP The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. creating directory /usr/local/pgsql/data ... ok creating directory /usr/local/pgsql/data/global ... ok creating directory /usr/local/pgsql/data/pg_xlog ... ok creating directory /usr/local/pgsql/data/pg_xlog/archive_status ... ok creating directory /usr/local/pgsql/data/pg_clog ... ok creating directory /usr/local/pgsql/data/pg_subtrans ... ok creating directory /usr/local/pgsql/data/base ... ok creating directory /usr/local/pgsql/data/base/1 ... ok creating directory /usr/local/pgsql/data/pg_tblspc ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 1000 creating configuration files ... ok creating template1 database in /usr/local/pgsql/data/base/1 ... ok initializing pg_shadow ... ok enabling unlimited row size for system tables ... ok initializing pg_depend ... ok creating system views ... ok loading pg_description ... ok creating conversions ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: postmaster -D /usr/local/pgsql/data or pg_ctl -D /usr/local/pgsql/data -l logfile start



接続元のアクセス制限は、pg_hba.conf を修正せよとある。デフォルトでは localhost のみの接続となっているので、これはあとでゆっくり設定しておこう。
PostgreSQL を起動するには、postgres ユーザで

$ pg_ctl start



とする。
postgres: writer process
postgres: stats buffer process
postgres: stats collector process
の各プロセスが立ち上がっていればOK。

デーモンの起動には、あらかじめ用意されている起動スクリプトを利用する。
Linux であれば、ソースディレクトリ以下の contrib/start-scripts/linux ファイル。
Redhat であれば、以下のように設定すればよい。

# cp contrib/start-scripts/linux /etc/rc.d/init.d/postgresql # chmod 755 /etc/rc.d/init.d/postgresql # chkconfig --add postgresql



これで、/etc/rc.d/init.d/postgresql start|stop|restart|reload|status の各オプションが使えるようになった。
最後に、意図しない状況でサーバが停止したときに PostgreSQL はロックファイルを削除できない。
これでは次回起動時に PostgreSQL は起動できないので、/etc/rc.local に以下の記述をしておくこと。

# vi /etc/rc.local # PostgreSQL /bin/rm -f /tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432.lock /usr/local/pgsql/data/postmaster.pid (1行で記述)


コメントする

アーカイブ

Music