ドルヲタ系インフラエンジニア じーふーの備忘録

クラウドをメインに扱うインフラエンジニアが書くメモやら雑感、たまにドルヲタ的活動記録残します。最近の推しはAzureのData Factory(V2)です。

【postgresql】 yumを利用してインストール

環境

CentOS 6.5

リポジトリ追加

公式で配布している各環境用のRPMファイルを下記サイトよりダウンロードしてインストール

PostgreSQL RPM Repository (with Yum)

今回は下記RPMファイルをインストールしました

[root@vagrant-centos65 ~]# rpm -ivh /vagrant/pgdg-centos94-9.4-1.noarch.rpm
warning: /vagrant/pgdg-centos94-9.4-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8                                                                                                       : NOKEY
Preparing...                ########################################### [100%]
   1:pgdg-centos94          ########################################### [100%]
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# rpm -ql pgdg-centos94
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94
/etc/yum.repos.d/pgdg-94-centos.repo
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# rpm -qi pgdg-centos94
Name        : pgdg-centos94                Relocations: (not relocatable)
Version     : 9.4                               Vendor: (none)
Release     : 1                             Build Date: Thu 15 May 2014 09:29:57 PM JST
Install Date: Tue 05 May 2015 07:07:43 PM JST      Build Host: koji-sl6-x86-64-pg94
Group       : System Environment/Base       Source RPM: pgdg-centos94-9.4-1.src.rpm
Size        : 2168                             License: BSD
Signature   : DSA/SHA1, Thu 15 May 2014 09:29:57 PM JST, Key ID 1f16d2e1442df0f8
URL         : http://yum.postgresql.org
Summary     : PostgreSQL 9.4.X PGDG RPMs for CentOS - Yum Repository Configuration
Description :
This package contains yum configuration for CentOS, and also the GPG
key for PGDG RPMs.
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]#
[root@vagrant-centos65 ~]# cat /etc/yum.repos.d/pgdg-94-centos.repo
[pgdg94]
name=PostgreSQL 9.4 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.4/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94

[pgdg94-source]
name=PostgreSQL 9.4 $releasever - $basearch - Source
failovermethod=priority
baseurl=http://yum.postgresql.org/srpms/9.4/redhat/rhel-$releasever-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-94

PostgreSQLインストール

下記パッケージをインストール

[root@vagrant-centos65 ~]# yum search postgresql94-server
postgresql94-server.x86_64 : The programs needed to create and run a PostgreSQL server

postgresql94-serverをインストールすることで下記パッケージがインストールされます。

  • postgresql94-server
  • postgresql94
  • postgresql94-libs

備考

各パッケージ詳細

postgresql94

PostgreSQLのクライアント機能群

postgresql94.x86_64 : PostgreSQL client programs and libraries

インストールすることで追加される機能

機能 備考
/usr/pgsql-9.4/bin/clusterdb PostgreSQLデータベースをクラスタ化する
/usr/pgsql-9.4/bin/createdb 新しいPostgreSQLデータベースを作成する
/usr/pgsql-9.4/bin/createlang PostgreSQLの手続き言語をインストールする ※廃止予定
/usr/pgsql-9.4/bin/createuser 新しいPostgreSQLのユーザアカウントを定義する
/usr/pgsql-9.4/bin/dropdb PostgreSQLデータベースを削除する
/usr/pgsql-9.4/bin/droplang PostgreSQLの手続き言語を削除する ※廃止予定
/usr/pgsql-9.4/bin/dropuser PostgreSQLのユーザアカウントを削除する
/usr/pgsql-9.4/bin/pg_basebackup PostgreSQLクラスタのベースバックアップを取得する
/usr/pgsql-9.4/bin/pg_config インストールしたバージョンのPostgreSQLに関する情報を提供する
/usr/pgsql-9.4/bin/pg_dump PostgreSQLデータベースをスクリプトファイルまたは他のアーカイブファイルへ抽出する
/usr/pgsql-9.4/bin/pg_dumpall PostgreSQLのデータベースクラスタスクリプトファイルへ抽出する
/usr/pgsql-9.4/bin/pg_isready PostgreSQLサーバの接続状態を検査する
/usr/pgsql-9.4/bin/pg_receivexlog PostgreSQLサーバからトランザクションログをストリームする
/usr/pgsql-9.4/bin/pg_restore pg_dumpによって作成されたアーカイブファイルからPostgreSQLデータベースをリストアする
/usr/pgsql-9.4/bin/pg_test_fsync PostgreSQLの最も高速なwal_sync_methodを決定する
/usr/pgsql-9.4/bin/psql PostgreSQLの対話的ターミナル
/usr/pgsql-9.4/bin/reindexdb PostgreSQLデータベースのインデックスを再作成する
/usr/pgsql-9.4/bin/vacuumdb PostgreSQLデータベースの不要領域の回収と解析を行う

