环境准备
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
常见问题解决
- 权限问题 :确保
/pgccc/pgdata目录权限为0700 - SELinux阻止:检查并关闭SELinux
- 端口冲突:检查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
注意事项
- 安装前确保有足够的磁盘空间
- 生产环境建议使用更安全的密码
- 根据实际需求调整编译参数
- 定期备份重要数据
- 监控数据库运行状态
后续步骤
- 初始化数据库集群
- 配置pg_hba.conf访问控制
- 调整postgresql.conf参数
- 创建数据库用户和数据库
- 配置归档和备份策略
本指南基于CentOS/RedHat系统编写,其他Linux发行版可能略有不同