将数据库从版本 10 迁移到 12

本节介绍如何将 PostgreSQL 数据库从版本 10 升级到版本 12。如果您已在使用 PostgreSQL 12,则无需进行此迁移。如果使用的版本较早(如版本 9.6),请参见 将数据库从版本 9 迁移到 10

如果您要升级到最新的 SUSE Manager 版本,则当前使用的必须是 PostgreSQL 版本 10 或 12。将 SUSE Manager 服务器升级到版本 4.1 后,便可迁移到 PostgreSQL 版本 12。

1. 准备升级

在开始升级前,准备现有 SUSE Manager 服务器并创建数据库备份。

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

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

    psql --version

    如果您使用的是 PostgreSQL 10,则可升级到 PostgreSQL 12。

    如果您已在使用 PostgreSQL 版本 12,则无需进行此迁移。

  2. 检查活动 smdba 版本:

    rpm -q smdba

    PostgreSQL 10 需要 smdba 1.6.2 或更高版本。

  3. 备份数据库。 有关备份的详细信息,请参见 Backup and Restore

2. 升级 PostgreSQL

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

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

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

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

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

过程:执行常规升级
  1. 备份数据库。 有关备份的详细信息,请参见 Backup and Restore

  2. 开始升级:

    /usr/lib/susemanager/bin/pg-migrate-10-to-12.sh
  3. 升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。 旧目录会重命名为 /var/lib/pgsql/data-pg10

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

  • 停止 spacewalk 服务

  • 关闭正在运行的数据库

  • 检查是否安装了 PostgreSQL 12,并根据需要安装

  • 从 PostgreSQL 10 切换到 PostgreSQL 12(作为新的默认数据库)

  • 发起数据库迁移

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

  • 启动数据库和 spacewalk 服务

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

过程:执行快速 PostgreSQL 升级
  1. 备份数据库。 如果没有已经过校验的数据库备份,切勿开始快速升级。有关备份的详细信息,请参见 Backup and Restore

  2. 开始升级:

    /usr/lib/susemanager/bin/pg-migrate-10-to-12.sh fast
  3. 升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。 旧目录会重命名为 /var/lib/pgsql/data-pg10