IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在linux上安装PostgreSQL 9.4并启动和关闭数据库

    惜分飞发表于 2015-06-16 14:32:14
    love 0

    联系:手机(13429648788) QQ(107644445)

    链接:http://www.xifenfei.com/5941.html

    标题:在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
    
    • 创建DBFS
    • ALERT: Disable Transparent HugePages on SLES11, RHEL6, OEL6 and UEK2 Kernels
    • linux常用命令
    • 使用PXE刷XD
    • ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log’
    • mysql-cluster 7.x安装(linux)
    • OLR相关维护
    • Swingbench简单使用


沪ICP备19023445号-2号
友情链接