从源码编译到配置:PostgreSQL 14在Kylin V10上的完整部署流程

张开发
2026/4/12 17:36:36 15 分钟阅读

分享文章

从源码编译到配置:PostgreSQL 14在Kylin V10上的完整部署流程
从源码编译到配置PostgreSQL 14在Kylin V10上的完整部署流程在国产操作系统Kylin V10上部署PostgreSQL 14数据库时采用源码编译方式能够规避软件包依赖冲突同时获得更灵活的定制化配置选项。本文将详细解析从源码获取、环境准备、编译优化到数据库初始化的全流程操作特别针对中文环境初始化报错和认证模式警告等实际问题提供解决方案。1. 环境准备与源码获取Kylin V10作为基于Linux的国产操作系统其软件生态与常见Linux发行版存在差异。在开始编译前需要确保系统具备必要的开发工具链和依赖库。执行以下命令安装基础编译环境yum groupinstall Development Tools -y yum install readline-devel zlib-devel openssl-devel -y获取PostgreSQL 14.11源码包wget https://ftp.postgresql.org/pub/source/v14.11/postgresql-14.11.tar.gz tar -xvf postgresql-14.11.tar.gz cd postgresql-14.11关键目录规划建议目录类型推荐路径用途说明安装目录/opt/pg14二进制文件与库文件数据目录/data/pg14数据库集群存储日志目录/var/log/pg14运行日志记录2. 编译配置与优化参数PostgreSQL的编译配置直接影响数据库性能和功能特性。针对Kylin V10系统特性推荐使用以下configure参数组合./configure \ --prefix/opt/pg14 \ --with-openssl \ --with-libxml \ --with-zlib \ --enable-debug \ --enable-dtrace \ CFLAGS-O2 -marchnative常见编译问题解决方案readline库缺失安装开发包yum install readline-devel -y或添加编译选项--without-readlineSSL版本冲突# 检查现有OpenSSL版本 openssl version # 若版本不匹配指定特定路径 --with-openssl/usr/local/openssl编译与安装命令make -j$(nproc) make install提示使用-j参数可并行编译加速过程数值建议设置为CPU核心数3. 系统用户与目录配置为保障安全隔离需要创建专用系统账户和权限控制# 创建用户组和账户 groupadd -r postgres useradd -r -g postgres -s /bin/bash -d /home/postgres postgres # 设置目录权限 mkdir -p /data/pg14 /var/log/pg14 chown -R postgres:postgres /data/pg14 /var/log/pg14 chmod 700 /data/pg14配置环境变量添加到/home/postgres/.bashrcexport PATH/opt/pg14/bin:$PATH export LD_LIBRARY_PATH/opt/pg14/lib:$LD_LIBRARY_PATH export PGDATA/data/pg144. 数据库初始化与中文支持执行初始化前需确认系统locale支持情况# 检查可用locale locale -a | grep zh_CN # 若缺失中文locale生成新的locale localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8初始化数据库集群su - postgres initdb -D $PGDATA --localezh_CN.UTF-8 --encodingUTF8解决初始化告警问题trust认证模式警告 编辑$PGDATA/pg_hba.conf将trust改为更安全的md5或scram-sha-256host all all 127.0.0.1/32 scram-sha-256 local all all scram-sha-256文本搜索配置警告 安装额外字典支持CREATE TEXT SEARCH CONFIGURATION chinese ( COPY simple ); ALTER TEXT SEARCH CONFIGURATION chinese ALTER MAPPING FOR hword, hword_part, word WITH unaccent, zhparser;5. 服务管理与自动启动创建systemd服务单元文件/etc/systemd/system/postgresql14.service[Unit] DescriptionPostgreSQL 14 Database Server Afternetwork.target [Service] Typeforking Userpostgres Grouppostgres EnvironmentPGDATA/data/pg14 OOMScoreAdjust-1000 ExecStart/opt/pg14/bin/pg_ctl start -D ${PGDATA} -l /var/log/pg14/startup.log ExecStop/opt/pg14/bin/pg_ctl stop -D ${PGDATA} ExecReload/opt/pg14/bin/pg_ctl reload -D ${PGDATA} TimeoutSec300 [Install] WantedBymulti-user.target启用服务自启动systemctl daemon-reload systemctl enable --now postgresql146. 性能调优基础配置修改postgresql.conf关键参数# 连接设置 max_connections 200 superuser_reserved_connections 3 # 内存配置 shared_buffers 4GB # 建议系统内存的25% work_mem 16MB # 每个查询操作内存 maintenance_work_mem 512MB # 维护操作内存 # 磁盘IO random_page_cost 1.1 # SSD存储建议值 effective_io_concurrency 200 # 并发IO数 # 检查点优化 checkpoint_completion_target 0.9 wal_buffers 16MB # 日志配置 log_destination csvlog logging_collector on log_directory /var/log/pg14 log_filename postgresql-%Y-%m-%d_%H%M%S.log log_rotation_age 1d log_rotation_size 100MB应用配置变更pg_ctl reload在实际生产环境中这些参数需要根据服务器硬件配置和业务负载特点进行针对性调整。使用pgbench进行基准测试是验证配置效果的有效方法。

更多文章