ディレクトリ構成

役割 パス
実行ファイル /usr/bin and /usr/pgsql-9.4/bin
ライブラリ /usr/pgsql-9.4/lib
ドキュメント /usr/pgsql-9.4/doc
コントリビューション関連ドキュメント /usr/pgsql-9.4/doc
データファイル /var/lib/pgsql/9.4/data
バックアップ領域 /var/lib/pgsql/9.4/backups
テンプレート /usr/pgsql-9.4/share
プロシージャ言語 /usr/pgsql-9.4/lib
共有ライブラリ /usr/pgsql-9.4/include
その他 /usr/pgsql-9.4/share
リグレッションテスト /usr/pgsql-9.4/lib/test

マニュアル

RPM FILE LOCATIONS.
-----------------------------------------------------------------------------
To be in compliance with the Linux FHS, the PostgreSQL RPMs install files in
a manner not consistent with most of the PostgreSQL documentation.  According
to the standard PostgreSQL documentation, PostgreSQL is installed under the
directory /usr/local/pgsql, with executables, source, and data existing in
various subdirectories.

Different distributions have different ideas of some of these file locations.
In particular, the documentation directory can be /usr/doc, /usr/doc/packages,
/usr/share/doc, /usr/share/doc/packages, or some other similar path.

However, the Red Hat / Scientific Linux ( CentOS / Fedora RPM's install
the files like this:

Executables:            /usr/bin and /usr/pgsql-9.4/bin
Libraries:              /usr/pgsql-9.4/lib
Documentation:          /usr/pgsql-9.4/doc
Contrib documentation:  /usr/pgsql-9.4/doc
Source:                 not installed
Data:                   /var/lib/pgsql/9.4/data
Backup area:            /var/lib/pgsql/9.4/backups
Templates:              /usr/pgsql-9.4/share
Procedural Languages:   /usr/pgsql-9.4/lib
Development Headers:    /usr/pgsql-9.4/include
Other shared data:      /usr/pgsql-9.4/share
Regression tests:       /usr/pgsql-9.4/lib/test

While it may seem gratuitous to place these files in different locations, the
FHS requires it -- distributions should not ever touch /usr/local.  It may
also seem like more work to keep track of where everything is -- but, that's
the beauty of RPM -- you don't have to keep track of the files, RPM does it
for you.

These RPMs are designed to be LSB-compliant -- if you find this not to be the
case, please let us know by way of the pgsql-pkg-yum@postgresql.org
mailing list.

リグレッションテストを実行する

下記パッケージをインストールすることでリグレッションテストを実行することが可能となります。

postgresql94-test.x86_64 : The test suite distributed with PostgreSQL

実行ログ

[root@vagrant-centos65 regress]# su - postgres
-bash-4.1$
-bash-4.1$ cd /usr/pgsql-9.4/lib/test/regress/
-bash-4.1$
-bash-4.1$
-bash-4.1$-bash-4.1$ make check
rm -rf testtablespace results
mkdir testtablespace results
./pg_regress --inputdir=. --psqldir='/usr/bin'   --dlpath=. --schedule=./parallel_schedule
(using postmaster on Unix socket, default port)
============== dropping database "regression"         ==============
NOTICE:  database "regression" does not exist, skipping
DROP DATABASE
============== creating database "regression"         ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test tablespace               ... ok
parallel group (20 tests):  name txid regproc oid pg_lsn char varchar money int2 float4 boolean text int4 float8 uuid int8 bit enum rangetypes numeric
     boolean                  ... ok
     char                     ... ok
     name                     ... ok
     varchar                  ... ok
     text                     ... ok
     int2                     ... ok
     int4                     ... ok
     int8                     ... ok
     oid                      ... ok
     float4                   ... ok
     float8                   ... ok
     bit                      ... ok
     numeric                  ... ok
     txid                     ... ok
     uuid                     ... ok
     enum                     ... ok
     money                    ... ok
     rangetypes               ... ok
     pg_lsn                   ... ok
     regproc                  ... ok
test strings                  ... ok
test numerology               ... ok
parallel group (20 tests):  comments lseg path timetz time reltime line box polygon tinterval abstime circle tstypes macaddr point date interval inet timestamp timestamptz
     point                    ... ok
     lseg                     ... ok
     line                     ... ok
     box                      ... ok
     path                     ... ok
     polygon                  ... ok
     circle                   ... ok
     date                     ... ok
     time                     ... ok
     timetz                   ... ok
     timestamp                ... ok
     timestamptz              ... ok
     interval                 ... ok
     abstime                  ... ok
     reltime                  ... ok
     tinterval                ... ok
     inet                     ... ok
     macaddr                  ... ok
     tstypes                  ... ok
     comments                 ... ok
parallel group (6 tests):  geometry regex horology type_sanity oidjoins opr_sanity
     geometry                 ... ok
     horology                 ... ok
     regex                    ... ok
     oidjoins                 ... ok
     type_sanity              ... ok
     opr_sanity               ... ok
test insert                   ... ok
test create_function_1        ... ok
test create_type              ... ok
test create_table             ... ok
test create_function_2        ... ok
parallel group (2 tests):  copyselect copy
     copy                     ... ok
     copyselect               ... ok
parallel group (2 tests):  create_operator create_misc
     create_misc              ... ok
     create_operator          ... ok
parallel group (2 tests):  create_view create_index
     create_index             ... ok
     create_view              ... ok
parallel group (11 tests):  create_cast create_aggregate typed_table create_function_3 drop_if_exists vacuum constraints create_table_like triggers inherit updatable_views
     create_aggregate         ... ok
     create_function_3        ... ok
     create_cast              ... ok
     constraints              ... ok
     triggers                 ... ok
     inherit                  ... ok
     create_table_like        ... ok
     typed_table              ... ok
     vacuum                   ... ok
     drop_if_exists           ... ok
     updatable_views          ... ok
test sanity_check             ... ok
test errors                   ... ok
test select                   ... ok
parallel group (20 tests):  select_distinct_on btree_index select_distinct random select_having delete hash_index namespace update case select_implicit select_into prepared_xacts union portals transactions subselect aggregates arrays join
     select_into              ... ok
     select_distinct          ... ok
     select_distinct_on       ... ok
     select_implicit          ... ok
     select_having            ... ok
     subselect                ... ok
     union                    ... ok
     case                     ... ok
     join                     ... ok
     aggregates               ... ok
     transactions             ... ok
     random                   ... ok
     portals                  ... ok
     arrays                   ... ok
     btree_index              ... ok
     hash_index               ... ok
     update                   ... ok
     namespace                ... ok
     prepared_xacts           ... ok
     delete                   ... ok
parallel group (6 tests):  lock replica_identity security_label collate matview privileges
     privileges               ... ok
     security_label           ... ok
     collate                  ... ok
     matview                  ... ok
     lock                     ... ok
     replica_identity         ... ok
parallel group (4 tests):  async psql alter_generic misc
     alter_generic            ... ok
     misc                     ... ok
     psql                     ... ok
     async                    ... ok
test rules                    ... ok
test event_trigger            ... ok
parallel group (19 tests):  combocid portals_p2 advisory_lock tsdicts xmlmap guc equivclass functional_deps dependency json select_views tsearch jsonb window cluster bitmapops foreign_data indirect_toast foreign_key
     select_views             ... ok
     portals_p2               ... ok
     foreign_key              ... ok
     cluster                  ... ok
     dependency               ... ok
     guc                      ... ok
     bitmapops                ... ok
     combocid                 ... ok
     tsearch                  ... ok
     tsdicts                  ... ok
     foreign_data             ... ok
     window                   ... ok
     xmlmap                   ... ok
     functional_deps          ... ok
     advisory_lock            ... ok
     json                     ... ok
     jsonb                    ... ok
     indirect_toast           ... ok
     equivclass               ... ok
parallel group (19 tests):  limit prepare conversion plancache returning temp xml sequence without_oid copy2 rowtypes with polymorphism truncate domain largeobject rangefuncs alter_table plpgsql
     plancache                ... ok
     limit                    ... ok
     plpgsql                  ... ok
     copy2                    ... ok
     temp                     ... ok
     domain                   ... ok
     rangefuncs               ... ok
     prepare                  ... ok
     without_oid              ... ok
     conversion               ... ok
     truncate                 ... ok
     alter_table              ... ok
     sequence                 ... ok
     polymorphism             ... ok
     rowtypes                 ... ok
     returning                ... ok
     largeobject              ... ok
     with                     ... ok
     xml                      ... ok
test stats                    ... ok

=======================
 All 145 tests passed.
=======================

-bash-4.1$