PostgreSQL 16.1 安装指南

环境准备

1. 系统检查

bash 复制代码
# 查看系统版本
cat /etc/redhat-release

# 检查磁盘空间
df -Th

2. 创建目录结构

bash 复制代码
mkdir -p /pgccc/soft        # 软件包存放目录
mkdir -p /pgccc/app         # PostgreSQL安装目录
mkdir -p /pgccc/pgdata      # 数据目录
mkdir -p /pgccc/archive     # 归档目录
mkdir -p /pgccc/backups     # 备份目录

3. 创建用户和组

bash 复制代码
groupadd postgres
useradd -g postgres postgres
echo "postgres" | passwd --stdin postgres

# 设置目录权限
chown -R postgres. /pgccc
chmod -R 775 /pgccc

安装依赖包

配置本地YUM源

bash 复制代码
# 挂载ISO镜像
mount /dev/cdrom /mnt

# 创建本地YUM源脚本(set_local_yum.sh)
# 脚本内容需根据实际情况编写
sh set_local_yum.sh /mnt

安装编译依赖

bash 复制代码
yum install -y bison flex readline-devel zlib zlib-devel gcc \
               openssl-devel libicu-devel

编译安装PostgreSQL

1. 解压源码包

bash 复制代码
cd /pgccc/soft
tar zxvf postgresql-16.1.tar.gz
cd postgresql-16.1

2. 配置编译选项

bash 复制代码
./configure --prefix=/pgccc/app/16.1 \
            --with-pgport=1521 \
            --with-blocksize=8 \
            --with-wal-blocksize=8 \
            --with-segsize=5

3. 编译和安装

bash 复制代码
make && make install

配置系统服务

1. 创建systemd服务文件

bash 复制代码
vi /usr/lib/systemd/system/postgresql-16.service

服务文件内容示例:

ini 复制代码
[Unit]
Description=PostgreSQL 16.1 database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/pgccc/pgdata
OOMScoreAdjust=-1000
ExecStart=/pgccc/app/16.1/bin/pg_ctl -D ${PGDATA} start
ExecStop=/pgccc/app/16.1/bin/pg_ctl -D ${PGDATA} stop
ExecReload=/pgccc/app/16.1/bin/pg_ctl -D ${PGDATA} reload
TimeoutSec=300

[Install]
WantedBy=multi-user.target

2. 配置服务

bash 复制代码
# 重载systemd配置
systemctl daemon-reload

# 设置数据目录权限
chmod 0700 /pgccc/pgdata

# 启动服务
systemctl start postgresql-16.service

# 设置开机自启
systemctl enable postgresql-16.service

系统优化配置

1. 关闭SELinux

bash 复制代码
# 临时关闭
setenforce 0

# 永久关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# 验证状态
getenforce

2. 关闭防火墙

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld

故障排查

查看服务状态

bash 复制代码
# 检查服务状态
systemctl status postgresql-16.service

# 查看服务日志
journalctl -xeu postgresql-16.service

# 检查进程
ps -ef | grep post

常见问题解决

  1. 权限问题 :确保/pgccc/pgdata目录权限为0700
  2. SELinux阻止:检查并关闭SELinux
  3. 端口冲突:检查1521端口是否被占用

环境变量配置(可选)

/etc/profile~/.bash_profile中添加:

bash 复制代码
export PGHOME=/pgccc/app/16.1
export PGDATA=/pgccc/pgdata
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH

验证安装

bash 复制代码
# 切换到postgres用户
su - postgres

# 连接到数据库(需要先初始化数据库)
/pgccc/app/16.1/bin/psql -p 1521

注意事项

  1. 安装前确保有足够的磁盘空间
  2. 生产环境建议使用更安全的密码
  3. 根据实际需求调整编译参数
  4. 定期备份重要数据
  5. 监控数据库运行状态

后续步骤

  1. 初始化数据库集群
  2. 配置pg_hba.conf访问控制
  3. 调整postgresql.conf参数
  4. 创建数据库用户和数据库
  5. 配置归档和备份策略

本指南基于CentOS/RedHat系统编写,其他Linux发行版可能略有不同

相关推荐
范什么特西1 天前
回答知识总结04(redis)
数据库·redis·缓存
码农颜1 天前
5.4.1 锁分类
java·数据库·mysql
云深处@1 天前
【数据库】MySQL 入门
数据库·学习·mysql
梦远星帆1 天前
SQLyog社区版下载
数据库·mysql·sqlyog
科力锐品牌君1 天前
行业龙头|科力锐全链路防勒索 + 多中心容灾方案,构筑河南翔宇医疗业务安全闭环!
网络·数据库·分布式·安全·数据安全·备份
zyplayer-doc1 天前
zyplayer-doc企业知识库能做什么:从文档创建、权限管理到AI问答的完整能力
大数据·javascript·数据库·人工智能·pdf·word
会编程的吕洞宾1 天前
LangChain4j Tool Calling 实战:让大模型自动查数据库发邮件,一句话搞定复杂任务
数据库·人工智能
知行合一。。。2 天前
DeepAgents--01--Agent和OpenClaw的相关概念
android·数据库
c238562 天前
# Mini OJ — 项目详解文档
开发语言·数据库·c++
DFT计算杂谈2 天前
C4T交错磁体中的超导交织序向列涨落与自旋流环涨落的选择机制
大数据·数据库·人工智能