一个系统运维的打怪升级之路

PostgreSQL数据库编译安装

2019-04-04
164次查阅
2019/5/6

相关网站

一、安装依赖

yum update -y
yum install -y readline.x86_64 readline-devel.x86_64 zlib.x86_64 zlib-devel.x86_64 python.x86_64 tclx.x86_64 tclx-devel.x86_64 openssl.x86_64  openssl-devel.x86_64 gcc-c++

二、configure配置参数

选项 说明 默认 是否安装
--prefix=PREFIX 安装路径 /usr/local/pgsql 建议
--exec-prefix=EXEC-PREFIX pgsql系统架构文件目录,而不是PREFIX中设置的地方。 这样做可以比较方便地在不同主机之间共享体系相关的文件。 和prefix一致 不建议
--bindir=DIRECTORY 为可执行程序指定目录 exec-prefix/bin 不建议
--sysconfdir=DIRECTORY 用于各种各样配置文件的目录 prefix/etc 一般情下不建议
--libdir=DIRECTORY 设置安装库和动态装载模块的目录 exec-prefix/lib 不建议
--includedir=DIRECTORY C 和 C++ 头文件的目录 preifx/include 不建议
--datarootdir=DIRECTORY 设置下面一些只读文件的根目录。(这些只读文件和数据库本身没有关系,一般指帮忙文档之类的) prefix/share 不建议
--datadir=DIRECTORY 和数据库不相关的只读文件目录 datarootdir 不建议
--localedir=DIRECTORY 设置安装区域数据的目录,特别是消息翻译目录文件。 datarootdir/locale 不建议
--mandir=DIRECTORY PostgreSQL自带的手册页将安装到这个目录,它们被安装在相应的manx子目录里。 默认是DATAROOTDIR/man。 datarootdir/man 不建议
--docdir=DIRECTORY 设置安装文档文件的根目录,”man”页不包含在内。这只为后续选项设置默认值 datarootdir/doc/postgresql 不建议
--htmldir=DIRECTORY PostgreSQL的HTML格式的文档将被安装在这个目录中 datarootdir 不建议
--with-extra-version=STRING 把STRING追加到 PostgreSQL 版本号。   不建议
--with-includes=DIRECTORIES DIRECTORIES是一个冒号分隔的目录列表,这些目录将被加入编译器的头文件搜索列表中。可以理解为pgsql优先搜索这些目录下的依赖包,如果没有再按标准目录查找。
例如:
--with-includes=/opt/gnu/include:/usr/sup/include.
  一般情况下不建议
--with-libraries=DIRECTORIES 和--with-includes类似。   一般情况下不建议
--enable-nls[=LANGUAGES] 打开本地语言支持(NLS),也就是以非英文显示程序消息的能力。LANGUAGES是一个空格分隔的语言代码列表, 表示你想支持的语言。例如--enable-nls=’de fr’ (你提供的列表和实际支持的列表之间的交集将会自动计算出来),该选项需要 Gettext API。
例如:--enable-nls=’de fr’,多个语言使用空格间隔。
  不建议
--with-pgport=NUMBER 端口 5432 一般情况下不建议
--with-perl 服务器端语言Perl,涉及到服务器端编程   不建议
--with-python 服务器端语言python,涉及到服务器端编程   不建议
--with-tcl 服务器端语言tcl,涉及到服务器端编程   不建议
--with-tclconfig=DIRECTORY 服务器端语言tcl的配置目录。配置文件为tclConfig.sh,涉及到服务器端编程   不建议
--with-gssapi 编译 GSSAPI 认证支持。在很多系统上,GSSAPI(通常是 Kerberos 安装的一部分)系统不会被安装在默认搜索位置(例如/usr/include、/usr/lib),因此你必须使用选项--with-includes和--with-libraries来配合该选项。configure将会检查所需的头文件和库以确保你的 GSSAPI 安装足以让配置继续下去。   不建议
--with-krb-srvnam=NAME     不建议
--with-icu 例如:--with-icu ICU_CFLAGS=’-I/some/where/include’ ICU_LIBS=’-L/some/
where/lib -licui18n -licuuc -licudata’   不建议
--with-openssl 安装 openssl   建议
--with-pam 编译PAM(可插拔认证模块)支持。   不建议
--with-bsd-auth 编译 BSD 认证支持(BSD 认证框架目前只在 OpenBSD 上可用)   不建议
--with-ldap 为认证和连接参数查找编译LDAP支持。在 Unix 上,这需要安装OpenLDAP包。在 Windows 上将使用默认的WinLDAP库。configure将会检查所需的头文件和库以确保你的 OpenLDAP安装足以让配置继续下去。   不建议
--with-systemd 编译对systemd 服务通知的支持。如果服务器是在systemd 机制下被启动,这可以提高集成度,否则不会有影响 。要使用这个选项,必须安装libsystemd 以及相关的头文件。   不建议
--without-readline 避免使用Readline库(以及libedit)。这个选项禁用了psql中的命令行编辑和历史, 因此我们不建议这么做。 默认支持 不建议
--with-libedit-preferred 使用libedit编辑命令行(一般指的BSD) 默认使用readline 不建议
--with-bonjour macOS推荐安装   不建议
--with-uuid=LIBRARY LIBRARY可选[“bsd”,”e2fs”,”ossp”]   不建议
--with-libxml     不建议
--with-libxslt     不建议
--disable-float4-byval 禁用float4类型,该选项消耗性能 启用 不建议
--disable-float8-byval 禁用float8类型,该选项消耗性能 启用 不建议
--with-segsize=SEGSIZE 超大数据表文件,会切分成若干个大小不超过SEGSIZE的小文件。该值的设置参考系统大文件的最大值。单位G。2的N次幂
Tips : 编译时不带单位
1G 建议
--with-blocksize=BLOCKSIZE 设置块大小,单位K。2的N次幂,1-32K之间
Tips : 编译时不带单位
8K 建议
--with-wal-segsize=SEGSIZE 指定WAL日志文件的大小,单位M。2的N次幂。设置区间 1 - 1024M
Tips : 编译时不带单位
  建议
