MyMiniCity踏んでください!!

ただいま絶賛MyMiniCity参加中です.是非リンクを踏んでください!!(笑
November 14th, 2013

PostgreSQLの公式RPMがよくできている

(Read: 11923)
Add to Hatena Bookmark

参照: PostgreSQL RPM Repository (with Yum)
先日より数年ぶりに業務でPostgreSQLを使うようになって環境整備をしていたのですが, PostgreSQLの公式RPMが使い勝手よさそうで仕事がはかどります

どういうところに魅力があるかというと,簡単に書くと下記の通りです.

  • とても簡単に同一ホストで複数インスタンスを立てられる
  • とても簡単に同一ホストで同時に別メジャーバージョンのインストールして使うこともできる

簡単すぎて魅力に感じないかもしれません(苦笑 っが,それはさておき実際に導入してみます.

インストール

よくある~releasesなRPMを入れ,実際に使いたいソフトウェアのRPMをyum経由でインストールするのが無難かと思います. この際~releaseなRPMはメジャーバージョン毎に分かれているので欲しいバージョンのRPMを入れます.

# rpm -ihv http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-redhat92-9.2-7.noarch.rpm
# yum install postgresql92-server
#rpm -ihv http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
# yum install postgresql93-server

初期構築

initdbをする前にベースとなる設定を/etc/sysconfigに置きます. 公式RPMはいわゆるPGDATAなどPG系の環境変数を/etc/sysconfig/pgsql/にPostgreSQL用の設定を置くことができます.

# cat /etc/sysconfig/pgsql/postgresql-9.3
LOCALEPARAMETER=C
PGINSTANCE=$(basename $0 | sed 's/^postgresql\-//g')
PGENGINE=/usr/pgsql-${PGMAJORVERSION}/bin
PGPORT=5432
PGDATA=/var/lib/pgsql/${PGINSTANCE}/data
PGLOGDIR=/var/log/pgsql/${PGINSTANCE}
PGLOG=${PGLOGDIR}/pgstartup.log
PGUPLOG=${PGLOGDIR}/pgupgrade.log

if [ ! -d ${PGLOGDIR} ]; then
    mkdir -p ${PGLOGDIR} && \
      chmod g=x,o-rwx ${PGLOGDIR} && \
      chown postgresql:postgresql ${PGLOGDIR}
fi

最後のディレクトリーを作ったりはこのファイルに書くかどうかは好みかもしれません. 各変数の細かいことはinitscriptを読みましょう.

若干補足をすると,PGLOGDIRはグループを+xしています. これはpg_monzなどを使ってZabbixでログ監視をする際,zabbix-agentはユーザーzabbixで動かすため,ディレクトリーの中に入れないため,ユーザーzabbixをグループpostgresにも参加させ,g+xしてディレクトリー内に入れるようにしています.

あわせてpostgresql.confで「log_file_mode = 0640」としておくとg+rなログが出てくるのでzabbix-agentからログ監視が可能になります.

ここまで設定できればinitdbをします.PGDATAは実行したユーザーの所有になるのでpostgresに変更しておきます.

# service postgresql-9.3 initdb
# chown postgres:postgres 

補足すると,LOCALEPARAMETER=Cはinitdbでは--locale=Cの指定と等価,ひいては--no-localeと等価になるようです.

[root@pg01 data]# LANG=C /usr/pgsql-9.3/bin/initdb --help | grep locale
      --locale=LOCALE       set default locale for new databases
                            set default locale in the respective category for
      --no-locale           equivalent to --locale=C

あとはPGDATA内にpostgresql.confなどができているのでいつものように設定をすればOKです.

別インスタンスを作る

別インスタンスを作る場合は上記手順に下記の2つを付け加えます.

  • そのインスタンス用のsysconfigを用意する
  • そのインスタンス用のinitscriptを用意する
# sed 's/PGPORT=5432/PGPORT=5433/g' \
    /etc/sysconfig/pgsql/postgresql-9.3 > \
    /etc/sysconfig/pgsql/postgresql-9.3-second
# ln -s postgresql-9.3 /etc/init.d/postgresql-9.3-second
# chkconfig --add postgresql-9.3-second
# chkconfig postgresql-9.3-second on

ここで注目すべきこと?はinitscriptはcpではなくlnでシンボリックリンクとして作成していることです. こうすることでpostgresql93-serverなどが更新された際にもしinitscriptが更新されても追従することができます.

あとはinitdbなどををpostgresql-9.3-second向けに実行していくだけです.

# service postgresql-9.3-second initdb
# chown postgres:postgres /var/lib/pgsql/9.3-second
# service postgresql-9.3-second start

トピックの参照元

▼最近のトピック

▼ 人気のトピック


< 過去の記事 [ 4All Categories ] 新しい記事 >
Powered by gsblog (customize)

[ POST ] [ AddLink ] [ CtlPanel ]

Subscribe blog

Bookmark blog

About me

about me

応援しています

我が息子が産まれたアクア・バースハウス(東京都世田谷区にある助産院)を応援しています.

翻訳のお仕事

腕に自信がある方,修行をしたい方はこちらをどうぞ.

2017 calendar

4月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
| Day | Month | Year |

Powered by RRDTOOL.

Archives

Categories

Links


Mail to admin

人気ブログランキングへ RSS feed meter for http://blog.poyo.jp/ Search Engine Optimization
blogpeople.netに登録!! スカウター : よくきたblog

My Google news

My Google News

Related site

ころんころん♪ べびぽよ フォト蔵Wiki
string(14) "/id-1384406653"