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

本节介绍如何将 PostgreSQL 数据库从版本 9 升级到版本 10。如果您已在使用 PostgreSQL 10,则无需进行此迁移。

如果您要升级到最新的 SUSE Manager 版本,则当前使用的必须是 PostgreSQL 版本 10 或 12。如果使用的版本较早(如版本 9.6),在开始 SUSE Manager 迁移前必须将 PostgreSQL 迁移到版本 10。

如果您在 SUSE Manager 3.2 上运行 PostgreSQL 9.4,请参见产品文档,网址: https://documentation.suse.com/external-tree/en-us/suma/3.2/susemanager-best-practices/html/book.suma.best.practices/bp.sp.migration.html#sp.migration.postgresql。PostgreSQL 9.4 无法直接迁移到版本 10。

1. 准备升级

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

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

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

    psql --version

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

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

  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-96-to-10.sh
  3. 升级成功完成后,您便可以放心删除旧数据库目录,并回收用掉的磁盘空间。 旧目录会重命名为 /var/lib/pgsql/data-pg96

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

  • 停止 spacewalk 服务

  • 关闭正在运行的数据库

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

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

  • 发起数据库迁移

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

  • 启动数据库和 spacewalk 服务

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

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

  2. 开始升级:

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