※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

PostgreSQLを利用する前に

PostgreSQLを利用する前に行う必要がある作業について記載します。


環境変数CYGWIN

export CYGWIN=server
を実行しておく必要があります。
/.bashrc
などに登録しておくと便利です。

これを行っていない場合、PostgreSQL起動時などにBad system callが表示されることがあるようです。
selecting default max_connections ... sh: line 1: 3656 Bad system call


cygserver

cygserverの設定

下記を実行してcygserverを起動しておく必要があります。
cygserver-config
$ cygserver-config  
Overwrite existing /etc/cygserver.conf file? (yes/no) yes
Generating /etc/cygserver.conf file

Warning: The following function requires administrator privileges!
Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes


It is advisable to add this setting to the Windows system environment.

Basic Cygserver configuration finished. Have fun!

cygserverの設定確認

下記でcygserverの設定確認が出来ます。
cygrunsrv -L
$ cygrunsrv -L          
cygserver

cygserverの起動確認

下記でcygserverの起動確認が出来ます。
「Current State」が「Running」になっていれば起動中です。
cygrunsrv -Q cygserver
$ cygrunsrv -Q cygserver
Service             : cygserver
Display name        : CYGWIN cygserver
Current State       : Running
Controls Accepted   : Stop
Command             : /usr/sbin/cygserver

「Current State」が「Stopped」になっていれば停止中です。
$ cygrunsrv -Q cygserver
Service             : cygserver
Display name        : CYGWIN cygserver
Current State       : Stopped
Command             : /usr/sbin/cygserver
この場合は下記でcygserverの起動が行えます。
cygrunsrv -S cygserver



PostgreSQLデータベースの初期化

PostgreSQLの初回利用前に一度だけ行う必要があります。
/usr/sbin/initdb -E EUC_JP --locale=C /usr/local/pgsql/data
$ /usr/sbin/initdb -E EUC_JP --locale=C /usr/local/pgsql/data
The files belonging to this database system will be owned by user "*".
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 ... 40
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:

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

/tmp/postgresql



PostgreSQLの起動

PostgreSQLの起動を行います。
/usr/sbin/pg_ctl \
-D /usr/local/pgsql/data -l /var/log/postgresql.log start
$ /usr/sbin/pg_ctl\
-D /usr/local/pgsql/data -l /var/log/postgresql.log start
postmaster starting


PostgreSQLの起動確認

PostgreSQLの起動確認を行います。
「postmaster is running」と表示されれば起動しています。
/usr/sbin/pg_ctl -D /usr/local/pgsql/data status
$ /usr/sbin/pg_ctl -D /usr/local/pgsql/data status
pg_ctl: postmaster is running (PID: 1684)
/usr/sbin/postgres.exe -D /usr/local/pgsql/data

「neither postmaster nor postgres running」と表示されれば停止しています。
$ /usr/sbin/pg_ctl -D /usr/local/pgsql/data status
pg_ctl: neither postmaster nor postgres running


PostgreSQLの接続確認

PostgreSQLの接続確認を行います。
/usr/bin/psql template1
$ /usr/bin/psql template1
Welcome to psql 8.0.7, the PostgreSQL interactive terminal.

Type:
\copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=# \q



PostgreSQLの停止

PostgreSQLの停止を行います。
/usr/sbin/pg_ctl -D /usr/local/pgsql/data stop
$ /usr/sbin/pg_ctl -D /usr/local/pgsql/data stop
waiting for postmaster to shut down.... done
postmaster stopped



その他

環境変数PGDATA

環境変数PGDATAにデータベースのディレクトリを指定しておくと、PostgreSQLの起動や停止時にいちいち指定しなくて済むようになります。
~/.bashrcなどに登録しておくと便利です。
export PGDATA=/usr/local/pgsql/data


起動停止スクリプト

/etc/rc.d/init.d/postgresqlとして、こんなのを作っておくと便利です。

#!/bin/bash

# Source function library.
if [ -f /etc/init.d/functions ]; then
 . /etc/init.d/functions
fi

case "$1" in
 start) /usr/sbin/pg_ctl -D /usr/local/pgsql/data -l /var/log/postgresql.log start ;;
 stop) /usr/sbin/pg_ctl -D /usr/local/pgsql/data stop ;;
 restart) /usr/sbin/pg_ctl -D /usr/local/pgsql/data -l /var/log/postgresql.log restart ;;
 reload) /usr/sbin/pg_ctl -D /usr/local/pgsql/data reload ;;
 status) /usr/sbin/pg_ctl -D /usr/local/pgsql/data status ;;
 initdb) /usr/sbin/initdb -E EUC_JP --locale=C /usr/local/pgsql/data ;;
 *) echo $"Usage: $0 {start|stop|restart|reload|status|initdb}"
esac

exit $?