PostgreSQL 14.3 源码安装调试

摘要:介绍PostgreSQL 14.3 源码安装,postgresql使用和vscode源码调试。

1. 环境准备

1.1 系统参数修改

systemctl status firewalld.service 	#查看防火状态
systemctl stop firewalld.service 	#暂时关闭防火墙
systemctl disable firewalld.service #永久关闭防火墙setenforce 0 	#临时关闭selinux防火墙, setenforce是Linux的selinux防火墙配置命令
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 	#禁用SELinuxcat > /etc/sysctl.conf <<"EOF"
vm.swappiness=10 			#访问交换内存比直接访问物理内存要慢得多, swappiness参数的较低值很可能会提高整体系统性能。
vm.zone_reclaim_mode=0		#关闭zone_reclaim模式,可以从其他zone或NUMA节点回收内存
fs.aio-max-nr = 1048576		#系统中所允许的异步IO请求最大数目
fs.file-max = 6815744		#系统中所允许的文件句柄最大数目
net.ipv4.ip_local_port_range = 9000 65500	#网络连接可用作其源(本地)端口的最小和最大端口的限制
net.core.rmem_default = 262144				#套接字接收缓冲区大小的缺省值
net.core.rmem_max = 4194304					#套接字接收缓冲区大小的最大值
net.core.wmem_default = 262144				#套接字发送缓冲区大小的缺省值
net.core.wmem_max = 1048586					#套接字发送缓冲区大小的最大值
kernel.shmmax = 1288490188					#单个共享内存段的最大值
kernel.shmall = 314572						#可用共享内存的总量,单位是页,一般此值与kernel.shmmax相等
kernel.shmmni = 4096						#单个共享内存段的最小值
kernel.sem = 50100 64128000 50100 1280		#用于控制内核信号量
EOFsysctl -pcat >> /etc/security/limits.conf <<"EOF" 
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
EOFecho "* - nproc unlimited" > /etc/security/limits.d/90-nproc.conf
echo "session required pam_limits.so" >> /etc/pam.d/login# 关闭THP
root用户下
在vi /etc/rc.local最后添加如下代码
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fichmod +x /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defragcat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

2. 源码安装

2.1 下载源码包

下载源码包 wget https://ftp.postgresql.org/pub/source/v9.32/postgresql-9.2.tar.gz --no-check-certificate

2.2 安装依赖包

yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel  \ python36 tcl openssl ncurses-devel openldap pam flex
  • readline (命令行编辑支持库)
  • zlib (数据压缩支持库)
  • flex (词法分析库)
  • bison (语法分析库)

2.3 创建用户

groupadd postgres
useradd postgres
echo "postgres" | passwd --stdin postgres
chown postgres.postgres /home/postgres/.bash_profile

2.4 创建目录

## 创建目录
mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg14,soft}
chown -R postgres:postgres /postgresql
chmod -R 775 /postgresql

​ pgdata:数据目录

​ archive:归档目录

​ backup:WAL目录

​ pg14:安装文件目录

​ soft:源文件目录

2.5 编译安装

-- 编译
su - postgres
cd /postgresql/soft
tar zxvf postgresql-14.3.tar.gz
cd postgresql-14.3
./configure --prefix=/postgresql/pg14
#或增加调试
#./configure --prefix=/postgresql/pg14 --enable-depend --enable-debug --enable-cassert CFLAGS=-O0make -j 64 && make install如果希望编译所有能编译的东西,包括文档(HTML和手册页)以及附加模块(contrib),这样键入:
make world -j 16 && make install-world 
sudo /sbin/ldconfig /postgresql/pg14/lib

2.6 配置环境变量

-- 配置环境变量
cat >>  $HOME/.bash_profile <<"EOF"
export PGPORT=5432
export PGDATA=/postgresql/pgdata
export PGHOME=/postgresql/pg14
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
EOF
source  $HOME/.bash_profile

2.7 初始化数据库

-- 初始化
/postgresql/pg14/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres

2.8 修改参数

-- 修改参数
cat >> /postgresql/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
unix_socket_directories='/postgresql/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF

2.9 启动数据库

-- 启动
pg_ctl start
pg_ctl status
pg_ctl stop
pg_ctl stop -m fast

3. 连接数据库

su - postgres
psql -p 5432 -h 127.0.0.1;// 更改数据库密码
alter user postgres with password 'postgres';

4. 安装插件

-- 安装插件
create extension pageinspect;
create extension pg_stat_statements;select * from pg_extension;
select * from pg_available_extensions order by name;

​ 安装PG数据库时,会建立一个与初始化数据库时的操作系统用户名同名的数据库用户,同时,这个用户是数据库的超级用户,在这OS用户下登录数据库使用的是操作系统认证,所以不需要用户名和密码。也可以通过修改pg_hba.conf文件要求输入密码。

cat   > /postgresql/pgdata/pg_hba.conf << EOF# TYPE  DATABASE    USER    ADDRESS       METHOD
host      all       all    0.0.0.0/0        md5
EOF

