PostgreSQL基础学习(一)

简介

PostgreSQL官网

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

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

下载

PostgreSQL 源码下载地址

安装与使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#安装必要的编译环境
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 在没有指定参数时,就会读取这些环境变量的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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 目录常用工具说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#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 目录说明