PostgreSQL技术内幕1:内容介绍+PG编译使用介绍

1.整体内容介绍

PG技术系列记录从PG下载编译,使用到PG各组件使用原理+源码分析,采用自底向上,从整体到局部的方式来进行详细分析(从PG系统概述到存储管理,再到索引,查询编译,事务,并发,安全,复制和分布式相关内容),中间也会穿插GP(Greenplum)部分原理的介绍。本篇为第一篇,也就是环境准备篇,以此环境为基础来进行后续的介绍。

2.下载编译流程

2.1 git 拉取并切换到稳定分支

git clone https://github.com/postgres/postgres.git
git checkout REL_11_STABLE

//或者拉取和切换分支一起执行
git clone -b REL_11_STABLE https://github.com/postgres/postgres.git

2.2 编译执行

到PG的目录下执行如下指令

//说明:--prefix指定安装目录;--enable-debug debug;--enable-cassert打开debug检查;CFLAGS一些编译选项
./configure --prefix=/home/pghome --enable-debug --enable-cassert CFLAGS="-ggdb -O0 -g3 -Wall -fno-omit-frame-pointer -fstack-protector-strong"
//编译安装
make -sj && make install

2.3 环境变量配置

环境变量 ~/.bashrc 可以先备份一个防止错误

export PATH="/home/pghome/bin:$PATH" #可执行文件查找路径
export LD_LIBRARY_PATH="/home/pghome/lib:$LD_LIBRARY_PATH" #动态库查找路径
export PGHOME="/home/pghome"
export PGDATA="/home/pgdata"
//立即生效
source ~/.bashrc

2.4 初始化数据库

initdb -D /home/pgdata

2.5 如果有需要可以编译PG扩展内容

cd contrib/pg_stat_statements
make -sj && make install

2.6 按照需要修改参数

vim /home/pgdata/postgresql.conf
//下面是常用参数,含义比较好理解
max_connections = 100
max_wal_senders = 10
max_replication_slots = 10
max_worker_processes = 10
shared_preload_libraries = 'pg_stat_statements'
listen_addresses = '*'
port = 6688

logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_error_verbosity = verbose
log_line_prefix = '%m [%p]'
log_timezone = 'PRC'
log_autovacuum_min_duration = 0

2.6 启动停止,连接测试

//启动、停止
pg_ctl -D /home/pgdata -l /home/pgdata/logfile1 start
pg_ctl -D /home/pgdata -l /home/pgdata/logfile1 stop

//连接测试
psql -p 6688 -d postgres

create table t1(a int,b text);
insert into t1 values(1,'aa');
select * from t1;

3. 总结

以上编译安装PG完成,常用命令可在安装目录的bin下查看,下附简单的多进程调试方式。

1.使用ps -ef 查看进程,其中带backend的是子进程
调试:

pstack 进程号 //可以查看堆栈

gdb -args pg_ctl -D /home/pgdata -l /home/pgdata/logfile1 start  帶參數

set follow-fork-mode child //调试子進程

设置调试模式:set detach-on-fork [on | off] off表示调试当前进程时另外进程阻塞
查看调试的进程       info inferiors
切换当前调试的进程  inferior id
使进程脱离GDB调试   detach inferiors id
查看线程信息:info threads  reverse-next 回退

更多详细内容可见微信公众号:程序员学习随笔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值