趣味と実益と現実逃避で更新されるblogです.
役に立つことから無意味なことまでさまざま書いていきます.
|
November 14th, 2013 |
PostgreSQLの公式RPMがよくできている(Read: 37552) |
参照: 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つを付け加えます.
# 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 |
ELF Nov 14th, 2013 14:24 / [ 編集 ]
[ コメントする ] [ トラックバック(0) ] [ ] |
[ POST ] [ AddLink ] [ CtlPanel ]
<< | 6月 | >> | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
* | * | * | * | 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 | * |