使用RPM安装PostgreSQL 9.5的步骤

我很高兴如果PostgreSQL能够在中国得到更广泛的应用,所以我会写一些相关内容。
首先是从安装到数据库构建的步骤。

最初的时候

本文将说明如何使用RPM在CentOS 7上安装PostgreSQL 9.5.3的步骤。

准备RPM文件

由于PostgreSQL社区提供了RPM文件,所以我们将使用它。

本次所使用的PostgreSQL構建檔案如下。

    • postgresql95-9.5.3-2PGDG.rhel7.x86_64.rpm

 

    • postgresql95-server-9.5.3-2PGDG.rhel7.x86_64.rpm

 

    • postgresql95-libs-9.5.3-2PGDG.rhel7.x86_64.rpm

 

    • postgresql95-devel-9.5.3-2PGDG.rhel7.x86_64.rpm

 

    postgresql95-contrib-9.5.3-2PGDG.rhel7.x86_64.rpm
パッケージ名概要postgresqlPostgreSQLに接続や操作等を行うためのクライアントプログラムpostgresql-serverPostgreSQLサーバ作成、起動/停止等に必要なプログラムpostgresql-libsクライアントプログラムやI/Fに必要なPostgreSQLのライブラリ群postgresql-devel開発モジュール。CやC++アプリケーションのコンパイルに必要なヘッダファイル、ライブラリpostgresql-contribPostgreSQLが提供する追加モジュール

顺便提一下,你也可以使用yum来安装。但请参考Let’s PostgreSQL的文章以获取更多信息。

安装RPM软件包。

# rpm -ivh ./rpm/postgresql95-*
warning: ./rpm/postgresql95-9.5.3-2PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql95-libs-9.5.3-2PGDG.rhe################################# [ 17%]
   2:postgresql95-9.5.3-2PGDG.rhel7   ################################# [ 33%]
   3:postgresql95-contrib-9.5.3-2PGDG.################################# [ 50%]
   4:postgresql95-devel-9.5.3-2PGDG.rh################################# [ 67%]
   5:postgresql95-server-9.5.3-2PGDG.r################################# [ 83%]
   6:postgresql95-debuginfo-9.5.3-2PGD################################# [100%]

3. 如何启动PostgreSQL

编辑~/.bash_profile

请将以下内容写入 ~/.bash_profile 文件中。

export PATH=/usr/pgsql-9.5/bin:$PATH
export PGDATA=/var/lib/pgsql/9.5/data

应用以上编辑的内容。

$ source ~/.bash_profile

3-2. 创建DB集群

创建一个PostgreSQL数据库集群。

$ initdb --no-locale --encoding=utf-8
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 "C".
・・・

3-3. 编辑配置文件

按照系统要求,需要修改配置文件(postgresql.conf)。这次我会告诉你一个建议,就是在我们的环境中只需要改这个配置项,这样会更方便使用。

# Add settings for extensions here
listen_addresses = '*'
wal_level = hot_standby
checkpoint_timeout = 15min
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d.log'
log_min_duration_statement = 60
log_checkpoints = on
log_lock_waits = on 
log_error_verbosity = verbose
log_line_prefix = '%m [%p] '

只考虑本地连接,所以pg_hba.conf文件保持不变。

3-4. 启动数据库

启动PostgreSQL。

$ pg_ctl start
server starting
-bash-4.2$ 2016-05-27 00:46:38.824 JST [16487] LOG:  00000: redirecting log output to logging collector process
2016-05-27 00:46:38.824 JST [16487] HINT:  Future log output will appear in directory "pg_log".
2016-05-27 00:46:38.824 JST [16487] LOCATION:  SysLogger_Start, syslogger.c:622

4. 检查启动

确认流程,并检查以下流程的存在。

$ ps -ef | grep postgres
postgres 16487     1  0 00:46 pts/1    00:00:00 /usr/pgsql-9.5/bin/postgres
postgres 16488 16487  0 00:46 ?        00:00:00 postgres: logger process   
postgres 16490 16487  0 00:46 ?        00:00:00 postgres: checkpointer process  
postgres 16491 16487  0 00:46 ?        00:00:00 postgres: writer process   
postgres 16492 16487  0 00:46 ?        00:00:00 postgres: wal writer process  
postgres 16493 16487  0 00:46 ?        00:00:00 postgres: autovacuum launcher process  
postgres 16494 16487  0 00:46 ?        00:00:00 postgres: stats collector process  

如果进程没有启动,请检查$PGDATA/pg_log/postgresql-*.log日志文件。
如果启动正常,应该会出现以下日志。

2016-05-27 00:46:38.863 JST [16487] LOG:  00000: database system is ready to accept connections

5. 进行操作确认(创建表格、插入数据)

我将创建一个测试用表格,并尝试插入数据。

$ psql postgres -c "CREATE TABLE bar(i int)"
CREATE TABLE
$ psql postgres -c "INSERT INTO bar VALUES (1)"
INSERT 0 1

确认已经插入的数据能够通过SELECT进行检索。

$ psql postgres -c "SELECT * FROM bar"
 i 
---
 1
(1 row)

你构建得很好。
下次我打算写一下复制配置(同步、异步)的相关内容。