4. 错误处理

4.1 socket链接错误

[postgres@iZuf6ddpzz3ipktm5kj01cZ pgdata]$ psql                                                           
psql: error: connection to server on socket "/postgresql/pgdata/.s.PGSQL.5433" failed: FATAL:  no pg_hba.c
onf entry for host "[local]", user "postgres", database "postgres", no encryption

指定postgresql的ip地址和端口号

psql -p 5433 -h 47.103.xxx.xxx;

4.2 连接postgres服务端忘记密码

[postgres@iZuf6ddpzz3ipktm5kj01cZ ~]$ psql -p 5433 -h 47.103.136.252;
Password for user postgres: 
psql: error: connection to server at "47.103.xxx.xxx", port 5433 failed: FATAL:  password authentication failed for user "postgres"

​ 修改/postgresql/pgdata/pg_hba.conf的METHOD字段为trust

# TYPE  DATABASE    USER    ADDRESS       METHOD
host      all       all    0.0.0.0/0      trust

​ 重新设置密码

postgres=# \password
Enter new password: 
Enter it again: 

重启服务器

pg_ctl reload

5. vscode源码调试

​ 在launch.json中添加新的配置,一共有三个例子,一个postgres --help,一个initdb,一个postgres后端调试。

{"version": "0.2.0","configurations": [{"name": "postgres --help","type": "cppdbg","request": "launch","program": "/postgresql/pg14/bin/postgres","args": ["--help"],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerArgs": "--command=/home/postgres/cmd.gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]},{"name": "initdb","type": "cppdbg","request": "launch","program": "/postgresql/pg14/bin/initdb","args": ["-D","<datadir>"],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerArgs": "--command=/home/postgres/cmd.gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]},{"name": "postgres backend","type": "cppdbg","request": "attach","program": "/postgresql/pg14/bin/postgres","processId": "${command:pickProcess}","stopAtEntry": false,"MIMode": "gdb","miDebuggerArgs": "--command=/home/postgres/cmd.gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

​ 创建/home/postgres/cmd.gdb文件,写入文件内容

set print element 0
set print object on
set prin vtbl on
set print pretty on
hand SIGUSR1 SIGUSR2 SIG36 SIGSTOP noprint nostop

​ 在exec_simple_query函数打断点,然后在侧边栏Run and Debug中选择postgres backend,点击调试按钮或者按F5后,输入postgres,选择postgres db xxxx idle进程。

6. 参考

https://cloud.tencent.com/developer/article/2013907

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/139647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫怎么伪装才更安全

随着网络技术的不断发展&#xff0c;爬虫技术也越来越成熟&#xff0c;爬虫伪装技术也随之得到了广泛应用。在爬虫伪装技术中&#xff0c;如何伪装成正常的浏览器行为&#xff0c;让目标网站无法辨别出爬虫的存在&#xff0c;是爬虫伪装技术的核心。下面&#xff0c;我将从以下…

mysql8安装和驱动jar包下载

方式一&#xff1a;基于docker安装 下拉镜像 docker pull mysql:8.0.21 启动镜像 docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORDhadoop -d mysql:8.0.21 启动成功后&#xff0c;进入容器内部拷贝配置文件&#xff0c;到宿主主机 docker cp mysql:/etc/mysql…

人工智能基础——图像认知与OpenCV

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

pandas笔记:读写excel

1 读excel read_excel函数能够读取的格式包含&#xff1a;xls, xlsx, xlsm, xlsb, odf, ods 和 odt 文件扩展名。 支持读取单一sheet或几个sheet。 1.0 使用的数据 1.1 主要使用方法 pandas.read_excel(io, sheet_name0, header0, namesNone, index_colNone, usecolsNon…

pyqt环境搭建

创建虚拟环境 # 用管理员身份运行 conda create --prefixE:\Python\envs\pyqt5stu python3.6 # 激活虚拟环境 conda activate E:\Python\envs\pyqt5stu # 退出虚拟环境 conda deactivate安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools…

如何用Excel软件制作最小二乘法①

一、用自带的选项&#xff08;不推荐&#xff09;&#xff0c;因为感觉只是近似&#xff0c;虽然结果一样 1.在Excel中输入或打开要进行在excel中输入或打开要进行最小二乘法拟合的数据&#xff0c;如图所示。 2.按住“shift”键的同时&#xff0c;用鼠标左键单击以选择数据&a…

【4】Gradle-快速入门使用【Gradle多模块项目详解】

目录 【4】Gradle-快速入门使用【Gradle多模块项目详解】创建多项目构建添加子项目命名建议 项目依赖项项目路径不同模块的build.gradle配置 子项目之间共享构建逻辑公约插件跨项目配置buildSrc开发公约插件 调整多模块项目配置修改项目树的元素 了解Gralde配置时间和执行时间并…

C#开发的OpenRA游戏之游戏设计思路

OpenRA设计思路 在OpenRA有很多部分的内容,比如UI、渲染、单元行为等等。 不过在地图里,所有单元、建筑物、其它物品都是采用Actor来实现。每个Actor包含一系列Trait属性。 Trait属性有info类和同名称操作类构成。有一个信息类实例在同一类型的所有参与者之间共享。每个Act…

【CSS】全局声明引入自定义字体

以下用vue项目为例&#xff0c;其他的也是类似&#xff01; 在Vue.js中可以使用全局样式表来定义字体。通常&#xff0c;可以在项目中的主样式表中定义全局字体&#xff0c;然后确保该样式表在整个应用程序中被引入。 以下是一般的步骤&#xff1a; 在项目中创建一个全局样式…

CDN是如何减去源机压力的

CDN也叫内容分发网络&#xff08;Content Delivery Network&#xff09;。分布在不同地区的节点服务器组成的分布式网络。通过中心平台的各种功能模块&#xff0c;可以使用户直接访问到就近的节点上&#xff0c;更快获取到需要的内容&#xff0c;大大降低了网络拥堵&#xff0c…

红黑树,AVLTree树(平衡二叉树)迭代器原理讲解

红黑树&#xff0c;AVLTree树底层实现逻辑都是平衡二叉树&#xff08;AVLTree高度平衡&#xff0c;红黑树以某种规则平衡&#xff09;&#xff0c;但终究不像链表的迭代器那样逻辑简单。 简单叙述以下&#xff0c;二叉树上面迭代器的运行逻辑&#xff0c;根据下面的图&#xff…

Nginx:如何实现一个域名访问多个项目

1. 背景介绍 最近在多个项目部署中遇到这样一个问题&#xff0c;一个域名如何实现多个项目的访问。因为不想自己单独去申请域名证书和域名配置&#xff0c;便想到了这个方案&#xff0c;结合Nginx的location功能实现了自己的需求&#xff0c;便记录下来。示例中是以项目演示&a…

从TCP到Socket,彻底理解网络编程是怎么回事

进行程序开发的同学&#xff0c;无论Web前端开发、Web后端开发&#xff0c;还是搜索引擎和大数据&#xff0c;几乎所有的开发领域都会涉及到网络编程。比如我们进行Web服务端开发&#xff0c;除了Web协议本身依赖网络外&#xff0c;通常还需要连接数据库&#xff0c;而数据库连…

linux的文件属性

在使用长格式查看目录信息时&#xff0c;会看到如下的结果。每一行代表对应的文件或者目录的详细信息。从左到右具体含义时文件属性、文件数、所有者、所属的组、文件大小、建立月份、建立日期、建立年份或时间及文件名 [rootmaster lib]# ll total 19260 drwxr-xr-x. 2 root…

OpenWRT配置SFTP远程文件传输,让数据分享更安全

文章目录 前言 1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务&#xff0c;并结合cpolar内网穿透&#xff0c;创建安全隧道映射22端口&#xff0c;实现在公网环境下远程OpenWRT SFTP&#xf…

Python之函数进阶-函数执行原理

Python之函数进阶-函数执行原理 函数执行流程 C语言中&#xff0c;函数的活动和栈有关。栈是后进先出的数据结构。栈是由底端向顶端生长&#xff0c;栈顶加入数据成为压栈、入栈、栈顶弹出数据称为出栈。 def add(x, y):r x yprint(r)return rdef main():a 1r add(a, 2)r…

进制的转换

1、进制的转化 &#xff08;1&#xff09;进制介绍 对于进制&#xff0c;有四种表示方法&#xff1a; 1&#xff09;二进制&#xff1a;0,1&#xff0c;满2进1&#xff0c;C语言中没有二进制常数的表示方法 2&#xff09;八进制&#xff1a;0-7&#xff0c;满8进1 3&#xff0…

ubuntu上如何移植thttpd

thttpd的特点 thttpd 是一个简单、小巧、便携、快速且安全的 HTTP 服务器。 简单&#xff1a; 它只处理实现 HTTP/1.1 所需的最低限度。好吧&#xff0c;也许比最低限度多一点。 小&#xff1a; 请参阅比较图表。它还具有非常小的运行时大小&#xff0c;因为它不会分叉并且非…

MapReduce编程——矩阵乘法(Python版本)

数据格式 对于矩阵元素 A i j A_{ij} Aij​&#xff0c;将其处理为 < i , j , M a t r i x N a m e , v a l u e > <i,j,MatrixName,value> <i,j,MatrixName,value>的四元组格式&#xff0c;例如矩阵[[2, 1, 3, 4], [10, -8, 7, 2], [9, 1, 6, -2]]可被转化…

牛客网刷题笔记131111 Python实现LRU+二叉树先中后序打印+SQL并列排序

从学校步入职场一年多&#xff0c;已经很久没刷过题了&#xff0c;为后续稍微做些提前的准备&#xff0c;还是重新开始刷刷题。 从未做过计划表&#xff0c;这回倒是做了个计划表&#xff0c;希望能坚持吧。 刷题比较随性且量级不大&#xff0c;今天就写了2个算法2个sql&#x…