在线;离线部署:pg_sql

在线:

源码编译安装 PostgreSQL 14.8(完整步骤)
第一步:安装编译依赖
bash
sudo dnf install -y gcc gcc-c++ make readline-devel zlib-devel openssl-devel \
libicu-devel systemd-devel perl bison flex libxml2-devel libxslt-devel
第二步:下载 PostgreSQL 14.8 源码
bash
cd /var/www
wget https://ftp.postgresql.org/pub/source/v14.8/postgresql-14.8.tar.gz
tar -xzvf postgresql-14.8.tar.gz
cd postgresql-14.8
第三步:编译配置
bash
./configure --prefix=/usr/local/pgsql \
--with-openssl \
--with-systemd \
--with-libxml \
--with-libxslt
参数说明:

--prefix=/usr/local/pgsql:安装目录

--with-openssl:启用 SSL 支持

--with-systemd:支持 systemd 管理

--with-libxml / --with-libxslt:支持 XML 功能

第四步:编译与安装
bash
make -j$(nproc)
sudo make install
第五步:创建 PostgreSQL 用户和数据目录
bash
# 创建 postgres 用户和组
sudo groupadd postgres
sudo useradd -g postgres -s /bin/bash postgres

# 创建数据目录并授权
sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql
第六步:初始化数据库
bash
sudo -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
第七步:配置环境变量(方便使用)
bash
# 添加 PostgreSQL 到 PATH
echo 'export PATH=/usr/local/pgsql/bin:$PATH' | sudo tee /etc/profile.d/pgsql.sh
source /etc/profile.d/pgsql.sh
第八步:启动 PostgreSQL
bash
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile start
第九步:验证版本
bash
/usr/local/pgsql/bin/psql --version
预期输出:psql (PostgreSQL) 14.8

第十步:设置 postgres 用户密码
bash
sudo -u postgres /usr/local/pgsql/bin/psql -c "ALTER USER postgres WITH PASSWORD '密码';"
第十一步:配置 systemd 服务(可选,推荐)
创建 systemd 服务文件,方便管理:

制作离线包:

tar -zcvf postgresql‑14.8‑offline.tar.gz -C ./pg_out usr/local/pgsql

目标机器,再解压就可以了

tar -zxvf postgresql‑14.8‑offline.tar.gz -C /

离线:

cat >> /etc/profile <<'EOF'
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
EOF

 

解压到指定位置。

tar -zvxf pgsql14.8-bin.tar.gz -C /

 

postgres --version

psql --version

 

添加分组和用户:

groupadd postgres

sudo useradd -g postgres -s /bin/bash postgres

创建数据库保存位置

mkdir -p /data/pgdata148

chown postgres:postgres /data/pgdata148

chmod 700 /data/pgdata148

初始化数据库

sudo -u postgres /usr/local/pgsql/bin/initdb -D /data/pgdata148

初始化配置:

echo 'export PATH=/usr/local/pgsql/bin:$PATH' | sudo tee /etc/profile.d/pgsql.sh

source /etc/profile.d/pgsql.sh

启动数据库

sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /data/pgdata148 -l /data/pgdata148/pg148.log start

 

创建服务和开机启动:

cat > /etc/systemd/system/postgresql-14.service <<'EOF'
[Unit]
Description=PostgreSQL 14.8 Database Server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment="PATH=/usr/local/pgsql/bin"
Environment="LD_LIBRARY_PATH=/usr/local/pgsql/lib"
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /data/pgdata148 -l /data/pgdata148/pg148.log
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /data/pgdata148
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /data/pgdata148

# 安全配置
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

 

systemctl daemon-reload

systemctl enable postgresql-14

systemctl status postgresql-14

远程访问:

vim /data/pgdata148/postgresql.conf

localhost 改到 *

 

用户访问限定:

vim /data/pgdata148/pg_hba.conf

关闭防火墙或者开放端口

systemctl status firewalld

firewall-cmd --add-port=5432/tcp --permanent

firewall-cmd --reload

 

主从备份:

主机需要修改配置(新增内容)。允许从机访问:

echo "host    replication     repluser        从机IP/32         md5" >> /data/pgdata148/pg_hba.conf

创建备份用户:

sudo -u postgres /usr/local/pgsql/bin/psql -c "CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD '账户密码';"

从机执行:(从机不执行 initDB)

sudo -u postgres /usr/local/pgsql/bin/pg_basebackup \
-h 主机IP -p 5432 -U repluser \
-F p -X s -P -R -D /data/pgdata148

检测:

从机器多一个文件:ls -l /data/pgdata148/standby.signal

# 必须包含主库连接信息
cat /data/pgdata148/postgresql.auto.conf

启动从机:

cd /tmp
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /data/pgdata148 -l /data/pgdata148/pg148.log start

systemctl start postgresql-14

 

测试:

sudo -u postgres /usr/local/pgsql/bin/psql -c "SELECT pg_is_in_recovery();"

sudo -u postgres /usr/local/pgsql/bin/psql -c "SELECT status, sender_host, sender_port FROM pg_stat_wal_receiver;"

 

开机启动

systemctl daemon-reload
systemctl enable postgresql-14
systemctl status postgresql-14

posted @ 2026-09-08 18:17  Supper_litt  阅读(5)  评论(0)    收藏  举报