1. 首页 > PostgreSQL教程 > 正文

PostgreSQL教程FG006-PG快速上手:环境部署(源码)核心流程

本文详细介绍PostgreSQL 18源码编译安装的核心流程,包括环境准备、依赖安装、源码编译、配置和验证等步骤,帮助读者深入了解PostgreSQL的安装过程。风哥教程参考PostgreSQL官方文档Installation from Source Code等内容。

本文档风哥主要介绍PG快速上手:环境部署(源码)核心流程相关内容。风哥教程参考PostgreSQL官方文档Installation, Server Administration内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

本文档介绍PostgreSQL源码编译安装的详细流程,包括依赖安装、配置参数、编译、安装等步骤,适合需要定制化安装的场景。风哥教程参考PostgreSQL官方文档Installation, Server Administration内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 源码安装概述

PostgreSQL源码安装是指从官方下载源码包,在目标系统上进行编译和安装的过程。这种方式可以根据实际需求定制编译选项,学习交流加群风哥微信: itpux-com

1.2 源码安装优势

– 自定义编译选项:可以根据硬件和业务需求选择需要的特性

– 最新版本:可以获取最新的开发版本或稳定版本

– 优化性能:可以针对特定硬件进行编译优化

– 安全可控:可以审查源码,确保没有安全问题

– 学习机会:深入了解PostgreSQL的编译和安装过程

风哥教程针对风哥教程针对风哥教程针对生产环境建议:源码安装适合有经验的数据库管理员,需要了解编译选项和系统配置,学习交流加群风哥QQ113257174

Part02-生产环境规划与建议

2.1 系统要求

源码编译安装的系统要求:

– 操作系统:Linux、macOS、Windows(Cygwin/MinGW)等

– 编译器:GCC 7.4+ 或 Clang 3.8+

– 内存:至少4GB,编译过程需要较大内存

– 磁盘:至少20GB可用空间,用于存放源码、编译文件和安装文件

– 其他:make、autoconf、libtool、bison、flex等编译工具

2.2 依赖包规划

主要依赖包包括:

– 开发工具:gcc、g++、make、autoconf、libtool

– 开发库:readline-devel、zlib-devel、openssl-devel、libxml2-devel、libxslt-devel

– 其他:bison、flex、perl、python3

2.3 目录结构规划

建议的目录结构:

– 源码目录:/postgresql/src/postgresql-18.3

– 安装目录:/postgresql/fgapp

– 数据目录:/postgresql/fgdata

– 日志目录:/postgresql/fgapp/log

– 临时目录:/tmp

风哥提示:在生产环境中,建议将数据目录和日志目录挂载在独立的存储设备上,提高性能和安全性。

Part03-生产环境项目实施方案

3.1 安装依赖包

以Oracle Linux 9.3为例,安装编译依赖包。

from oracle:www.itpux.com

# 安装基本开发工具
# dnf groupinstall -y “Development Tools”

# 安装PostgreSQL依赖包
# dnf install -y readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel
# dnf install -y bison flex perl python3 python3-devel
# dnf install -y libuuid-devel libgssapi_krb5-devel

# 验证依赖安装
# gcc –version
gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# make –version
GNU Make 4.3
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

3.2 下载源码

从PostgreSQL官方网站下载源码包。

# 创建源码目录
# mkdir -p /postgresql/src

# 切换到源码目录
# cd /postgresql/src

# 下载PostgreSQL 18.3源码包
# wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.bz2

# 验证下载文件的MD5
# wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.bz2.md5
# md5sum -c postgresql-18.3.tar.bz2.md5
postgresql-18.3.tar.bz2: OK

# 解压源码包
# tar -xjf postgresql-18.3.tar.bz2

# 查看源码目录
# ls -la postgresql-18.3/
total 1444
drwxrwxr-x. 27 root root 4096 Mar 14 10:00 .
drwxr-xr-x. 3 root root 4096 Apr 2 11:00 ..
-rw-rw-r–. 1 root root 3513 Mar 14 10:00 aclocal.m4
-rw-rw-r–. 1 root root 139264 Mar 14 10:00 configure
-rw-rw-r–. 1 root root 73097 Mar 14 10:00 configure.ac
-rw-rw-r–. 1 root root 7006 Mar 14 10:00 COPYING
drwxrwxr-x. 4 root root 4096 Mar 14 10:00 contrib
drwxrwxr-x. 5 root root 4096 Mar 14 10:00 doc
drwxrwxr-x. 2 root root 4096 Mar 14 10:00 src

3.3 编译源码

配置和编译PostgreSQL源码。

# 切换到源码目录
# cd /postgresql/src/postgresql-18.3

