はじめてみよう! PostgreSQL for Solaris 10 : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20080226 2008年 2月 26日 火曜日

はじめてみよう! PostgreSQL for Solaris 10

Solaris 10 6/06 (update 2) から、PostgreSQL がバンドルされました。
具体的にはSolaris 10 6/06,11/06 には PostgreSQL 8.1.x が、Solaris 10 8/07 には
PostgreSQL 8.1.x,8.2.x が Solaris に最適化された形でコンパイルしたものが入っています。
ソースコードは PostgreSQL と同じものです。

これらのバイナリはSolaris にバンドルされておりますのでもちろん使用権無償でご利用いただけます。
バンドルされた PostgreSQL の保守サポートを受ける場合は Solaris の
サポートとは別オプションで提供しています。

ちなみに、PostgreSQL は 8.2 からソースコードに DTrace プローブポイントが埋め込まれており、
コンパイル時に "--enable-dtrace" オプションをつけることにより、利用することができます。
もちろん、バンドルされている PostgreSQL 8.2 にはこのオプションがついた形でコンパイルされております。

ディレクトリ構造は以下のようになっています。

< PostgreSQL 8.1.x >
実行形式                /usr/bin
ライブラリ              /usr/lib
ドキュメント            /usr/share/doc/pgsql/8.1.x
                        /usr/share/doc/pgsql/8.1.x/contrib
Contrib                 /usr/share/pgsql/contrib
Data                    /var/lib/pgsql/data        --> 空
バックアップ領域	/var/lib/pgsql/backups     --> 空
テンプレート            /usr/share/pgsql
開発用ヘッダ            /usr/include/pgsql
その他の共有データ      /usr/share/pgsql
< PostgreSQL 8.2.x >
実行形式                /usr/postgres/8.2/bin
ライブラリ              /usr/postgres/8.2/lib
ドキュメント            /usr/postgres/8.2/doc
Contrib                 /usr/postgres/8.2/share/contrib
Data                    /var/postgres/8.2/data     --> 空
バックアップ領域	/var/postgres/8.2/backups  --> 空
テンプレート            /usr/postgres/8.2/share
開発用ヘッダ            /usr/postgres/8.2/include
その他の共有データ      /usr/postgres/8.2/share

ご覧いただくとお分かりの通り、PostgreSQL 8.1.x では /usr/bin にバイナリがあるため、
例えば postgres や pg_ctl のようなコマンドは既にパスが通っています。
ただし、PostgreSQL 8.2 を使用する場合には /usr/postgres/8.2/bin にあるため、
/usr/bin の前にパスを通しておくことが必要となりますのでご注意ください。

ここでは Solaris 10 8/07 を前提とし、実際にサービスを起動するまでの手順を紹介します。
( "#" は root のプロンプト、"$" は postgres ユーザーのプロンプトを示します。)

Solaris 10 8/07 では postgres ユーザーおよび postgres グループがデフォルトで
入っておりますので、今回はそれを使用します。

< PostgreSQL 8.1.x >
1.root ユーザーで PostgreSQL のデータ領域の権限を postgres ユーザー・グループに変更し、
  postgres ユーザーでログインする

 # chown postgres:postgres /var/lib/pgsql/data
 # su - postgres

2.PostgreSQL のデータベースクラスタを作成する

 $ /usr/bin/initdb -D /var/lib/pgsql/data

3.svcadm で PostgreSQL を起動する

 # /usr/sbin/svcadm enable postgresql:version_81
< PostgreSQL 8.2.x >
1.root から、postgres ユーザーにログインする

 # su - postgres

2.PostgreSQL のデータベースクラスタを作成する

 $ /usr/postgres/8.2/bin/initdb -D /var/postgres/8.2/data

3.svcadm で PostgreSQL を起動する

 # /usr/sbin/svcadm enable postgresql:version_82

起動までの手順は以上です。
これだけですぐに PostgreSQL を利用できます。

Solaris 10 8/07 からは PostgreSQL のサービスも SMF で定義されているので、
PostgreSQL で使用する pg_ctl コマンドを利用しなくても簡単に起動できます。
もちろん、PostgreSQL で使用する pg_ctl コマンドなどで起動・停止していただくことも可能です。

 # svcs postgresql
 STATE          STIME    FMRI
 disabled       16:09:02 svc:/application/database/postgresql:version_81
 disabled       19:29:25 svc:/application/database/postgresql:version_82

以下のサイトに PostgreSQL for Solaris に関する有用な情報が満載ですのでご参照下さい!

o PostgreSQL for Solaris

http://www.sun.com/software/products/postgresql/index.jsp

o PostgreSQL Tuning Tips for Sun Fire T2000 Systems Running Solaris

http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp

投稿されたコメント:

いつも参考にさせて頂いています。

Solaris のデフォルトの postgres ユーザのホームディレクトリがルート(/)なのが怖いので、私はDataディレクトリの直上に変更しています。

PosstgreSQL 8.2.x -> /var/postgres/8.2

8.1.x の場合は、/var/lib/pgsqlのオーナがrootなので、注意が必要かも知れません。

また、データベースクラスタを作成する際、特に日本語を扱う場合はオプションが必要です。

$ /usr/postgres/8.2/bin/initdb -E UTF-8 --no-locale -D /var/postgres/8.2/data

"-E"は漢字コード指定ですが、システムデフォルトがUTF-8なら不要かも知れません。
"--no-locale"は、特に2バイト文字を扱う場合に必須です。

私は、実際に上記で運用しています。

Posted by bunroku on 3月月 14日, 2008年 at 11:24 午前 JST #

コメント
  • HTML文法 不許可