--with-wal-blocksize=BLOCKSIZE 指定WAL日志的块大小。单位K。2的N次幂。设置区间 1 - 64K
Tips : 编译时不带单位
  建议
--disable-spinlocks 即便PostgreSQL对于该平台没有 CPU 自旋锁支持,也允许编译成功。自旋锁支持的缺乏会导致较差的性能,因此这个选项只有当编译终端或者通知你该平台缺乏自旋锁支持时才应被使用。 开启 不建议
--disable-strong-random 如果操作系统不支持 strong random numbers ,则启用该选项。 开启 不建议
--disable-thread-safety 禁用客户端库的线程安全性。这会阻止libpq和ECPG程序中的并发线程安全地控制它们私有的连接句柄。 开启 不建议
--with-system-tzdata=DIRECTORY PostgreSQL包含它自己的时区数据库,它被用于日期和时间操作。这个时区数据库实际上是和 IANA 时区数据库相兼容的,后者在很多操作系统如 FreeBSD、Linux和Solaris上都有提供,因此再次安装它可能是冗余的。当这个选项被使用时,将不会使用DIRECTORY中系统提供的时区数据库,而是使用包括在 PostgreSQL 源码发布中的时区数据库。DIRECTORY必须被指定为一个绝对路径。/usr/share/zoneinfo在某些操作系统上是一个很有可能的路径。注意安装例程将不会检测不匹配或错误的时区数据。如果你使用这个选项,建议你运行回归测试来验证你指定的时区数据能正常地工作在PostgreSQL中。这个选项主要针对那些很了解他们的目标操作系统的二进制包发布者。使用这个选项主要优点是不管何时当众多本地夏令时规则之一改变时, PostgreSQL 包不需要被升级。另一个优点是如果时区数据库文件在安装时不需要被编译, PostgreSQL 可以被更直接地交叉编译。   不建议
--without-zlib 避免使用Zlib库。这样就禁用了pg_dump和 pg_restore中对压缩归档的支持。这个选项只适用于那些没有这个库的少见的系统。 开启 不建议
--enable-debug 把所有程序和库以带有调试符号的方式编译。这意味着你可以通过一个调试器运行程序来分析问题。 这样做显著增大了最后安装的可执行文件的大小,并且在非 GCC 的编译器上,这么做通常还要关闭编译器优化, 这些都导致速度的下降。但是,如果有这些符号的话,就可以非常有效地帮助定位可能发生问题的位置。目前,我们只是在你使用 GCC 的情况下才建议在生产安装中使用这个选项。但是如果你正在进行开发工作,或者正在使用 beta 版本,那么你就应该总是打开它。 关闭 不建议
--enable-coverage 开发pgsql使用 关闭 不建议
--enable-profiling 开发pgsql使用 关闭 不建议
--enable-cassert 开发pgsql使用 关闭 不建议
--enable-depend 开发pgsql使用 关闭 不建议
--enable-dtrace   关闭 不建议
--enable-tap-tests   关闭 不建议

三、安装

下载:
wget https://ftp.postgresql.org/pub/source/v10.7/postgresql-10.7.tar.gz
tar zxvf postgresql-10.7.tar.gz 
cd postgresql-10.7/
编译安装:
./configure --prefix=/usr/local/pgsql --with-openssl --with-segsize=4 --with-blocksize=16 --with-wal-segsize=512 --with-wal-blocksize=32
make
make install
创建用户组:
groupadd postgres && useradd -g postgres postgres
mkdir -p /data/pgsql/{data,log}
chown -R postgres:postgres /data/pgsql
配置环境变量:
vim /etc/profile
export PGDATA=/data/pgsql/data
export PGHOME=/usr/local/pgsql
export PATH=$PGHOME/bin:$PATH
source /etc/profile

四、数据库操作

初始化数据库

initdb

切换用户

su - postgres

启动

pg_ctl -D /data/pgsql/data -l /data/pgsql/log/logfile start

停止

pg_ctl stop -D /data/pgsql/data

重启

pg_ctl restart -D /data/pgsql/data

评论

想说点什么?