联系:手机/微信(+86 17813235971) QQ(107644445)
标题:在linux上安装PostgreSQL 9.4并启动和关闭数据库
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES, Version 4.2为基础的对象关系型数据库管理系统(ORDBMS)。POSTGRES开创的许多概念在很久以后才出现在商业数据库中。PostgreSQL是最初伯克利代码的一个开放源码的继承者。它支持大部分SQL标准并且提供了许多其它现代特性:
复杂查询
外键
触发器
可更新的视图
事务完整性
多版本并发控制
另外,PostgreSQL可以用许多方法进行扩展,比如通过增加新的:
数据类型
函数
操作符
聚合函数
索引方法
过程语言
在个人看来,在开源数据库中PostgreSQL 是和ORACLE最相近的一个,和ORACLE兼容性较好,如果去IOE,该数据库是一个不错的选择
操作系统版本
[root@web103 ~]# more /etc/issue CentOS release 5.9 (Final) Kernel \r on an \m [root@web103 ~]# uname -a Linux web103 2.6.18-348.el5 #1 SMP Tue Jan 8 17:53:53 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
下载对应PostgreSQL对应rpm包
因为操作系统版本为CentOS 5.9的64位Linux,因此下载对应版本prm包,主要下载了server,client,contrib,libs四个包
[root@web103 ~]# mkdir pg [root@web103 ~]# cd pg [root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm --2015-06-16 20:44:52-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196 Connecting to yum.postgresql.org|174.143.35.196|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1807607 (1.7M) [application/x-redhat-package-manager] Saving to: `postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm' 100%[===================================================================================================================>] 1,807,607 73.6K/s in 30s 2015-06-16 20:45:24 (58.1 KB/s) - `postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [1807607/1807607] [root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm --2015-06-16 20:45:35-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196 Connecting to yum.postgresql.org|174.143.35.196|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 6175991 (5.9M) [application/x-redhat-package-manager] Saving to: `postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm' 100%[===================================================================================================================>] 6,175,991 58.5K/s in 2m 4s 2015-06-16 20:47:42 (48.6 KB/s) - `postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [6175991/6175991] [root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm --2015-06-16 20:47:51-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196 Connecting to yum.postgresql.org|174.143.35.196|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 664051 (648K) [application/x-redhat-package-manager] Saving to: `postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm' 100%[===================================================================================================================>] 664,051 28.1K/s in 53s 2015-06-16 20:48:46 (12.3 KB/s) - `postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [664051/664051] [root@web103 pg]# wget http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm --2015-06-16 20:51:10-- http://yum.postgresql.org/9.4/redhat/rhel-5-x86_64/postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm Resolving yum.postgresql.org... 174.143.35.196, 2001:4800:1501:1::196 Connecting to yum.postgresql.org|174.143.35.196|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 233206 (228K) [application/x-redhat-package-manager] Saving to: `postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm' 100%[===================================================================================================================>] 233,206 70.3K/s in 3.2s 2015-06-16 20:51:16 (70.3 KB/s) - `postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm' saved [233206/233206] [root@web103 pg]# ls postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm postgresql94-libs-9.4.4-1PGDG.rhel5.x86_64.rpm postgresql94-contrib-9.4.4-1PGDG.rhel5.x86_64.rpm postgresql94-server-9.4.4-1PGDG.rhel5.x86_64.rpm
安装PostgreSQL rpm包
[root@web103 pg]# rpm -ivh *.rpm warning: postgresql94-9.4.4-1PGDG.rhel5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 442df0f8 Preparing... ########################################### [100%] 1:postgresql94-libs ########################################### [ 25%] 2:postgresql94 ########################################### [ 50%] 3:postgresql94-contrib ########################################### [ 75%] 4:postgresql94-server ########################################### [100%]
创建PostgreSQL 默认库
[root@web103 pg]# service postgresql-9.4 initdb Initializing database: [ OK ] [root@web103 data]# pwd /var/lib/pgsql/9.4/data [root@web103 data]# ls -ltr total 120 -rw------- 1 postgres postgres 21265 Jun 16 20:52 postgresql.conf -rw------- 1 postgres postgres 88 Jun 16 20:52 postgresql.auto.conf drwx------ 3 postgres postgres 4096 Jun 16 20:52 pg_xlog -rw------- 1 postgres postgres 4 Jun 16 20:52 PG_VERSION drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_twophase drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_tblspc drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_subtrans drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_snapshots drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_serial drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_replslot drwx------ 4 postgres postgres 4096 Jun 16 20:52 pg_multixact drwx------ 4 postgres postgres 4096 Jun 16 20:52 pg_logical -rw------- 1 postgres postgres 1636 Jun 16 20:52 pg_ident.conf -rw------- 1 postgres postgres 4224 Jun 16 20:52 pg_hba.conf drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_dynshmem drwx------ 2 postgres postgres 4096 Jun 16 20:52 pg_clog drwx------ 5 postgres postgres 4096 Jun 16 20:52 base drwx------ 2 postgres postgres 4096 Jun 16 21:16 pg_log drwx------ 2 postgres postgres 4096 Jun 16 21:16 global -rw------- 1 postgres postgres 80 Jun 16 21:39 postmaster.pid -rw------- 1 postgres postgres 59 Jun 16 21:39 postmaster.opts drwx------ 2 postgres postgres 4096 Jun 16 21:39 pg_stat drwx------ 2 postgres postgres 4096 Jun 16 21:39 pg_notify drwx------ 2 postgres postgres 4096 Jun 16 22:00 pg_stat_tmp
另外还可以通过如下两种方式创建
initdb -D /var/lib/pgsql/9.4/data pg_ctl -D /var/lib/pgsql/9.4/data
设置PostgreSQL 开机自动启动
[root@web103 pg]# chkconfig postgresql-9.4 on [root@web103 pg]# chkconfig --list|grep post postgresql-9.4 0:off 1:off 2:on 3:on 4:on 5:on 6:off
查看默认创建PostgreSQL 用户
[root@web103 data]# more /etc/passwd|grep post postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
增加PATH环境变量
-bash-3.2$echo "PATH=$PATH:/usr/pgsql-9.4/bin;export PATH" >>~/.bash_profile
启动PostgreSQL 数据库
--方法1 -bash-3.2$ postgres -D /var/lib/pgsql/9.4/data ----或者 -bash-3.2$ postgres -D /var/lib/pgsql/9.4/data >~/pg.log 2>&1 & 方法2 pg_ctl start -l ~/pg.log -D /var/lib/pgsql/9.4/data
这里如果在环境变量中配置了PGDATA,那-D也可以不指定,-l为指定日志目录,建议使用封装的方法2启动pg
查看PostgreSQL进程信息
[root@web103 data]# ps -ef|grep post|grep -v grep postgres 4432 1 0 21:39 ? 00:00:00 /usr/pgsql-9.4/bin/postgres -D /var/lib/pgsql/9.4/data postgres 4433 4432 0 21:39 ? 00:00:00 postgres: logger process postgres 4435 4432 0 21:39 ? 00:00:00 postgres: checkpointer process postgres 4436 4432 0 21:39 ? 00:00:00 postgres: writer process postgres 4437 4432 0 21:39 ? 00:00:00 postgres: wal writer process postgres 4438 4432 0 21:39 ? 00:00:00 postgres: autovacuum launcher process postgres 4439 4432 0 21:39 ? 00:00:00 postgres: stats collector process
这里可以看到pg也和oracle有几分类似,有日志进程,checkpoint进程,有写进程等(具体以后分析)
停止PostgreSQL数据库
-bash-3.2$ pg_ctl stop -D /var/lib/pgsql/9.4/data waiting for server to shut down.... done server stopped -bash-3.2$ ps -ef|grep post|grep -v grep root 6036 499 0 22:07 pts/0 00:00:00 su - postgres postgres 6037 6036 0 22:07 pts/0 00:00:00 -bash postgres 6113 6037 0 22:08 pts/0 00:00:00 ps -ef
PostgreSQL默认监听端口
在后续章节中进一步讲解相关配置和访问
[root@web103 pgsql]# netstat -natp|grep postgres tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 4432/postgres