Debian 上 PostgreSQL 的升级与维护指南
一 升级总览与准备
sudo -u postgres pg_dumpall > /path/to/backup.sql。sudo -u postgres psql -c "SELECT version();"。二 小版本升级步骤 Debian
sudo apt updatesudo apt install --only-upgrade postgresql-<主版本号>(如:postgresql-14)sudo systemctl restart postgresqlsudo -u postgres psql -c "SELECT version();"三 大版本升级步骤 Debian
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.listwget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.ASC | sudo apt-key add -sudo apt updatesudo apt install postgresql-15sudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/mainsudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/main -D /var/lib/postgresql/15/main --checksudo -u postgres /usr/lib/postgresql/15/bin/pg_upgrade -b /usr/lib/postgresql/14/bin -B /usr/lib/postgresql/15/bin -d /var/lib/postgresql/14/main -D /var/lib/postgresql/15/main -o '-c config_file=/etc/postgresql/14/main/postgresql.conf' -O '-c config_file=/etc/postgresql/15/main/postgresql.conf'sudo -u postgres /usr/lib/postgresql/15/bin/vacuumdb --all --analyze-in-stagessudo -u postgres pg_dumpall -f /path/to/backup.sqlsudo -u postgres /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/mainsudo -u postgres psql -f /path/to/backup.sql postgres/etc/postgresql/<旧版本>/main/*.conf → /etc/postgresql/<新版本>/main/(注意端口、ssl、shared_preload_libraries 等差异)。sudo systemctl start postgresql@15-main(或 pg_ctlcluster 15 main start)。sudo -u postgres psql -c "SELECT version();"、检查关键业务、日志与复制状态。四 日常维护要点
sudo -u postgres pg_dumpall > /path/to/full_$(date +%F).sql(建议纳入定时任务与异地存储)。pg_dump -U <用户> -d <库名> -f <库>.sql;大型库可用 pg_dump | gzip 或 pg_basebackup(物理备份,配合 WAL 归档)。VACUUM/ANALYZE,升级后用 vacuumdb --all --analyze-in-stages 重建统计信息。pg_hba.conf 来源网段,仅开放必要端口,启用 SSL/TLS,按需配置防火墙。shared_buffers(常设为内存的约 25%)、work_mem、maintenance_work_mem、effective_cache_size、max_connections;合理设置 log_statement/log_min_duration_statement 以捕获慢查询。五 常见问题与排错
postgresql.conf 与 pg_hba.conf 语法、端口占用、数据目录权限(属主应为 postgres:postgres)。