CentOS 上 PostgreSQL 升级与维护指南
一 升级总览与准备
pg_basebackup -D /backup/base -U postgres -P -Fp -Xs -Rpg_dumpall -U postgres > /backup/alldb.sqlsudo -u postgres psql -c "SELECT version();";梳理扩展、FDW、外部字典、自定义函数等兼容性。二 小版本升级步骤 CentOS
sudo systemctl stop postgresql-<主版本>(如 postgresql-14)sudo yum update postgresql<主版本>-server postgresql<主版本>-contribsudo systemctl start postgresql-<主版本>;sudo -u postgres psql -c "SELECT version();"sudo restorecon -R /var/lib/pgsql/<主版本>/data三 大版本升级步骤 CentOS
--link 硬链接以节省空间(升级完成前严禁回滚)。sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmsudo yum install -y postgresql15-serversudo /usr/pgsql-15/bin/postgresql-15-setup initdbsudo systemctl stop postgresql-14sudo -u postgres /usr/pgsql-15/bin/pg_upgrade \
-b /usr/pgsql-14/bin -B /usr/pgsql-15/bin \
-d /var/lib/pgsql/14/data -D /var/lib/pgsql/15/data \
--check
按提示修复扩展、参数、文件权限等问题后再继续。sudo -u postgres /usr/pgsql-15/bin/pg_upgrade \
-b /usr/pgsql-14/bin -B /usr/pgsql-15/bin \
-d /var/lib/pgsql/14/data -D /var/lib/pgsql/15/data
如需节省空间且确认可回滚窗口已过,可加 --link(升级完成前勿回滚)。sudo systemctl start postgresql-15sudo -u postgres /usr/pgsql-15/bin/vacuumdb --all --analyze-in-stagessudo -u postgres psql -c "SELECT version();",抽样检查表数量、扩展、复制槽、FDW 等。--link 时切勿在升级完成前回滚。sudo -u postgres pg_dumpall > /backup/alldb.sqlsudo /usr/pgsql-15/bin/postgresql-15-setup initdbsudo systemctl start postgresql-15sudo -u postgres psql -f /backup/alldb.sql postgres四 日常维护要点
pg_basebackup -D /backup/base -U postgres -P -Fp -Xs -R;定期在测试环境验证可恢复性。pg_dump/pg_dumpall 用于迁移、克隆与环境搭建;定时任务示例:
0 2 * * * pg_dump -U postgres dbname | gzip > /backup/db_$(date +\%F).sql.gzVACUUM ANALYZE,谨慎使用 VACUUM FULL(会锁表)。REINDEX(或 REINDEX CONCURRENTLY 降低影响)。pg_stat_activity、pg_stat_bgwriter、pg_stat_user_tables、pg_locks 等定位会话、阻塞、写入与表膨胀。log_destination='csvlog',logging_collector=on,log_min_duration_statement=1000(记录 >1s 慢 SQL),配合 pgBadger 做日志分析。pg_stat_statements 定位高频低效 SQL;用 EXPLAIN (ANALYZE) 优化执行计划。shared_buffers、work_mem、maintenance_work_mem 等关键参数(可借助 pgTune 做初版建议)。五 常见问题与排错清单
pg_upgrade --check 输出逐项修复(扩展版本、参数废弃、文件权限、第三方组件)。vacuumdb --all --analyze-in-stages。