大家好,欢迎观看《PG 入门到精通》博客。上期节目我们全面认识了 PostgreSQL,了解了它的历史、核心特性以及与其他数据库的对比。今天我们进入实战环节,手把手教大家安装和配置 PostgreSQL,这是我们学习 PG 的第一步,也是非常关键的一步。
很多新手在安装 PG 的时候会遇到各种问题,比如权限错误、服务启动失败、连接不上等等。其实这些问题大多是因为操作系统配置不当或者数据库参数没有正确设置导致的。今天我们就把整个安装过程拆解得明明白白,从环境准备到系统优化,再到数据库参数调整,一步一步带大家完成。
一、环境准备:选择合适的安装环境
在开始安装之前,我们首先要选择合适的操作系统和硬件环境。
1. 推荐操作系统
PostgreSQL 支持几乎所有主流的操作系统,包括 Linux、Windows、macOS 等。但在生产环境中,强烈推荐使用 Linux 系统,特别是以下几个发行版:
- RHEL/CentOS/Rocky Linux 8/9:企业级最常用,稳定性最好
- Ubuntu 22.04/24.04 LTS:开发者友好,社区活跃
- Debian 12:轻量稳定,适合资源有限的环境
本期节目我们将以Rocky Linux 9为例进行讲解,这是目前企业中替代 CentOS 的首选系统。
2. 硬件要求
根据不同的使用场景,硬件要求也有所不同:
| 场景 | CPU | 内存 | 磁盘 |
|---|---|---|---|
| 学习测试 | 2 核 | 4GB | 50GB SSD |
| 小型生产 | 4 核 | 8GB | 100GB SSD |
| 中型生产 | 8 核 | 32GB | 500GB SSD |
| 大型生产 | 16 核以上 | 64GB 以上 | 1TB 以上 SSD |
重要提示:数据库是 IO 密集型应用,强烈建议使用 SSD 磁盘,机械硬盘会严重影响性能。
二、操作系统配置:打好基础,避免踩坑
这是很多新手最容易忽略的一步,但却是最重要的一步。操作系统配置不当会导致数据库性能低下、稳定性差,甚至出现数据丢失的风险。
1. 关闭防火墙和 SELinux(测试环境)
在测试环境中,为了简化操作,我们可以先关闭防火墙和 SELinux。生产环境中建议正确配置防火墙规则,而不是直接关闭。
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
2. 配置主机名和 hosts 文件
# 设置主机名
hostnamectl set-hostname pg-server
# 配置hosts文件
echo "192.168.1.100 pg-server" >> /etc/hosts
请将上面的 IP 地址替换为你服务器的实际 IP 地址。
3. 关闭 Swap 分区
数据库不建议使用 Swap 分区,因为 Swap 会严重影响性能。
# 临时关闭Swap
swapoff -a
# 永久关闭Swap
sed -i '/swap/s/^/#/' /etc/fstab
4. 调整内核参数
编辑/etc/sysctl.conf文件,添加以下内容:
# 共享内存段大小,建议设置为物理内存的一半
kernel.shmmax = 2147483648 # 2GB
kernel.shmall = 524288 # 2GB / 4KB = 524288页
# 信号量参数
kernel.sem = 250 32000 100 128
# 文件句柄数
fs.file-max = 6553600
# 网络参数
net.ipv4.ip_local_port_range = 9000 65535
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
保存后执行以下命令使配置生效:
sysctl -p
5. 调整资源限制
编辑/etc/security/limits.conf文件,添加以下内容:
postgres soft nofile 65536
postgres hard nofile 65536
postgres soft nproc 65536
postgres hard nproc 65536
postgres soft memlock unlimited
postgres hard memlock unlimited
6. 创建专用用户和组
PostgreSQL 不允许使用 root 用户运行,必须创建专用的用户和组。
groupadd postgres
useradd -g postgres postgres
passwd postgres # 设置postgres用户的密码
7. 磁盘分区和挂载建议
在生产环境中,建议将数据库的数据目录、WAL 日志目录和备份目录分别挂载到不同的磁盘分区上,这样可以提高性能和可靠性。
# 创建目录
mkdir -p /pgdata
mkdir -p /pgwal
mkdir -p /pgbackup
# 挂载磁盘(示例,请根据实际情况修改)
mount /dev/sdb1 /pgdata
mount /dev/sdc1 /pgwal
mount /dev/sdd1 /pgbackup
# 设置权限
chown -R postgres:postgres /pgdata
chown -R postgres:postgres /pgwal
chown -R postgres:postgres /pgbackup
chmod 700 /pgdata
chmod 700 /pgwal
chmod 700 /pgbackup
三、安装 PostgreSQL:三种主流方式详解
PostgreSQL 有三种主流的安装方式:RPM 包安装、源码编译安装和 Docker 安装。我们分别来介绍。
方式一:RPM 包安装(推荐新手和生产环境)
这是最简单、最常用的安装方式,适合大多数场景。
- 安装 PostgreSQL 官方 YUM 仓库
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 安装 PostgreSQL 18(最新稳定版)
dnf install -y postgresql18-server postgresql18-contrib
postgresql18-contrib包包含了很多有用的扩展,比如 pg_stat_statements 等,建议一起安装。
方式二:源码编译安装(适合高级用户)
如果你需要自定义编译选项或者使用最新的开发版本,可以选择源码编译安装。
- 安装依赖包
dnf install -y gcc make readline-devel zlib-devel openssl-devel libxml2-devel libxslt-devel
- 下载源码包
wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.gz
tar -zxvf postgresql-18.3.tar.gz
cd postgresql-18.3
- 配置编译选项
./configure --prefix=/usr/local/pgsql-18.3 --with-openssl --with-libxml --with-libxslt
- 编译和安装
make
make install
方式三:Docker 安装(适合快速测试)
如果你只是想快速体验一下 PostgreSQL,可以使用 Docker 安装。
# 拉取PostgreSQL 18镜像
docker pull postgres:18
# 运行容器
docker run -d --name postgres18 \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
-v /pgdata:/var/lib/postgresql/data \
postgres:18
四、初始化数据库和启动服务
安装完成后,我们需要初始化数据库并启动服务。
1. 初始化数据库集群
# RPM包安装方式
/usr/pgsql-18/bin/postgresql-18-setup initdb
# 源码编译安装方式
su - postgres
/usr/local/pgsql-18.3/bin/initdb -D /pgdata -E UTF8 --locale=en_US.UTF-8
重要参数说明:
-D /pgdata:指定数据目录-E UTF8:指定默认字符集为 UTF-8--locale=en_US.UTF-8:指定本地化设置
2. 配置服务自启动
# RPM包安装方式
systemctl enable postgresql-18
systemctl start postgresql-18
# 源码编译安装方式
# 创建systemd服务文件
vi /etc/systemd/system/postgresql.service
添加以下内容:
ini
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
ExecStart=/usr/local/pgsql-18.3/bin/pg_ctl -D /pgdata start
ExecStop=/usr/local/pgsql-18.3/bin/pg_ctl -D /pgdata stop
ExecReload=/usr/local/pgsql-18.3/bin/pg_ctl -D /pgdata reload
TimeoutSec=300
[Install]
WantedBy=multi-user.target
然后启动服务:
systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql
3. 检查服务状态
systemctl status postgresql-18
如果看到 "active (running)" 字样,说明服务已经成功启动。
五、数据库基础配置和参数调整
这是本期节目的重点内容。PostgreSQL 的配置文件主要有两个:postgresql.conf和pg_hba.conf。
1. 配置 pg_hba.conf:客户端认证
pg_hba.conf文件控制客户端的访问权限。编辑/var/lib/pgsql/18/data/pg_hba.conf文件(RPM 安装方式),找到以下内容:
plaintext
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
修改为:
plaintext
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# 允许所有客户端连接(测试环境)
host all all 0.0.0.0/0 scram-sha-256
生产环境中请根据实际情况限制 IP 地址范围。
2. 配置 postgresql.conf:核心参数调整
postgresql.conf是 PostgreSQL 的主配置文件,包含了数据库的所有核心参数。我们来调整一些最重要的参数。
(1)连接和监听参数
ini
# 监听所有IP地址
listen_addresses = '*'
# 端口号,默认5432
port = 5432
# 最大连接数,根据服务器内存调整
max_connections = 200
(2)内存相关参数(最重要)
这是对性能影响最大的参数,需要根据服务器的物理内存来调整。以下是通用建议:
| 物理内存 | shared_buffers | work_mem | maintenance_work_mem | effective_cache_size |
|---|---|---|---|---|
| 4GB | 1GB | 32MB | 128MB | 2GB |
| 8GB | 2GB | 64MB | 256MB | 4GB |
| 16GB | 4GB | 128MB | 512MB | 8GB |
| 32GB | 8GB | 256MB | 1GB | 16GB |
| 64GB | 16GB | 512MB | 2GB | 32GB |
# 共享缓冲区,建议设置为物理内存的1/4
shared_buffers = 2GB
# 每个操作的工作内存,建议设置为(物理内存 * 1/4) / max_connections
work_mem = 64MB
# 维护操作的工作内存,建议设置为物理内存的1/16
maintenance_work_mem = 256MB
# 有效缓存大小,建议设置为物理内存的1/2
effective_cache_size = 4GB
(3)WAL(预写日志)相关参数
# WAL缓冲区大小
wal_buffers = 16MB
# 检查点间隔
checkpoint_timeout = 30min
# 检查点完成目标
checkpoint_completion_target = 0.9
# WAL段大小,默认16MB,生产环境建议64MB或128MB
wal_segment_size = 64MB
(4)日志相关参数
# 开启日志收集
logging_collector = on
# 日志目录
log_directory = 'log'
# 日志文件名格式
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
# 日志保留时间
log_rotation_age = 7d
# 记录慢查询
log_min_duration_statement = 1000 # 记录执行时间超过1秒的SQL
(5)其他重要参数
# 默认字符集
client_encoding = UTF8
# 默认日期格式
datestyle = 'iso, mdy'
# 时区
timezone = 'Asia/Shanghai'
3. 使配置生效
修改完配置文件后,需要重启数据库服务使配置生效:
systemctl restart postgresql-18
六、验证安装和基本连接
现在我们来验证一下 PostgreSQL 是否安装成功并可以正常连接。
1. 本地连接
# 切换到postgres用户
su - postgres
# 连接到数据库
psql
如果看到以下提示符,说明连接成功:
psql (18.3)
Type "help" for help.
postgres=#
2. 修改 postgres 用户密码
sql
ALTER USER postgres WITH PASSWORD '你的密码';
3. 远程连接测试
在另一台机器上使用 psql 客户端或者图形化工具(如 pgAdmin、DBeaver)进行连接测试:
psql -h 192.168.1.100 -p 5432 -U postgres -d postgres
七、常见问题和避坑指南
服务启动失败:最常见的原因是数据目录权限不正确,确保数据目录属于 postgres 用户且权限为 700。
连接被拒绝:检查
listen_addresses参数是否设置为 '*',以及pg_hba.conf文件是否允许客户端 IP 访问。密码认证失败:确保已经修改了 postgres 用户的密码,并且
pg_hba.conf中使用的是scram-sha-256认证方式。性能低下:检查内存相关参数是否根据服务器内存正确调整,是否使用了 SSD 磁盘。
PostgreSQL 生产环境安装验收检查清单
适用版本:PostgreSQL 16/17/18
适用系统:RHEL/CentOS/Rocky Linux 8/9、Ubuntu 22.04/24.04 LTS
验收人:__________
验收日期:__________
一、操作系统基础配置检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 1.1 | 操作系统版本 | 企业级 LTS 版本,内核≥4.18 | cat /etc/redhat-release 或 lsb_release -a | ☐ 通过 ☐ 不通过 | |
| 1.2 | 防火墙配置 | 仅开放必要端口(5432),禁止直接关闭 | firewall-cmd --list-ports | ☐ 通过 ☐ 不通过 | 测试环境可临时关闭 |
| 1.3 | SELinux 状态 | 生产环境建议 Enforcing,配置正确策略 | getenforce | ☐ 通过 ☐ 不通过 | 测试环境可 Permissive |
| 1.4 | Swap 分区 | 完全关闭 | free -h 或 swapon --show | ☐ 通过 ☐ 不通过 | 必须无任何 swap 挂载 |
| 1.5 | 主机名与 hosts | 主机名唯一,hosts 文件包含本机 IP 映射 | hostname 和 cat /etc/hosts | ☐ 通过 ☐ 不通过 | |
| 1.6 | 系统时间同步 | NTP 服务正常运行,时间准确 | timedatectl status | ☐ 通过 ☐ 不通过 | 必须配置内网 NTP 服务器 |
| 1.7 | 系统更新 | 已安装最新安全补丁 | dnf check-update 或 apt list --upgradable | ☐ 通过 ☐ 不通过 |
二、磁盘与存储配置检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 2.1 | 磁盘类型 | 全部使用 SSD/NVMe,禁止机械硬盘 | lsblk -d -o name,rota | ☐ 通过 ☐ 不通过 | rota=0 为 SSD |
| 2.2 | 目录分离 | 数据目录、WAL 目录、备份目录分别挂载不同磁盘 | df -h /pgdata /pgwal /pgbackup | ☐ 通过 ☐ 不通过 | 生产环境必须分离 |
| 2.3 | 文件系统 | 使用 XFS 或 ext4,建议 XFS | df -T /pgdata | ☐ 通过 ☐ 不通过 | |
| 2.4 | 挂载参数 | 数据盘挂载参数:noatime,nodiratime | cat /etc/fstab | ☐ 通过 ☐ 不通过 | 提升 IO 性能 |
| 2.5 | 目录权限 | 所有 PG 相关目录属主为 postgres:postgres,权限 700 | ls -ld /pgdata /pgwal /pgbackup | ☐ 通过 ☐ 不通过 | 禁止其他用户访问 |
| 2.6 | 磁盘空间 | 数据盘使用率 < 70%,预留足够增长空间 | df -h | ☐ 通过 ☐ 不通过 |
三、内核参数与资源限制检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 3.1 | 共享内存参数 | shmmax≥物理内存一半,shmall=shmmax/4096 | sysctl kernel.shmmax kernel.shmall | ☐ 通过 ☐ 不通过 | 单位:字节 |
| 3.2 | 信号量参数 | kernel.sem=250 32000 100 128 | sysctl kernel.sem | ☐ 通过 ☐ 不通过 | |
| 3.3 | 文件句柄数 | fs.file-max≥6553600 | sysctl fs.file-max | ☐ 通过 ☐ 不通过 | |
| 3.4 | 网络参数 | ip_local_port_range=9000 65535 | sysctl net.ipv4.ip_local_port_range | ☐ 通过 ☐ 不通过 | |
| 3.5 | 用户文件句柄 | postgres 用户 nofile≥65536 | su - postgres -c "ulimit -n" | ☐ 通过 ☐ 不通过 | |
| 3.6 | 用户进程数 | postgres 用户 nproc≥65536 | su - postgres -c "ulimit -u" | ☐ 通过 ☐ 不通过 | |
| 3.7 | 内存锁定 | postgres 用户 memlock=unlimited | su - postgres -c "ulimit -l" | ☐ 通过 ☐ 不通过 |
四、PostgreSQL 安装与初始化检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 | |
|---|---|---|---|---|---|---|
| 4.1 | 安装方式 | 官方 RPM/DEB 包或源码编译,禁止第三方不明包 | `rpm -qa | grep postgresql` | ☐ 通过 ☐ 不通过 | |
| 4.2 | 版本一致性 | 所有组件版本相同 | psql --version 和 pg_config --version | ☐ 通过 ☐ 不通过 | ||
| 4.3 | 必要扩展 | 已安装 contrib 包,包含 pg_stat_statements | `dnf list installed | grep postgresql-contrib` | ☐ 通过 ☐ 不通过 | |
| 4.4 | 初始化参数 | 字符集 UTF8,locale=en_US.UTF-8 | psql -c "SHOW server_encoding; SHOW lc_collate;" | ☐ 通过 ☐ 不通过 | 初始化后无法修改 | |
| 4.5 | 数据目录 | 数据目录指向正确挂载点 | psql -c "SHOW data_directory;" | ☐ 通过 ☐ 不通过 | ||
| 4.6 | WAL 目录 | WAL 目录指向独立磁盘 | psql -c "SHOW wal_directory;" | ☐ 通过 ☐ 不通过 |
五、核心配置参数检查(postgresql.conf)
5.1 连接与监听
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 5.1.1 | listen_addresses | 生产环境指定具体 IP,禁止 '*' | psql -c "SHOW listen_addresses;" | ☐ 通过 ☐ 不通过 | |
| 5.1.2 | port | 可修改为非默认端口增强安全 | psql -c "SHOW port;" | ☐ 通过 ☐ 不通过 | |
| 5.1.3 | max_connections | 根据业务需求设置,建议≤500 | psql -c "SHOW max_connections;" | ☐ 通过 ☐ 不通过 | 过高会消耗过多内存 |
5.2 内存配置(根据物理内存调整)
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 5.2.1 | shared_buffers | 物理内存的 1/4 | psql -c "SHOW shared_buffers;" | ☐ 通过 ☐ 不通过 | |
| 5.2.2 | work_mem | (物理内存 * 1/4)/max_connections | psql -c "SHOW work_mem;" | ☐ 通过 ☐ 不通过 | 每个操作的内存 |
| 5.2.3 | maintenance_work_mem | 物理内存的 1/16 | psql -c "SHOW maintenance_work_mem;" | ☐ 通过 ☐ 不通过 | 用于索引创建等 |
| 5.2.4 | effective_cache_size | 物理内存的 1/2 | psql -c "SHOW effective_cache_size;" | ☐ 通过 ☐ 不通过 | 查询优化器估算 |
| 5.2.5 | wal_buffers | 16MB | psql -c "SHOW wal_buffers;" | ☐ 通过 ☐ 不通过 |
5.3 WAL 与检查点
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 5.3.1 | wal_segment_size | 64MB 或 128MB | psql -c "SHOW wal_segment_size;" | ☐ 通过 ☐ 不通过 | 初始化后无法修改 |
| 5.3.2 | checkpoint_timeout | 30min | psql -c "SHOW checkpoint_timeout;" | ☐ 通过 ☐ 不通过 | |
| 5.3.3 | checkpoint_completion_target | 0.9 | psql -c "SHOW checkpoint_completion_target;" | ☐ 通过 ☐ 不通过 | 平滑 IO |
| 5.3.4 | wal_level | replica(高可用)或 logical(逻辑复制) | psql -c "SHOW wal_level;" | ☐ 通过 ☐ 不通过 |
5.4 日志配置
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 5.4.1 | logging_collector | on | psql -c "SHOW logging_collector;" | ☐ 通过 ☐ 不通过 | |
| 5.4.2 | log_min_duration_statement | 1000(记录慢查询) | psql -c "SHOW log_min_duration_statement;" | ☐ 通过 ☐ 不通过 | 单位:毫秒 |
| 5.4.3 | log_rotation_age | 7d | psql -c "SHOW log_rotation_age;" | ☐ 通过 ☐ 不通过 | |
| 5.4.4 | log_line_prefix | 包含时间、用户、数据库、PID | psql -c "SHOW log_line_prefix;" | ☐ 通过 ☐ 不通过 | 建议:'% t [% p]: [% l-1] user=% u,db=% d,app=% a ' |
5.5 其他重要参数
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 5.5.1 | timezone | Asia/Shanghai | psql -c "SHOW timezone;" | ☐ 通过 ☐ 不通过 | |
| 5.5.2 | client_encoding | UTF8 | psql -c "SHOW client_encoding;" | ☐ 通过 ☐ 不通过 | |
| 5.5.3 | shared_preload_libraries | 包含 pg_stat_statements | psql -c "SHOW shared_preload_libraries;" | ☐ 通过 ☐ 不通过 |
六、安全与认证配置检查(pg_hba.conf)
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 6.1 | 本地认证 | 使用 peer 或 scram-sha-256 | grep 'local' /var/lib/pgsql/18/data/pg_hba.conf | ☐ 通过 ☐ 不通过 | 禁止 trust |
| 6.2 | 远程认证 | 使用 scram-sha-256,限制 IP 范围 | grep 'host' /var/lib/pgsql/18/data/pg_hba.conf | ☐ 通过 ☐ 不通过 | 禁止 0.0.0.0/0 |
| 6.3 | superuser 访问 | 禁止超级用户远程登录 | grep 'postgres' /var/lib/pgsql/18/data/pg_hba.conf | ☐ 通过 ☐ 不通过 | |
| 6.4 | 密码加密方式 | scram-sha-256 | psql -c "SHOW password_encryption;" | ☐ 通过 ☐ 不通过 | |
| 6.5 | postgres 密码 | 已设置强密码 | psql -c "SELECT usename, passwd FROM pg_shadow WHERE usename='postgres';" | ☐ 通过 ☐ 不通过 | passwd 不为空 |
七、服务与自启动检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 | |
|---|---|---|---|---|---|---|
| 7.1 | 服务状态 | active (running) | systemctl status postgresql-18 | ☐ 通过 ☐ 不通过 | ||
| 7.2 | 自启动配置 | enabled | systemctl is-enabled postgresql-18 | ☐ 通过 ☐ 不通过 | ||
| 7.3 | 服务重启 | 重启后能正常启动 | systemctl restart postgresql-18 | ☐ 通过 ☐ 不通过 | ||
| 7.4 | 进程属主 | 所有 PG 进程属主为 postgres | `ps aux | grep postgres` | ☐ 通过 ☐ 不通过 | 禁止 root 运行 |
八、功能验证与性能基线检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 8.1 | 本地连接 | 能正常连接数据库 | su - postgres -c "psql -c 'SELECT version();'" | ☐ 通过 ☐ 不通过 | |
| 8.2 | 远程连接 | 应用服务器能正常连接 | psql -h <服务器IP> -p 5432 -U <应用用户> -d <数据库名> | ☐ 通过 ☐ 不通过 | |
| 8.3 | 基本操作 | 能创建数据库、表,插入查询数据 | 执行简单 SQL 测试 | ☐ 通过 ☐ 不通过 | |
| 8.4 | 扩展功能 | pg_stat_statements 正常工作 | psql -c "CREATE EXTENSION IF NOT EXISTS pg_stat_statements; SELECT * FROM pg_stat_statements LIMIT 1;" | ☐ 通过 ☐ 不通过 | |
| 8.5 | 性能基线 | 使用 pgbench 进行基准测试 | pgbench -i -s 10 postgres && pgbench -c 10 -j 2 -T 60 postgres | ☐ 通过 ☐ 不通过 | 记录 TPS 值 |
九、备份与恢复准备检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 9.1 | 归档模式 | 已开启归档 | psql -c "SHOW archive_mode; SHOW archive_command;" | ☐ 通过 ☐ 不通过 | 生产环境必须开启 |
| 9.2 | 备份工具 | 已安装 pg_basebackup 或第三方备份工具 | pg_basebackup --version | ☐ 通过 ☐ 不通过 | |
| 9.3 | 备份脚本 | 已编写自动备份脚本并测试 | 执行备份脚本验证 | ☐ 通过 ☐ 不通过 | |
| 9.4 | 恢复测试 | 已完成至少一次完整恢复测试 | 验证恢复后数据完整性 | ☐ 通过 ☐ 不通过 |
十、监控与运维准备检查
| 序号 | 检查项 | 预期结果 | 验证命令 | 状态 | 备注 |
|---|---|---|---|---|---|
| 10.1 | 系统监控 | 已配置 CPU、内存、磁盘、网络监控 | 查看监控平台 | ☐ 通过 ☐ 不通过 | |
| 10.2 | 数据库监控 | 已配置 PG 专用监控(如 Prometheus+Grafana) | 查看监控指标 | ☐ 通过 ☐ 不通过 | |
| 10.3 | 告警配置 | 已配置关键指标告警(磁盘使用率、连接数、慢查询) | 查看告警规则 | ☐ 通过 ☐ 不通过 | |
| 10.4 | 运维文档 | 已编写安装、备份、恢复、故障处理文档 | 检查文档完整性 | ☐ 通过 ☐ 不通过 |
重要注意事项
- 所有配置修改后必须重启数据库服务才能生效
- 生产环境禁止直接修改配置文件,应先在测试环境验证
- 建议定期(每季度)根据业务增长情况调整内存参数
- 所有密码必须使用强密码,定期更换
- 备份策略必须包含全量备份 + 增量备份,并定期进行恢复测试
今天我们详细讲解了 PostgreSQL 的安装全过程,从操作系统配置到数据库参数调整,最后介绍了生产环境安装验收检查相关内容,每一步都给出了具体的命令和建议。大家可以按照今天的内容一步步操作,相信都能成功安装 PostgreSQL。
下一期,我们将学习 PostgreSQL 的目录结构,后台进程,权限体系结构等,别忘了订阅、点赞和分享。




