PostgreSQL16.3基于CentOS7.9源码安装步骤

本文将详细介绍如何在 CentOS 7.9 上安装和配置 PostgreSQL 16.3,包括源码获取、依赖安装、编译与安装、用户和权限配置、环境变量设置、数据库初始化、服务脚本创建、定时备份脚本编写,以及常见问题的解决方法。

1. 获取源码

首先,下载 PostgreSQL 16.3 的源码:

wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz
2. 安装编译需要的依赖

在 CentOS 上安装所需的开发包:

sudo yum install -y readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel python3-devel liblz4 liblz4-devel e2fsprogs-devel uuid uuid-devel libuuid-devel  libaio-devel
3. 编译&安装

解压并编译安装 PostgreSQL:

tar -xzvf postgresql-16.3.tar.gz
cd postgresql-16.3
./configure --prefix=/usr/local/PostgreSQL --with-openssl --with-uuid=ossp --with-libxml --with-libxslt 
make -j2
make install
4. 新增安装用户

创建 PostgreSQL 用户并设置数据目录权限:

sudo useradd -m postgres  # 创建 PostgreSQL 用户
sudo passwd postgres     # 为用户设置密码
sudo mkdir -p /home/postgres/opt/data  # 创建数据目录
sudo chown -R postgres:postgres /home/postgres/opt/data # 将数据目录权限授予 postgres 用户
sudo chown -R postgres:postgres /usr/local/PostgreSQL # 将安装目录权限授予 postgres 用户
5. 配置环境postgres用户环境变量

切换到 postgres 用户并配置环境变量:

  • 切换到postgres用户
su - postgres
  • 编辑 ~/.bash_profile 文件:
export POSTGRES_HOME=/usr/local/PostgreSQL
export PATH=$POSTGRES_HOME/bin:/usr/sbin/ip:$HOME/.local/bin:$HOME/bin:$PATH
export LD_LIBRARY_PATH=$POSTGRES_HOME/lib:$LD_LIBRARY_PATH
  • 重新加载环境变量:
source ~/.bash_profile
6. 数据库初始化

初始化数据库:

su - postgres
initdb -D /home/postgres/opt/data
7. 启动&停止数据库

启动和停止 PostgreSQL 数据库:

su - postgres
#启动
pg_ctl start -D /home/postgres/opt/data
#停止
pg_ctl stop -D /home/postgres/opt/data
8. 把数据库制作成系统服务脚本postgresql.service

创建并配置 PostgreSQL 服务脚本:

sudo nano /etc/systemd/system/postgresql.service

在文件中添加以下内容:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking

# 设定环境变量
Environment=PGDATA=/home/postgres/opt/data

# 配置启动和停止的命令
ExecStart=/usr/local/PostgreSQL/bin/pg_ctl start -D ${PGDATA} -s -o "-p 5432" -l /var/log/postgresql/postgresql.log
ExecStop=/usr/local/PostgreSQL/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/PostgreSQL/bin/pg_ctl reload -D ${PGDATA} -s

# 用户和组配置
User=postgres
Group=postgres

# 设置服务的运行限制
LimitNOFILE=65536

# 日志配置
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=postgresql

[Install]
WantedBy=multi-user.target

设置文件权限并重新加载 systemd 配置:

sudo chmod 644 /etc/systemd/system/postgresql.service
sudo systemctl daemon-reload

启动 PostgreSQL 服务并设置开机自启动:

sudo systemctl start postgresql
sudo systemctl enable postgresql

检查 PostgreSQL 服务状态:

sudo systemctl status postgresql
9. 定时备份数据库脚本

编写备份脚本 backups.sh:

#!/bin/bash

# 设定变量,备份文件存储路径,需要先用mkdir -p 命令进行建立
BACKUP_DIR="/var/backups/postgresql"
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
# 需要备份的数据库
DATABASE_NAME="your_database_name"
USER="postgres"
PG_DUMP="/usr/local/PostgreSQL/bin/pg_dump"

# 创建备份目录
mkdir -p ${BACKUP_DIR}

# 执行备份
${PG_DUMP} -U ${USER} ${DATABASE_NAME} > ${BACKUP_DIR}/backup_${DATABASE_NAME}_${DATE}.sql

# 删除7天前的备份
find ${BACKUP_DIR} -type f -mtime +7 -name '*.sql' -exec rm {} \;

为脚本添加可执行权限:

sudo chmod +x /usr/local/PostgreSQL/bin/backups.sh

创建一个 cron job 来定时运行这个脚本:

sudo crontab -e

设置每天凌晨2点执行备份脚本:

0 2 * * * /usr/local/PostgreSQL/bin/backups.sh
10. 遇见的问题以及解决办法

问题1: configure: error: no acceptable C compiler found in $PATH
解决办法:

sudo yum install gcc

问题2:configure: error: ICU library not found
If you have ICU already installed, see config.log for details on the
failure. It is possible the compiler isn’t looking in the proper directory.
Use --without-icu to disable ICU support.
解决办法:

sudo yum install icu libicu libicu-devel

问题3: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
解决办法:

sudo ln -s /usr/local/PostgreSQL/lib/libpq.so.5 /usr/lib64/libpq.so.5

问题4: /bin/sh: /var/log/postgresql/postgresql.log: No such file or directory
解决办法:

sudo mkdir -p /var/log/postgresql
sudo chown postgres:postgres /var/log/postgresql
sudo chmod 755 /var/log/postgresql
sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo systemctl status postgresql

通过以上步骤,您已经成功在 CentOS 7.9 上安装并配置了 PostgreSQL 16.3,设置了数据库备份脚本,并解决了可能遇到的常见问题。

参考文档
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechCraft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值