Centos源码安装postgres debug版本

下述步骤除1使用root用户操作外,其余均使用postgres用户:
1. 编译安装环境准备
docker centos7.5
添加postgres用户:adduser postgres
给postgres用户设置密码:passwd postgres
给postgres用户赋予权限:
运行visudo命令,找到root ALL=(ALL) ALL,在下面添加一行 postgres ALL=(ALL) ALL,保存
 
2. 编译前准备好一些必备工具,gcc,gdb,make,zlib-devel,readline-devel等等,之后去编译,config过程中缺什么工具再sudo yum install安装即可。
 
3. 获取源代码,取自己需要的版本,我拿的是11.2,源码地址https://www.postgresql.org/ftp/source/
 
4. 解压源码,编译
4.1 将/opt目录权限赋予postgres用户,因为postgres会安装到该目录
chown -R postgres:postgres /opt
4.2 解压源码编译
tar zxvf postgresql-11.2.tar.gz,cd postgresql-11.2.tar.gz
./configure --prefix=/opt/psql --enable-cassert --enable-debug CFLAGS="-ggdb -Og -Wall -fno-strict-aliasing"
(该步骤可以增加你需要的插件功能,具体可以configure --help查看),config完成后如下图:
 
make,make完成后如下图:
 
make install,完成后如下图:
 
5. 上面步骤完成后,/opt/psql下面会安装好pg
 
6. 配置环境变量
在当前用户的.bashrc中添加
export PGHOME=/opt/psql      (pg安装目录)
export PGDATA=~/pgdata        (数据存放的目录,可以根据自己需求修改)
export PATH=PATH:HOME/bin:PGHOME/bin     (PATH,HOME,PGHOME前面均加上$,此处由于加上后网页显示有问题,所以去掉了)
source .bashrc
 
7. 使用数据库
7.1 初始化,initdb,(该命令可以加参数,具体可通过initdb --help查看文档)
 
7.2 启动, 首先touch pglog创建一个log文件,pg_ctl -D /home/postgres/pgdata -l pglog start(logfile为log文件,可修改)
 
7.3 停止,pg_ctl -D /home/postgres/pgdata -l pglog stop
 
8. 查看启动情况
ps -ef | grep postgres 可以看到postgres实例
 
 
psql -d postgres连接到服务端,之后会fork出一个新的[local] idle的postgres实例,这个是我们需要的,也可以使用select pg_backend_pid(); 来获取进程号。
 
 
9. gdb调试
sudo gdb -p 12410,根据自己需要在相应的代码出下断点,之后psql执行sql,就会断住debug调试了。
 
 
10. 如果使用docker环境可能会有一些gdb的坑,比如docker run镜像的时候必须加选项docker run --cap-add=SYS_PTRACE -d -i -t 89f8a97db0b5 /bin/bash,使用gdb的时候加sudo选项等等。
 
如有错误,请指正,谢谢
 
 

转载于:https://www.cnblogs.com/LyndonYoung/articles/10839434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值