下载并提取源码
- 使用wget命令,下载源码
wget http://ftp.postgresql.org/pub/source/v9.5.10/postgresql-9.5.10.tar.gz
- 使用tar命令,提取源码
tar -xvf postgresql-9.5.10.tar.gz
- 检查源码内容
cd postgresql-9.5.10
find ./ -maxdepth 1 -type d
编译源码的各种依赖
- 编译器,借助
gmake -v
和gcc -v
查看编译器是否满足需求(需要3.8或者更高版本的GUN Make)
- .configure文件为一个shell脚本,会运行各种测试来确定系统相关的各个变量.
- –prefix 选项可用来指定安装文件目录
./configure --prefix=/opt/pg/9.5
建立可执行文件
- 编译所有源文件,并生成可执行文件
gmake world
初始化集群
- 添加一个OS用户,该用户将用于启动/停止/重启数据库
sudo adduser postgres
- 创建新集群存储目录,标准的存储路径可以为
/usr/local/pgsql/data
mkdir -p /pgdata/9.5
chown postgres /pgdata/9.5
切换用户到postgres
- 使用创建的标准用户postgres 初始化集群
- 添加环境变量,postgres用户下的.bashrc文件中添加如下内容:
PATH=$PATH:/opt/pg/bin
export PATH
- 执行如下命令做集群初始化
initdb --pgdata=/pgdata/9.5
部分文件目录简释
- src : 该目录包含大部分核心代码,如:后台进程、优化器、存储、客户端工具及实现复制功能的相关代码等
- doc : 该目录包含在DocBook中编写的文档的源代码
DocBook是标准通用的标记语言(SGML)的一个应用
- contrib : 该目录包含许多扩展程序, 如:当我们想要从表对服务器文件内容进行访问时,可以使用file_fdw扩展
- config : 该目录包含一些宏定义,可以帮助你配置和编译软件包
- base : 数据库用户创建的各个数据库
- global : 集群范围的各个表单
- pg_clog : 事务提交状态数据
- pg_multixact : 多事务状态数据(等待锁定的并发事务)
- pg_notify : LISTEN/NOTIFY状态数据
- pg_serial : 已提交的序列化事务的有关信息
- pg_snapshots : 导出的快照
- pg_stat_tmp : 统计子系统的临时文件
- pg_subtrans : 子事务状态数据
- pg_tblspc : 表空间的符号链接
- pg_twophase : 预备事务的状态文件
- pg_xlog : 预写日表(Write Ahead Log WAL)文件