将数据库迁移到最新版本

本节介绍如何将 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/ 中。

过程:准备升级
  1. 检查活动 PostgreSQL 版本:

    psql --version
  2. 检查活动 smdba 版本:

    rpm -q smdba

    PostgreSQL 14 需要 smdba 1.7.6 或更高版本。

  3. 备份数据库。有关备份的详细信息,请参见 备份和还原

2. 升级 PostgreSQL

在每次进行迁移前都需创建数据库备份。

升级 PostgreSQL 的方式有两种:常规升级或快速升级:

常规升级会创建完整的数据库副本,因此需要两倍于现有数据库大小的可用空间。常规升级可能需要大量时间,具体取决于数据库大小和存储系统的速度。

快速升级只需要几分钟时间,并且几乎不会使用额外的磁盘空间。但是,如果快速升级失败,则必须通过备份来恢复数据库。快速升级可降低磁盘空间用尽的风险,但会增加数据丢失的风险(如果没有备份或备份无法重放)。常规升级会复制数据库文件,而不是在文件之间创建硬链接。

PostgreSQL 将数据存储在 /var/lib/pgsql/data/ 中。

在进行数据库升级之前,请确保系统上存在 PostgreSQL 用户。/etc/passwd 项应如下所示:

postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
过程:执行常规升级
  1. 备份数据库。有关备份的详细信息,请参见 备份和还原

  2. 开始升级。运行脚本:

    /usr/lib/susemanager/bin/pg-migrate-x-to-y.sh
  3. 升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。旧目录会重命名为 /var/lib/pgsql/data-pg12/var/lib/pgsql/data-pg10,具体取决于您是从哪个版本升级的。

pg-migrate-x-to-y.sh 脚本会执行以下操作:

  • 停止 spacewalk 服务

  • 关闭正在运行的数据库

  • 检查是否安装了最新的 PostgreSQL,并根据需要安装

  • 从 PostgreSQL 的上一个版本切换到最新版本(作为新的默认数据库)

  • 发起数据库迁移

  • 创建已针对 SUSE Manager 优化的 PostgreSQL 配置文件

  • 启动数据库和 spacewalk 服务

如果升级失败,迁移脚本会尝试将数据库恢复其原始状态。

过程:执行快速 PostgreSQL 升级
  1. 备份数据库。如果没有已经过校验的数据库备份,切勿启动快速升级。有关备份的详细信息,请参见 备份和还原

  2. 开始升级。运行脚本。

    /usr/lib/susemanager/bin/pg-migrate-x-to-y.sh -f
  3. 升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。旧目录会重命名为 /var/lib/pgsql/data-pg12/var/lib/pgsql/data-pg10,具体取决于您是从哪个版本升级的。