Step By Step PostgreSQL 9.2 Installation on Linux Cent 7
Step 1: Download PostgreSQL Yum Repository from below site:
*************************************************************************
https://yum.postgresql.org/
It's about 9.2 PostgreSQL version
--------------------------------------------------
Step 2: Install downloaded rpm via root:
*********************************************
[root@postgresnode1 Downloads]# rpm -q postgresql92-server
package postgresql92-server is not installed
[root@postgresnode1 Downloads]# ls -lrth
total 8.0K
-rw-rw-r--. 1 pradeep pradeep 4.7K Jun 18 22:53 pgdg-centos92-9.2-3.noarch.rpm
[root@postgresnode1 Downloads]# rpm -iUvh pgdg-centos92-9.2-3.noarch.rpm
warning: pgdg-centos92-9.2-3.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:pgdg-centos92-9.2-3 ################################# [100%]
[root@postgresnode1 Downloads]#
[root@postgresnode1 Downloads]# yum install postgresql92-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.ehost.vn
* extras: mirrors.vhost.vn
* updates: mirrors.123host.vn
Resolving Dependencies
--> Running transaction check
---> Package postgresql92-server.x86_64 0:9.2.21-1PGDG.rhel7 will be installed
--> Processing Dependency: postgresql92-libs(x86-64) = 9.2.21-1PGDG.rhel7 for package: postgresql92-server-9.2.21-1PGDG.rhel7.x86_64
--> Processing Dependency: postgresql92(x86-64) = 9.2.21-1PGDG.rhel7 for package: postgresql92-server-9.2.21-1PGDG.rhel7.x86_64
--> Processing Dependency: postgresql92 = 9.2.21-1PGDG.rhel7 for package: postgresql92-server-9.2.21-1PGDG.rhel7.x86_64
--> Processing Dependency: libpq.so.5()(64bit) for package: postgresql92-server-9.2.21-1PGDG.rhel7.x86_64
--> Running transaction check
---> Package postgresql92.x86_64 0:9.2.21-1PGDG.rhel7 will be installed
---> Package postgresql92-libs.x86_64 0:9.2.21-1PGDG.rhel7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================================================================================================
Installing:
postgresql92-server x86_64 9.2.21-1PGDG.rhel7 pgdg92 3.6 M
Installing for dependencies:
postgresql92 x86_64 9.2.21-1PGDG.rhel7 pgdg92 1.0 M
postgresql92-libs x86_64 9.2.21-1PGDG.rhel7 pgdg92 208 k
Transaction Summary
====================================================================================================================================================================================================================================
Install 1 Package (+2 Dependent packages)
Total download size: 4.8 M
Installed size: 22 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): postgresql92-libs-9.2.21-1PGDG.rhel7.x86_64.rpm | 208 kB 00:00:11
(2/3): postgresql92-9.2.21-1PGDG.rhel7.x86_64.rpm | 1.0 MB 00:00:11
(3/3): postgresql92-server-9.2.21-1PGDG.rhel7.x86_64.rpm | 3.6 MB 00:02:13
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 34 kB/s | 4.8 MB 00:02:25
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : postgresql92-libs-9.2.21-1PGDG.rhel7.x86_64 1/3
Installing : postgresql92-9.2.21-1PGDG.rhel7.x86_64 2/3
Installing : postgresql92-server-9.2.21-1PGDG.rhel7.x86_64 3/3
Verifying : postgresql92-libs-9.2.21-1PGDG.rhel7.x86_64 1/3
Verifying : postgresql92-9.2.21-1PGDG.rhel7.x86_64 2/3
Verifying : postgresql92-server-9.2.21-1PGDG.rhel7.x86_64 3/3
Installed:
postgresql92-server.x86_64 0:9.2.21-1PGDG.rhel7
Dependency Installed:
postgresql92.x86_64 0:9.2.21-1PGDG.rhel7 postgresql92-libs.x86_64 0:9.2.21-1PGDG.rhel7
Complete!
[root@postgresnode1 Downloads]#
Step 3: Verifiy Installation:
******************************
[root@postgresnode1 Downloads]# rpm -q postgresql92-server
postgresql92-server-9.2.21-1PGDG.rhel7.x86_64
[root@postgresnode1 Downloads]# rpm -ql postgresql92-server
/etc/pam.d/postgresql92
/etc/sysconfig/pgsql
/usr/lib/systemd/system/postgresql-9.2.service
/usr/pgsql-9.2/bin/initdb
/usr/pgsql-9.2/bin/pg_controldata
/usr/pgsql-9.2/bin/pg_ctl
/usr/pgsql-9.2/bin/pg_resetxlog
/usr/pgsql-9.2/bin/postgres
/usr/pgsql-9.2/bin/postgresql92-check-db-dir
/usr/pgsql-9.2/bin/postgresql92-setup
/usr/pgsql-9.2/bin/postmaster
/usr/pgsql-9.2/lib
/usr/pgsql-9.2/lib/ascii_and_mic.so
/usr/pgsql-9.2/lib/cyrillic_and_mic.so
/usr/pgsql-9.2/lib/dict_int.so
/usr/pgsql-9.2/lib/dict_snowball.so
/usr/pgsql-9.2/lib/dict_xsyn.so
/usr/pgsql-9.2/lib/euc2004_sjis2004.so
/usr/pgsql-9.2/lib/euc_cn_and_mic.so
/usr/pgsql-9.2/lib/euc_jp_and_sjis.so
/usr/pgsql-9.2/lib/euc_kr_and_mic.so
/usr/pgsql-9.2/lib/euc_tw_and_big5.so
/usr/pgsql-9.2/lib/latin2_and_win1250.so
/usr/pgsql-9.2/lib/latin_and_mic.so
/usr/pgsql-9.2/lib/plpgsql.so
/usr/pgsql-9.2/lib/test_parser.so
/usr/pgsql-9.2/lib/tsearch2.so
/usr/pgsql-9.2/lib/utf8_and_ascii.so
/usr/pgsql-9.2/lib/utf8_and_big5.so
/usr/pgsql-9.2/lib/utf8_and_cyrillic.so
/usr/pgsql-9.2/lib/utf8_and_euc2004.so
/usr/pgsql-9.2/lib/utf8_and_euc_cn.so
/usr/pgsql-9.2/lib/utf8_and_euc_jp.so
/usr/pgsql-9.2/lib/utf8_and_euc_kr.so
/usr/pgsql-9.2/lib/utf8_and_euc_tw.so
/usr/pgsql-9.2/lib/utf8_and_gb18030.so
/usr/pgsql-9.2/lib/utf8_and_gbk.so
/usr/pgsql-9.2/lib/utf8_and_iso8859.so
/usr/pgsql-9.2/lib/utf8_and_iso8859_1.so
/usr/pgsql-9.2/lib/utf8_and_johab.so
/usr/pgsql-9.2/lib/utf8_and_sjis.so
/usr/pgsql-9.2/lib/utf8_and_sjis2004.so
/usr/pgsql-9.2/lib/utf8_and_uhc.so
/usr/pgsql-9.2/lib/utf8_and_win.so
/usr/pgsql-9.2/share
/usr/pgsql-9.2/share/conversion_create.sql
/usr/pgsql-9.2/share/extension
/usr/pgsql-9.2/share/extension/plpgsql--1.0.sql
/usr/pgsql-9.2/share/extension/plpgsql--unpackaged--1.0.sql
/usr/pgsql-9.2/share/extension/plpgsql.control
/usr/pgsql-9.2/share/information_schema.sql
/usr/pgsql-9.2/share/locale/cs/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/cs/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/cs/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/de/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/de/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/de/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/de/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/es/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/es/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/es/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/es/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/fr/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/fr/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/fr/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/fr/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/it/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/it/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/it/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/it/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/ja/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/ja/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/ja/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/ja/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/ko/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/pl/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/pl/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/pl/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/pl/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/pt_BR/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/pt_BR/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/pt_BR/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/pt_BR/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/ro/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/ro/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/ro/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/ru/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/ru/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/ru/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/ru/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/tr/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/tr/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/zh_CN/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/zh_CN/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/zh_CN/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/zh_CN/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/locale/zh_TW/LC_MESSAGES/pg_controldata-9.2.mo
/usr/pgsql-9.2/share/locale/zh_TW/LC_MESSAGES/pg_resetxlog-9.2.mo
/usr/pgsql-9.2/share/locale/zh_TW/LC_MESSAGES/plpgsql-9.2.mo
/usr/pgsql-9.2/share/locale/zh_TW/LC_MESSAGES/postgres-9.2.mo
/usr/pgsql-9.2/share/man/man1/initdb.1
/usr/pgsql-9.2/share/man/man1/pg_controldata.1
/usr/pgsql-9.2/share/man/man1/pg_ctl.1
/usr/pgsql-9.2/share/man/man1/pg_resetxlog.1
/usr/pgsql-9.2/share/man/man1/postgres.1
/usr/pgsql-9.2/share/man/man1/postmaster.1
/usr/pgsql-9.2/share/pg_hba.conf.sample
/usr/pgsql-9.2/share/pg_ident.conf.sample
/usr/pgsql-9.2/share/pg_service.conf.sample
/usr/pgsql-9.2/share/postgres.bki
/usr/pgsql-9.2/share/postgres.description
/usr/pgsql-9.2/share/postgres.shdescription
/usr/pgsql-9.2/share/postgresql.conf.sample
/usr/pgsql-9.2/share/psqlrc.sample
/usr/pgsql-9.2/share/recovery.conf.sample
/usr/pgsql-9.2/share/snowball_create.sql
/usr/pgsql-9.2/share/sql_features.txt
/usr/pgsql-9.2/share/system_views.sql
/usr/pgsql-9.2/share/timezonesets/Africa.txt
/usr/pgsql-9.2/share/timezonesets/America.txt
/usr/pgsql-9.2/share/timezonesets/Antarctica.txt
/usr/pgsql-9.2/share/timezonesets/Asia.txt
/usr/pgsql-9.2/share/timezonesets/Atlantic.txt
/usr/pgsql-9.2/share/timezonesets/Australia
/usr/pgsql-9.2/share/timezonesets/Australia.txt
/usr/pgsql-9.2/share/timezonesets/Default
/usr/pgsql-9.2/share/timezonesets/Etc.txt
/usr/pgsql-9.2/share/timezonesets/Europe.txt
/usr/pgsql-9.2/share/timezonesets/India
/usr/pgsql-9.2/share/timezonesets/Indian.txt
/usr/pgsql-9.2/share/timezonesets/Pacific.txt
/usr/pgsql-9.2/share/tsearch_data/danish.stop
/usr/pgsql-9.2/share/tsearch_data/dutch.stop
/usr/pgsql-9.2/share/tsearch_data/english.stop
/usr/pgsql-9.2/share/tsearch_data/finnish.stop
/usr/pgsql-9.2/share/tsearch_data/french.stop
/usr/pgsql-9.2/share/tsearch_data/german.stop
/usr/pgsql-9.2/share/tsearch_data/hungarian.stop
/usr/pgsql-9.2/share/tsearch_data/hunspell_sample.affix
/usr/pgsql-9.2/share/tsearch_data/ispell_sample.affix
/usr/pgsql-9.2/share/tsearch_data/ispell_sample.dict
/usr/pgsql-9.2/share/tsearch_data/italian.stop
/usr/pgsql-9.2/share/tsearch_data/norwegian.stop
/usr/pgsql-9.2/share/tsearch_data/portuguese.stop
/usr/pgsql-9.2/share/tsearch_data/russian.stop
/usr/pgsql-9.2/share/tsearch_data/spanish.stop
/usr/pgsql-9.2/share/tsearch_data/swedish.stop
/usr/pgsql-9.2/share/tsearch_data/synonym_sample.syn
/usr/pgsql-9.2/share/tsearch_data/thesaurus_sample.ths
/usr/pgsql-9.2/share/tsearch_data/turkish.stop
/usr/pgsql-9.2/share/tsearch_data/unaccent.rules
/usr/pgsql-9.2/share/tsearch_data/xsyn_sample.rules
/var/lib/pgsql
/var/lib/pgsql/9.2
/var/lib/pgsql/9.2/backups
/var/lib/pgsql/9.2/data
Step 4: Read above findings carefully & get below information.
***********************************************************************
Remark: while installing postgresql through yum it will create default postgres user for database.
--------------------------------------------------------------------------------------------------
1. /usr/pgsql-9.2 => (Binary_Location)
2. /var/lib/pgsql/9.2/data => (Datafiles_Location)
3. [root@postgresnode1 Downloads]# id postgres
uid=26(postgres) gid=26(postgres) groups=26(postgres)
4. /usr/lib/systemd/system/postgresql-9.2.service => This is the service of postgresql & service need to be start via root user.
Step 5: Let's verify below Service & Datafile location before initializing Service & Database.
***********************************************************************************************
1. Service Status:
---------------------------
[root@postgresnode1 ~]# systemctl status postgresql-9.2 -l
postgresql-9.2.service - PostgreSQL 9.2 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.2.service; disabled)
Active: inactive (dead)
2. Datafile Location:
--------------------------------
-bash-4.2$ pwd
/var/lib/pgsql/9.2/data
-bash-4.2$
-bash-4.2$ ls -lrth
total 0
-bash-4.2$
Step 6: Modifiy .base_profile files of root & postgres users for setting up path to find service & binary.
*************************************************************************************************
1. root's .bash_profile
----------------------------------------
[root@postgresnode1 ~]# vi .bash_profile
PATH=$HOME/bin:/usr/lib/systemd/system:$PATH:.
:wq
[root@postgresnode1 ~]# . .bash_profile
2. postgres' .bash_profile
-------------------------------------------
-bash-4.2$ ls -a
-bash-4.2$ vi .bash_profile
export PATH=/usr/bin:/usr/ccs/bin:/usr/local/bin:/usr/pgsql-9.2/bin:$PATH:.
:wq
-bash-4.2$ . .bash_profile
Step 7: Start the service first then initializing the database:
*******************************************************************
[root@postgresnode1 ~]# systemctl start postgresql-9.2 -l
Job for postgresql-9.2.service failed. See 'systemctl status postgresql-9.2.service' and 'journalctl -xn' for details.
#Remark: It will get fail because database location is not initialized. let's check error massage of service start fail, then initialize the database location.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
#Error massage:
-------------------------
[root@postgresnode1 ~]# systemctl status postgresql-9.2.service
postgresql-9.2.service - PostgreSQL 9.2 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.2.service; disabled)
Active: failed (Result: exit-code) since Mon 2017-06-19 00:17:46 NPT; 32s ago
Process: 5420 ExecStartPre=/usr/pgsql-9.2/bin/postgresql92-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
Jun 19 00:17:46 postgresnode1.localdomain systemd[1]: Starting PostgreSQL 9.2 database server...
Jun 19 00:17:46 postgresnode1.localdomain postgresql92-check-db-dir[5420]: "/var/lib/pgsql/9.2/data/" is missing or empty.
Jun 19 00:17:46 postgresnode1.localdomain postgresql92-check-db-dir[5420]: Use "/usr/pgsql-9.2/bin/postgresql92-setup initdb" to initialize the database cluster.
Jun 19 00:17:46 postgresnode1.localdomain postgresql92-check-db-dir[5420]: See /usr/share/doc/postgresql92/README.rpm-dist for more information.
Jun 19 00:17:46 postgresnode1.localdomain systemd[1]: postgresql-9.2.service: control process exited, code=exited status=1
Jun 19 00:17:46 postgresnode1.localdomain systemd[1]: Failed to start PostgreSQL 9.2 database server.
Jun 19 00:17:46 postgresnode1.localdomain systemd[1]: Unit postgresql-9.2.service entered failed state.
#Let's initialize the database location.
----------------------------------------------------------
[root@postgresnode1 ~]# su - postgres
Last login: Mon Jun 19 00:16:13 NPT 2017 on pts/0
-bash-4.2$
-bash-4.2$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
fixing permissions on existing directory /var/lib/pgsql/9.2/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /var/lib/pgsql/9.2/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
postgres -D /var/lib/pgsql/9.2/data
or
pg_ctl -D /var/lib/pgsql/9.2/data -l logfile start
-bash-4.2$
#Let's try again to start service again from root user.
----------------------------------------------------------------------------
[root@postgresnode1 ~]# systemctl start postgresql-9.2 -l
[root@postgresnode1 ~]# systemctl status postgresql-9.2 -l
postgresql-9.2.service - PostgreSQL 9.2 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.2.service; disabled)
Active: active (running) since Mon 2017-06-19 00:31:36 NPT; 33s ago
Process: 5711 ExecStart=/usr/pgsql-9.2/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
Process: 5706 ExecStartPre=/usr/pgsql-9.2/bin/postgresql92-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 5715 (postgres)
CGroup: /system.slice/postgresql-9.2.service
+-5715 /usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data
+-5716 postgres: logger process
+-5718 postgres: checkpointer process
+-5719 postgres: writer process
+-5720 postgres: wal writer process
+-5721 postgres: autovacuum launcher process
+-5722 postgres: stats collector process
Jun 19 00:31:35 postgresnode1.localdomain systemd[1]: Starting PostgreSQL 9.2 database server...
Jun 19 00:31:36 postgresnode1.localdomain systemd[1]: Started PostgreSQL 9.2 database server.
#Verify the status via procecss.
---------------------------------------------
[root@postgresnode1 ~]# ps -ef | grep -i postgres | grep -v grep
avahi 664 1 0 Jun18 ? 00:00:00 avahi-daemon: running [postgresnode1.local]
postgres 5715 1 0 00:31 ? 00:00:00 /usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data
postgres 5716 5715 0 00:31 ? 00:00:00 postgres: logger process
postgres 5718 5715 0 00:31 ? 00:00:00 postgres: checkpointer process
postgres 5719 5715 0 00:31 ? 00:00:00 postgres: writer process
postgres 5720 5715 0 00:31 ? 00:00:00 postgres: wal writer process
postgres 5721 5715 0 00:31 ? 00:00:00 postgres: autovacuum launcher process
postgres 5722 5715 0 00:31 ? 00:00:00 postgres: stats collector process
Enjoy PostgreSQL Learning...!!!
********************************
Pradeep Kumar
+91-9972201100