postgresql954和pldebuger调试安装.docx
- 文档编号:29191706
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:21
- 大小:27.48KB
postgresql954和pldebuger调试安装.docx
《postgresql954和pldebuger调试安装.docx》由会员分享,可在线阅读,更多相关《postgresql954和pldebuger调试安装.docx(21页珍藏版)》请在冰豆网上搜索。
postgresql954和pldebuger调试安装
序言
厌倦了办公室政治的谄媚妄讳,尔虞我诈的关系;想多些时间真正坐下,安心下来为他人留下点经验可以借鉴。
留下此篇文章,希望将来可以对初学者提供一些帮助。
开始安装POSTGRESQL的时候,也是从网上查一些别人提供的安装文档参照安装的,windows版本安装最简单,再此不想多言。
我仅仅就linux(centos6.6postgresql9.5.4以及调试程序pldebugger)的安装做些描述,如有纰漏也是本人能力有限敬请谅解。
同时也要感谢(
第一步:
安装前准备
安装数据库,首先要知道有些安装程序上的依赖,为此请认真查证是否本机已经安装的软件依赖包已经满足要求。
(下面是方法:
)
CentOS中查看是否安装了某个软件的命令:
rpm-qa|grep软件名(可非全名)
which命令可查看某个软件的安装路径。
使用yuminstall包名来安装软件包。
(注意这是非源码安装)
----------------------------------------下面关键------------------------------------------------------
1.GNUmake的版本3.80以上
[root@localhost~]#rpm-qa|grepmake
make-3.81-20.el6.x86_64
[root@localhost~]#whichgcc
/usr/bin/gcc
2.ISO/ANSI编译器,推荐最新版本的GCC
[root@localhost~]#rpm-qa|grepgcc
gcc-4.4.7-4.el6.x86_64
libgcc-4.4.7-4.el6.x86_64
gcc-c++-4.4.7-4.el6.x86_64
[root@localhost~]#gcc-v
gcc版本4.4.720120313(RedHat4.4.7-4)(GCC)
3.源码包的解压工具tar,除此之外还有gzip或bzip2
[root@localhost~]#rpm-qa|greptar
libtar-1.2.11-17.el6_4.1.x86_64
tar-1.23-11.el6.x86_64
[root@localhost~]#tar--version
tar(GNUtar)1.23
4.默认使用GNUReadline库
[root@localhost~]#rpm-qa|grepreadline
readline-6.0-4.el6.x86_64
5.默认使用zlib压缩库
[root@localhost~]#rpm-qa|grepzlib
zlib-1.2.3-29.el6.x86_64
6.可选软件包:
(洋人的东西,还得看洋文,请不懂洋文的同学绕过)
http:
//www.postgresql.org/docs/9.3/interactive/install-requirements.html
(1)为了编译PL/Perl服务器端编程语言,需要完整Perl的安装,包括libperl库和头文件。
(2)为了编译PL/Python服务器端语言,需要一个包含头文件和distuils模块的Python安装。
(3)为了编译PL/Tcl服务器端语言,需要Tcl的安装。
(4)为了使用NSL,即具有使用不同于英语的一种语言显示消息的能力,需要一种GettextAPI的实现。
(5)需要Kerberos,OpenSSL,OpenLDAP,and/orPAM,如果你想要使用这些服务支持认证或加密。
(6)为了编译PostgreSQL的文档,有一组独立的要求。
查看http:
//www.postgresql.org/docs/9.3/interactive/docguide-toolsets.html
第二步:
获取PostgreSQL源码、pldebugger程序源码
1.下载源码:
官网:
http:
//www.postgresql.org/ftp/source/,这里下载的是最新版postgresql9.5.4.
这个地址比较快(我下载的9.5.4)
2.解压:
你解压前,先找个文件夹,比如/usr/local/src,把压缩文件放在这,然后解压
tar-zxvfpostgresql-9.5.4.tar.gz
随后会生成一个新的文件夹/usr/local/src/postgresql-9.5.4。
cdpostgresql-9.5.4
(查看是否有contrib文件夹,记住这个文件夹)
3.下载pldebugger源程序代码,
cdcontib执行下面的命令,
gitclonegit:
//git.postgresql.org/git/pldebugger.git
将下载并创建pldebugger文件夹
(安装postgresql数据库前,请你一定要做好上面插件的下载)
加强理解几个概念:
(网上其他文,说的比较含糊不清)
源程序位置:
/usr/local/src/postgresql-9.5.4
第三方插件包放置位置:
/usr/local/src/postgresql-9.5.4/contrib(网上许多安装文档都说找源码,实际指的就是这个位置文件夹)
第三方插件简介:
(如果想深入研究,可跨过不看)
(contrib/:
已打包到PG源码中的第三方贡献的插件源码)
adminpack:
一些管理函数
auth_delay:
认证失败后延迟报异常,可以防止暴力破解
auto_explain:
将超过指定执行时间的SQL的执行计划输出到日志中
btree_gin:
gin索引方法的btree操作符扩展(在某些情况下“多列gin组合索引”比“多个btree单列索引”的bitmapanding更高效)
btree_gist:
gist索引方法的btree操作符扩展(在组合索引中的某些列类型仅支持gist索引访问方法,而另一些列的类型支持btree以及gist时btree_gist更为有效,同时btree_gist还新增了<>用于排他约束,<->用于近邻算法)
chkpass:
自动加密的字段类型(使用UNIX标准函数crypt()进行封装,所以仅支持前8位安全)'abcdefghijkl':
:
chkpass--'abcdefgh'
citext:
不区分大小写的数据类型
cube:
多维立方体类型,支持多维立方体对象的相同,相交,包含等运算
dblink:
PostgreSQL跨库操作插件
dict_int:
全文检索的一个字典模版,用于控制数字被拆分的最大长度,以控制数字在全文检索中的分词个数(maxlen=6:
12345678-->123456截断成6个,rejectlong=true则忽略这个分词)
dict_xsyn:
全文检索的一个字典模块,设置分词的同义词,支持同义词匹配
dummy_seclabel:
用于安全标签SQL的测试
earthdistance:
可以使用cube或point类型计算地球表面两点之间的距离
file_fdw:
文件外部表模块
fuzzystrmatch:
单字节字符串之间的相似性判断
hstore:
用于存储K-V数据类型,同时这个插件还提供了比较V类型相关的函数和操作符。
例如提供数组,json,hstore之间的转换,K-V的存在判断,删除K-V值
intagg:
int类型的数组聚合函数(内建的array_agg函数已包含这个功能)
intarray:
int类型的数组功能扩展库,提供了一些常用的函数和操作符(数组元素个数,元素排序,元素下标,取元素子集,相交,包含,增加元素,删除元素,合并等)
isn:
提供国际通用的产品标识码数据类型,例如ISBN,ISMN...
lo:
大对象的一个可选模块,lo类型以及自动unlink大对象的触发器,方便大对象在消亡后的自动unlink,防止大对象存储泄漏(类似内存泄漏)
ltree:
异构数据类型以及操作函数和操作符。
例如China.Zhejiang.Hang<@'China'
oid2name:
id转换成name的命令行工具,不属于extension。
或通过系统表查询得到.
pageinspect:
用于读取数据库PAGE裸信息的插件,可以读main,fsm,vmFORK的页数据,一般用于debug(使用时请参照对应数据库版本的头文件解读信息)
passwordcheck:
创建用户或者修改用户密码时,检查密码的安全性,如果太弱的话,将返回错误。
pg_archivecleanup:
清除归档文件的命令,不属于extension
pgbench:
数据库性能测试的命令,不属于extension
pg_buffercache:
输出当前的sharedbuffer的状态数据(细化到pagenumber)
pgcrypto:
PostgreSQL的服务端数据加密的扩展库
pg_freespacemap:
输出对象指定page或所有page的freespacemap信息
pgrowlocks:
(从行头信息中的informask获取行锁信息),注意输出的不是snapshot
pg_standby:
8.4以及以前的版本方便于创建warmstandby的命令行
pg_stat_statements:
跟踪数据库的SQL,收集SQL的统计信息
pgstattuple:
行级统计信息(deadtuples,livetuples,table_len,free_space,free_percent),索引的统计信息
pg_test_fsync:
测试磁盘的fsync速率。
适用于选择最快的wal_sync_method
pg_test_timing:
测试系统定时器的开销,开销越大,explainanalyze时间结果越不准,需要调整系统时钟源
pg_trgm:
将字符串拆分成3个一组的多个单元,用于测试两个字符串之间的近似度,比分词更加暴力。
pg_upgrade:
跨大版本的升级工具(例如9.0-->9.1)
pg_upgrade_support:
pg_upgrade用到的服务端函数集
pg_xlogdump:
从xlog中dump出一些易读的底层信息
postgres_fdw:
postgresq跨库的外部表插件
seg:
线段类型和浮点数的区间类型,以及相关的操作符,索引访问方法等
sepgsql:
基于SELinux安全策略的访问控制模块
spi:
一些服务端的触发器函数(例如跟踪记录的存活时间,被哪个用户修改了,记录的修改时间等)
sslinfo:
输出ssl认证的客户端的一些认证信息
start-scripts:
数据库启动脚本模版
tablefunc:
一般可用于行列变换,异构数据处理等
tcn:
提供异步消息输出的触发器
test_parser:
全文检索中的一个自定义parser的测试插件
tsearch2:
全文检索相关的插件,在全文检索未引入PG内核前的PG版本可以使用这个插件来实现全文检索功能,大于8.3以后就不需要这个了
unaccept:
全文检索相关的插件
uuid-ossp:
生成UUID的插件
vacuumlo:
大对象垃圾回收的命令
worker_spi:
9.3新增的服务端worker编程范例
xml2:
xml相关插件
(我上面省略了不是源代码目录介绍内容,如果想仔细研究请看原文)
第四步:
源码安装PostgreSQL-9.5.4
步骤如下:
1.配置(Configuration)
进入源码目录:
[root@localhostsrc]#cd/usr/local/src/postgresql-9.5.4
(执行配置程序,这个比较有讲究)
我执行的配置文件是下面这样:
(因为有些参数要依赖包担心不成功,因此选如下参数)
[root@localhostpostgresql-9.5.4]#./configure--prefix=/opt/pgsql9.5.4--with-pgport=5432--with-python--with-openssl--with-libxml--enable-thread-safety--with-wal-blocksize=16--with-blocksize=16
洋文默认配置如下:
./configure-with-openssl-enable-thread-safety
这种默认的配置将编译服务器和使用工具,以及所有客户端应用程序和接口,只需要一个C编译器。
所有文件默认将安装到/usr/local/pgsql中。
洋人的配置安装说明http:
//www.postgresql.org/docs/9.3/interactive/install-procedure.html
这里,网上的配置是可选参数设置如下:
而且有说明,比较感谢原作者
./configure--prefix=/opt/pgsql9.5.4--with-pgport=5432--with-perl--with-python--with-tcl--with-openssl--with-pam--without-ldap--with-libxml--with-libxslt--enable-thread-safety--with-wal-blocksize=16--with-blocksize=16--enable-dtrace--enable-debug
配置选项说明:
--prefix=/opt/pgsql9.5.4:
安装所有文件在/opt/pgsql9.5.4中(也就是安装目录)(取代默认时的/usr/local/pgsql)。
--with-pgport=5432:
为服务器和客户端设置默认端口号。
默认是5432。
--with-perl:
编译PL/Perl服务端语言。
--with-python:
编译PL/Python服务端语言。
--with-tcl:
编译PL/Tcl服务端语言。
--with-openssl:
编译支持SLL(加密)连接。
这需要安装OpenSSL包。
--with-pam:
编译支持PAM(PluggableAuthenticationModules,可插拔认证模块)
--without-ldap:
编译支持认证和连接参数检查
--with-libxml:
编译libxml(支持SQL/XML),支持这个选项需要Libxml2.6.23及最新版
--with-libxslt:
编译xml2模块,使用libxslt
--enable-thread-safety:
让客户端库是线程安全的
--with-wal-blocksize=16:
WAL:
预写式日志(Write-AheadLogging)
设置WAL的blocksize,以MB为单位。
这是在WAL日志中的每个独立文件的大小。
为了控制WAL日志传送的粒度去调整其大小,这可能是非常有用的。
默认为16MB。
这个值必须是2的1到64次方(MB)。
注意,改变这个值需要一个initdb。
--with-blocksize=16:
设置blocksize,以KB为单位。
这是表的存储和IO单元。
默认为8K,适用于大多数情况;但是在特殊场合中,其他的值可能是非常有用的。
这个值必须是2的1到32次方(KB)。
注意,改变这个值需要一个initdb。
--enable-dtrace:
编译PostgreSQL支持动态跟踪工具DTrace
--enable-debug:
把所有程序和库以带有调试符号的方式编译
--enable-nls[=LANGUAGES]:
打开本地语言支持(NLS),即以非英文显示程序的信息的能力。
LANGUAGES是一个空格分隔的语言代码列表,标识你想支持的语言。
比如--enable-nls='defr'。
(你提供的列表和实际支持的列表之间的交集将会自动计算出来。
)如果你没有声明一个列表,那么就安装所有可用的翻译。
(还可以在--enable-debug前,添加两个选项:
--enable-depend--enable-cassert)
配置过程可能会遇到依赖的动态库缺失,安装这些缺失的库即可。
记录下我这里的缺失lib的安装:
dtrace工具的安装:
PostgreSQL支持动态跟踪,可以通过dtrace或者systemtap工具统计相关探针的信息。
在CentOS中安装systemtap:
在安装systemtap前,要保证kernel对应的kernel-devel包的版本保持一致:
检查:
[root@localhost~]#rpm-qa|grepkernel
[root@localhost~]#uname-a
不一致的话,则安装对应的kernel-devel版本或者升级kernel:
[root@localhost~]#yuminstallkernel-devel
或:
[root@localhost~]#yumupdatekernel
重启服务器。
安装systemtap
[root@localhost~]#yuminstallsystemtapsystemtap-sdt-devel
其中:
安装systemtap时,安装了systemtap-devel、systemtap-client和systemtap-runtime这3个包。
systemtap-sdt-devel是编译PostgreSQL时,选项--enable-dtrace需要的包。
使用命令:
[root@localhost~]#rpm-qf/usr/bin/stap
systemtap-devel-2.3-4.el6_5.x86_64
systemtap-client-2.3-4.el6_5.x86_64
rpm-qf:
查询文件隶属的软件包
检查stap是否正常
[root@localhost~]#stap
Ascriptmustbespecified.
Try'--help'formoreinformation.
此时stap是正常的。
接着测试下:
[root@localhost~]#stap-ve'probebegin{log("helloworld")exit()}'
Pass1:
parseduserscriptand96libraryscript(s)using198456virt/26648res/3080shr/24072datakb,in260usr/40sys/296realms.
Pass2:
analyzedscript:
1probe(s),2function(s),0embed(s),0global(s)using198852virt/27396res/3320shr/24468datakb,in10usr/0sys/10realms.
Pass3:
usingcached/root/.systemtap/cache/ca/stap_ca2aff10c84d1cf00083e0eb3e5d7082_1033.c
Pass4:
usingcached/root/.systemtap/cache/ca/stap_ca2aff10c84d1cf00083e0eb3e5d7082_1033.ko
Pass5:
startingrun.
helloworld
Pass5:
runcompletedin40usr/80sys/404realms.
stap调试好后,就可以用来跟踪postgresql了。
PostgreSQL编译时必须开启dtrace支持,即--enable-dtrace。
开启dtrace后,数据库将启用代码中的探针或跟踪点。
回到PG的继续重新执行configure,遇到问题以及解决方法:
(1)问题1:
no
configure:
error:
couldnotdetermineflagsforlinkingembeddedPerl.
ThisprobablymeansthatExtUtils:
:
EmbedorExtUtils:
:
MakeMakerisnot
installed.
解决方法:
yuminstallperl-ExtUtils-Embed
(2)问题2:
configure:
error:
readlinelibrarynotfound
Ifyouhavereadlinealreadyinstalled,seeconfig.logfordetailsonthe
failure.Itispossiblethecompilerisn'tlookingintheproperdirectory.
Use--without-readlinetodisablereadlinesupport.
解决方法:
yuminstallreadlinereadline-devel
(3)问题3:
checkingforinflatein-lz...no
configure:
error:
zliblibrarynotfound
Ifyouhavezlibalreadyinstalled,seeconfig.logfordetailsonthe
failure.Itispossiblethecompilerisn'tlookingintheproperdirectory.
Use--without-zlibtodisablezlibsupport.
解决方法:
yuminstallzlibzlib-devel
(4)问题4:
checkingforCRYPTO_new_ex_datain-lcrypto...no
configure:
error:
library'crypto'isrequiredforOpenSSL
解决方法:
yuminstallopensslopenssl-devel
(5)问题5:
checkingforpam_startin-lpam...no
configure:
error:
library'pam'isrequiredforPAM
解决方法:
yuminstallpampam-devel
(6)问题6:
checkingforxmlSaveToBufferin-lxml2...no
configure:
error:
library'xml2'(version>=2.6.23)isrequiredforXMLsupport
解决方法:
yuminstalllibxml2libxml2-devel
(7)问题7:
checkingforxsltCleanupGlobals
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- postgresql954 pldebuger 调试 安装