将数据库迁移到最新版本
本节介绍如何将 PostgreSQL 数据库升级到最新版本。如果您已在使用 PostgreSQL 14,则无需进行此迁移。
如果您要升级到最新的 SUSE Manager 版本,则当前使用的 PostgreSQL 必须是版本 13 或 14,具体取决于底层操作系统:
-
如果您运行的是 SUSE Linux Enterprise Server 15 SP3,请使用 PostgreSQL 13。
-
如果您运行的是 SUSE Linux Enterprise Server 15 SP4,请使用 PostgreSQL 14。
1. 准备升级
在开始升级前,准备现有 SUSE Manager 服务器并创建数据库备份。
PostgreSQL 将数据存储在 /var/lib/pgsql/data/
中。
-
检查活动 PostgreSQL 版本:
psql --version
-
检查活动 smdba 版本:
rpm -q smdba
PostgreSQL 14 需要
smdba
1.7.6 或更高版本。 -
备份数据库。有关备份的详细信息,请参见 备份和还原。
2. 升级 PostgreSQL
在每次进行迁移前都需创建数据库备份。 |
升级 PostgreSQL 的方式有两种:常规升级或快速升级:
常规升级会创建完整的数据库副本,因此需要两倍于现有数据库大小的可用空间。常规升级可能需要大量时间,具体取决于数据库大小和存储系统的速度。
快速升级只需要几分钟时间,并且几乎不会使用额外的磁盘空间。但是,如果快速升级失败,则必须通过备份来恢复数据库。快速升级可降低磁盘空间用尽的风险,但会增加数据丢失的风险(如果没有备份或备份无法重放)。常规升级会复制数据库文件,而不是在文件之间创建硬链接。
PostgreSQL 将数据存储在 /var/lib/pgsql/data/
中。
在进行数据库升级之前,请确保系统上存在 PostgreSQL 用户。 postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash |
-
备份数据库。有关备份的详细信息,请参见 备份和还原。
-
开始升级。运行脚本:
/usr/lib/susemanager/bin/pg-migrate-x-to-y.sh
-
升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。旧目录会重命名为
/var/lib/pgsql/data-pg12
或/var/lib/pgsql/data-pg10
,具体取决于您是从哪个版本升级的。
pg-migrate-x-to-y.sh
脚本会执行以下操作:
-
停止 spacewalk 服务
-
关闭正在运行的数据库
-
检查是否安装了最新的 PostgreSQL,并根据需要安装
-
从 PostgreSQL 的上一个版本切换到最新版本(作为新的默认数据库)
-
发起数据库迁移
-
创建已针对 SUSE Manager 优化的 PostgreSQL 配置文件
-
启动数据库和 spacewalk 服务
如果升级失败,迁移脚本会尝试将数据库恢复其原始状态。 |
-
备份数据库。如果没有已经过校验的数据库备份,切勿启动快速升级。有关备份的详细信息,请参见 备份和还原。
-
开始升级。运行脚本。
/usr/lib/susemanager/bin/pg-migrate-x-to-y.sh -f
-
升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。旧目录会重命名为
/var/lib/pgsql/data-pg12
或/var/lib/pgsql/data-pg10
,具体取决于您是从哪个版本升级的。