ubuntu

Ubuntu中PostgreSQL版本升级指南

小樊
50
2025-10-06 06:00:51
栏目: 云计算

Ubuntu中PostgreSQL版本升级指南

一、升级前准备

1. 备份所有数据库

升级前必须备份数据,防止操作失误导致数据丢失。使用pg_dumpall工具备份所有数据库(包括角色、表空间等信息):

sudo -u postgres pg_dumpall > /path/to/backup.sql

建议将备份文件存储到外部存储设备或云存储中。

2. 检查当前版本

确认当前PostgreSQL版本,确保升级路径符合官方要求(如12→13→14→15,不能跨大版本跳跃升级):

sudo -u postgres psql -c "SELECT version();"

3. 确认兼容性

访问PostgreSQL官方文档,查看目标版本与当前版本的兼容性要求(如扩展支持、配置文件变更、SQL语法变化)。特别注意:

二、添加官方APT仓库(可选但推荐)

Ubuntu默认仓库的PostgreSQL版本可能滞后,建议添加官方PGDG(PostgreSQL Global Development Group)仓库以获取最新版本:

# 创建PGDG仓库文件
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# 导入PGDG GPG密钥(验证软件包完整性)
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 更新包列表
sudo apt update

三、执行升级

根据版本类型(小版本/大版本)选择不同的升级方式:

1. 小版本升级(如14.5→14.7)

小版本升级通常无需修改数据格式,直接通过apt升级即可:

# 停止PostgreSQL服务
sudo systemctl stop postgresql
# 升级指定主版本的PostgreSQL(如14)
sudo apt install --only-upgrade postgresql-14
# 启动服务
sudo systemctl start postgresql

2. 大版本升级(如14.x→15.x)

大版本升级需要修改数据格式,推荐使用pg_upgrade工具(快速)或逻辑转储(安全):

方法一:使用pg_upgrade(推荐)
# 停止旧版本服务
sudo systemctl stop postgresql

# 安装新版本PostgreSQL(如15)
sudo apt install postgresql-15

# 初始化新版本数据库集群(默认目录:/var/lib/postgresql/15/main)
sudo /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/main/

# 执行升级检查(验证兼容性)
sudo -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 \         # 新版本数据目录
  --check

# 若检查通过,执行实际升级
sudo -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-stages

# 启动新版本服务
sudo systemctl start postgresql@15-main
方法二:逻辑转储(跨版本兼容性更强)
# 导出旧数据库
sudo -u postgres pg_dumpall -f /path/to/backup.sql

# 删除旧版本集群(谨慎操作,确保备份已完成)
sudo pg_dropcluster 14 main --stop

# 安装新版本PostgreSQL(如15)
sudo apt install postgresql-15

# 初始化新版本数据库集群
sudo /usr/lib/postgresql/15/bin/initdb -D /var/lib/postgresql/15/main/

# 启动新版本服务
sudo systemctl start postgresql@15-main

# 导入数据
sudo -u postgres psql -f /path/to/backup.sql postgres

四、升级后配置与验证

1. 检查版本

确认新版本已生效:

psql -U postgres -c "SELECT version();"

2. 配置文件调整

3. 清理旧版本(可选)

确认新版本运行正常后,卸载旧版本以释放磁盘空间:

sudo apt remove --purge postgresql-14 postgresql-server-dev-14
sudo apt autoremove

五、常见问题解决

通过以上步骤,可安全完成Ubuntu环境中PostgreSQL的版本升级。升级前务必做好备份,并严格遵循官方文档的要求。

0
看了该问题的人还看了