简介

PostgreSQL官网

PostgreSQL 官网号称:它是最世界最先进的开源数据库(顺便说一下,MySQL官网说它自己是最流行的开源数据库)。我觉得这一句话,也已经非常足够概括 PostgreSQL 了(MySQL 官网的那句话,也概括了它自己的特点,一个是最先进,一个是最流行)。也有号称是 Oracle 的开源版,因为PostgreSQL被经常拿来与Oracle这个重量级的商业数据库比较。的确,PostgreSQL 与 Oracle 兼容性非常强,Oracle 的 DBA 可以非常快地上手 PostgreSQL。在 PostgreSQL 技术群里的大牛大多都是从 Oracle 转到 PostgreSQL,使我印象非常深刻就是 @德哥,绝对是PostgreSQL的大神级别。我也是跟着德哥的视频一边看,一边学习的。

安装(以 Ubuntu 下源码安装 PostgreSQL 9.3.5 为例)

下载

PostgreSQL 源码下载地址

安装与使用

#安装必要的编译环境
sudo apt-get install build-essential libreadline-dev

#解压
tar -xvjf postgresql-9.3.5.tar.bz2

#创建一个目录,将PostgreSQL安装到这个目录
sudo mkdir /usr/local/pg

#配置
cd postgresql-9.3.5
./configure --prefix=/usr/local/pg

#开始编译

make -j
-j:开启多核编译
如果有:All of PostgreSQL successfully made. Ready to install. 表示编译成功

#安装

sudo make install
如果出现:PostgreSQL installation complete. 表示安装成功

#添加 PostgreSQL 用户
sudo useradd -s /bin/bash -d /home/postgres postgres

#创建 PostgreSQL 的 data 数据目录
sudo mkdir /usr/local/pg/data -p

#修改拥有者身份
sudo chown postgres:postgres /usr/local/pg/ -R

#初始化数据库
su - postgres
/usr/local/pg/bin/initdb -D /usr/local/pg/data

#启动数据库
/usr/local/pg/bin/postgres -D /usr/local/pg/data >logfile 2>&1 &
或者
/usr/local/pg/bin/pg_ctl -D /usr/local/pg/data -l logfile start

#创建数据库
/usr/local/pg/bin/createdb test

#连接数据库
/usr/local/pg/bin/psql test

配置环境变量

为了避免每次使用绝对路径以及一些参数问题,可以使用一些环境变量来代替,PostgreSQL 在没有指定参数时,就会读取这些环境变量的值


vi /home/postgres/.bash_profile

#这个是默认的PostgreSQL端口
export PGPORT=5432

#这个是PostgreSQL数据目录
export PGDATA=/usr/local/pg/data

#所使用的语言
export LANG=en_US.utf8

#PostgreSQL 安装目录
export PGHOME=/usr/local/pg

#PostgreSQL 连接库文件
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`

#将PostgreSQL的命令行工具添加到 PATH 环境变量 ,这样子就不用每次使用绝对路径了
export PATH=$PGHOME/bin:$PATH

#PostgreSQL的 man 手册
export MANPATH=$PGHOME/share/man:$MANPATH

#PostgreSQL的默认用户
export PGUSER=postgres

#这个是PostgreSQL默认主机地址
export PGHOST=127.0.0.1

#连接数据库时默认的数据库名
export PGDATABASE=postgre

PostgreSQL所有环境变量

PostgreSQL 的 bin 目录常用工具说明


#clusterdb

     — 对一个PostgreSQL数据库进行建簇

#createdb

    — 创建一个新的 PostgreSQL 数据库

#createlang

    — 定义一种新的 PostgreSQL 过程语言

#createuser

     — 定义一个新的 PostgreSQL 用户帐户

#dropdb

     — 删除一个现有 PostgreSQL 数据库

#droplang

    — 删除一种 PostgreSQL 过程语言

#dropuser

    — 删除一个 PostgreSQL 用户帐户

#ecpg

    — 嵌入的 SQL C 预处理器

#pg_basebackup

    -- 做一个PostgreSQL集群的基础备份

#pg_config

    — 检索已安装版本的 PostgreSQL 的信息

#pg_dump

    — 将一个PostgreSQL数据库抽出到一个脚本文件或者其它归档文件中

#pg_dumpall

    — 抽出一个 PostgreSQL 数据库集群到脚本文件中

#pg_restore

    — 从一个由 pg_dump 创建的备份文件中恢复 PostgreSQL 数据库。

#psql

    — PostgreSQL 交互终端

#reindexdb

    -- 重新建立一个数据库索引

#vacuumdb

    — 收集垃圾并且分析一个PostgreSQL 数据库

#pg_receivexlog

    从另一台运行PG的数据库里接收 wal 日志

#pg_resetxlog

    重置一个 PostgreSQL 数据库集群的预写日志以及其它控制内容

PostgreSQL 的 data 目录说明