# 配置编译选项
# ./configure \
–prefix=/postgresql/fgapp \
–with-pgport=5432 \
–with-openssl \
–with-libxml \
–with-libxslt \
–with-perl \
–with-python \
–with-krb5 \
–enable-thread-safety \
–enable-debug=no \
–enable-cassert=no

# 编译源码(使用8个CPU核心)
# make -j 8

# 验证编译结果
# echo $?
0

3.4 安装PostgreSQL

安装编译好的PostgreSQL。

# 安装PostgreSQL
# make install

# 安装额外的扩展模块
# make install-contrib

# 验证安装结果
# echo $?
0

# 查看安装目录结构
# ls -la /postgresql/fgapp/
total 32
drwxr-xr-x. 8 root root 4096 Apr 2 11:30 .
drwxr-xr-x. 16 root root 4096 Apr 2 11:28 ..
drwxr-xr-x. 2 root root 4096 Apr 2 11:30 bin
drwxr-xr-x. 6 root root 4096 Apr 2 11:30 include
drwxr-xr-x. 4 root root 4096 Apr 2 11:30 lib
drwxr-xr-x. 4 root root 4096 Apr 2 11:30 share

3.5 初始配置

创建PostgreSQL用户、数据目录和配置服务。

# 创建PostgreSQL用户
# fgeduadd -m -s /bin/bash pgsql # passwd pgsql Changing password for fgedu postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 创建数据目录和日志目录
# mkdir -p /postgresql/fgdata
# mkdir -p /postgresql/fgapp/log

# 设置目录权限
# chown -R pgsql: pgsql /postgresql/fgapp/

# 切换到postgres用户
# su – pgsql # 初始化数据库
$ /postgresql/fgapp/bin/initdb -D /postgresql/fgdata

The files belonging to this fgedudb system will be owned by fgedu “postgres”.
This fgedu must also own the server process.

The fgedudb cluster will be initialized with locale “C.UTF-8”.
The default fgedudb encoding has accordingly been set to “UTF8”.
The default text search configuration will be set to “english”.

Data page checksums are disabled.

fixing permissions on existing directory /postgresql/fgdata … ok
creating subdirectories … ok
selecting dynamic shared memory implementation … posix
selecting default max_connections … 100
selecting default shared_buffers … 128MB
selecting default time zone … Asia/Shanghai
creating configuration files … ok
running bootstrap script … ok
performing post-bootstrap initialization … ok

Success. You can now start the fgedudb server using:

/postgresql/fgapp/bin/pg_ctl -D /postgresql/fgdata -l logfile start

# 启动PostgreSQL服务
$ /postgresql/fgapp/bin/pg_ctl -D /postgresql/fgdata -l /postgresql/fgapp/log/postgresql.log start
waiting for server to start…. done
server started

# 验证服务状态
$ /postgresql/fgapp/bin/pg_ctl -D /postgresql/fgdata status
pg_ctl: server is running (PID: 12345)
/postgresql/fgapp/bin/pgsql “-D” “/postgresql/fgdata”

# 退出postgres用户
$ exit

Part04-生产案例与实战讲解

4.1 完整安装流程

完整的源码安装流程演示。

#!/bin/bash
# postgresql_source_install.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# from:www.itpux.com.qq113257174.wx:itpux-com
# from:www.itpux.com.qq113257174.wx:itpux-com
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# web: `http://www.fgedu.net.cn`
# web: `http://www.fgedu.net.cn`
# web: `http://www.fgedu.net.cn`

# 1. 安装依赖包
echo “Installing dependencies…”
dnf groupinstall -y “Development Tools”
dnf install -y readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel
dnf install -y bison flex perl python3 python3-devel
dnf install -y libuuid-devel libgssapi_krb5-devel

# 2. 下载源码
echo “Downloading PostgreSQL source code…”
mkdir -p /postgresql/src
cd /postgresql/src
wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.bz2
wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.bz2.md5
md5sum -c postgresql-18.3.tar.bz2.md5

# 3. 解压源码
echo “Extracting source code…”
tar -xjf postgresql-18.3.tar.bz2

# 4. 配置编译选项
echo “Configuring build options…”
cd postgresql-18.3
./configure \
–prefix=/postgresql/fgapp \
–with-pgport=5432 \
–with-openssl \
–with-libxml \
–with-libxslt \
–with-perl \
–with-python \
–with-krb5 \
–enable-thread-safety

# 5. 编译源码
echo “Compiling PostgreSQL…”
make -j $(nproc)

# 6. 安装PostgreSQL
echo “Installing PostgreSQL…”
make install
make install-contrib

# 7. 创建用户和目录
echo “Creating fgedu and directories…”
fgeduadd -m -s /bin/bash pgsql mkdir -p /postgresql/fgdata /postgresql/fgapp/log
chown -R pgsql: pgsql /postgresql/fgapp/

# 8. 初始化数据库
echo “Initializing fgedudb…”
su – pgsql -c “/postgresql/fgapp/bin/initdb -D /postgresql/fgdata”

# 9. 配置环境变量
echo “Configuring environment variables…”
echo ‘export PATH=/postgresql/fgapp/bin:$PATH’ >> /home/postgres/.bash_profile
echo ‘export PGDATA=/postgresql/fgdata’ >> /home/postgres/.bash_profile
source /home/postgres/.bash_profile

# 10. 启动服务
echo “Starting PostgreSQL service…”
su – pgsql -c “/postgresql/fgapp/bin/pg_ctl -D /postgresql/fgdata -l /postgresql/fgapp/log/postgresql.log start”

# 11. 验证安装
echo “Verifying installation…”
su – pgsql -c “/postgresql/fgapp/bin/psql -c \”SELECT version();\””

# 12. 配置systemd服务
echo “Configuring systemd service…”
cat > /etc/systemd/system/postgresql.service << EOF [Unit] Description=PostgreSQL 18 fgedudb server Documentation=https://www.postgresql.org/docs/18/ After=network.target [Service] Type=forking User=pgsql Group=pgsql Environment=PGPORT=5432 Environment=PGDATA=/postgresql/fgdata ExecStart=/postgresql/fgapp/bin/pg_ctl start -D \${PGDATA} -l /postgresql/fgapp/log/postgresql.log -w -t 300 ExecStop=/postgresql/fgapp/bin/pg_ctl stop -D \${PGDATA} -s -m fast ExecReload=/postgresql/fgapp/bin/pg_ctl reload -D \${PGDATA} -s [Install] WantedBy=multi-fgedu.target EOF # 13. 启用并启动systemd服务 systemctl daemon-reload systemctl enable --now postgresql # 14. 配置防火墙 echo "Configuring firewall..." firewall-cmd --permanent --add-port=5432/tcp firewall-cmd --reload echo "PostgreSQL 18 source installation completed successfully!"

4.2 服务管理

使用systemd管理PostgreSQL服务。

# 查看服务状态
# systemctl status postgresql

# 启动服务
# systemctl start postgresql

# 停止服务
# systemctl stop postgresql

# 重启服务
# systemctl restart postgresql

# 设置开机自启
# systemctl enable postgresql

# 取消开机自启
# systemctl disable postgresql

# 查看服务日志
# journalctl -u postgresql -f

4.3 性能优化配置

基本的性能优化配置。

# 编辑postgresql.conf文件
# vi /postgresql/fgdata/postgresql.conf

# 基本性能参数配置
shared_buffers = 8GB # 内存的1/4
work_mem = 32MB # 每个查询的工作内存
maintenance_work_mem = 1GB # 维护操作的内存
effective_cache_size = 24GB # 内存的3/4
max_connections = 200 # 最大连接数

# 写性能优化
effective_io_concurrency = 200 # SSD设置为200-400
wal_buffers = 16MB # WAL缓冲区大小
checkpoint_completion_target = 0.9 # 检查点完成目标

# 日志配置
logging_collector = on
log_directory = ‘/postgresql/fgapp/log’
log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0
log_min_duration_statement = 5000 # 记录执行时间超过5秒的语句

# 重启服务使配置生效
# systemctl restart postgresql

Part05-风哥经验总结与分享

5.1 最佳实践建议

1. 编译选项选择:根据实际需求选择编译选项,避免安装不必要的特性。

2. 目录规划:合理规划安装目录、数据目录和日志目录,便于管理和维护。

3. 权限设置:严格设置文件和目录的权限,确保数据库安全。

4. 服务管理:使用systemd管理PostgreSQL服务,便于自动启动和监控。

5. 性能调优:根据硬件配置和业务需求进行性能调优,提高数据库性能。

6. 备份策略:建立完善的备份策略,定期备份数据库。

5.2 常见问题与解决

1. 依赖缺失:编译过程中出现依赖缺失错误,需要安装相应的开发包。

2. 权限错误:确保PostgreSQL用户对数据目录和日志目录有读写权限。

3. 编译失败:检查编译器版本和编译选项,确保符合要求。

4. 服务启动失败:查看日志文件,检查配置文件语法和端口占用情况。

5. 性能问题:根据实际情况调整shared_buffers、work_mem等参数。

风哥教程针对风哥教程针对风哥教程针对生产环境建议:在生产环境中,建议使用稳定版本的PostgreSQL,并定期更新补丁。更多视频教程www.fgedu.net.cn

本文介绍了PostgreSQL 18源码编译安装的完整流程,包括环境准备、依赖安装、源码编译、配置和验证等步骤。通过学习本文,读者可以深入了解PostgreSQL的安装过程,并掌握源码安装的方法和技巧。更多学习教程公众号风哥教程itpux_com

from PostgreSQL:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息