搜索

第 5 章 Migration(迁移)

download PDF
本章提供有关迁移到 Red Hat Software Collections 3.7 中包含的组件版本的信息。

5.1. 迁移到 MariaDB 10.5

rh-mariadb105 Software Collection 适用于 Red Hat Enterprise Linux 7,其中包括 MariaDB 5.5 作为默认的 MySQL 实施。
rh-mariadb105 Software Collection 与来自核心系统的 mysqlmariadb 软件包没有冲突。除非安装了 *-syspaths 软件包(请参见如下),否则可以将 rh-mariadb105 Software Collection 与 mysqlmariadb 软件包一起安装。也可以同时运行这两个版本,但 my.cnf 文件中的端口号和套接字需要更改,以防止这些特定资源冲突。此外,还可以安装 rh-mariadb105 Software Collection,而 rh-mariadb103 Collection 仍然已安装,甚至在运行中。
rh-mariadb105 Software Collection 包括 rh-mariadb105-syspaths 软件包,它将安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-mariadb105*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-mariadb105* 软件包提供的二进制文件和脚本正常工作。请注意,*-syspaths 软件包与基础 Red Hat Enterprise Linux 系统以及 rh-mariadb103rh-mysql80 Software Collections 的对应软件包冲突。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide
推荐的从 MariaDB 5.5 MariaDB 10.5 的迁移路径是首先升级到 MariaDB 10.0,然后使用一个版本连续升级。详情请参阅之前的 Red Hat Software Collections 发行注记: 迁移到 MariaDB 10.0迁移到 MariaDB 10.1迁移到 MariaDB 10.2Migrating to MariaDB 10.3。请注意,MariaDB 10.4 不可用,因此您必须直接从 rh-mariadb103 迁移到 rh-mariadb105
注意
rh-mariadb105 Software Collection 支持使用 scl register 命令通过 NFS 挂载,也不支持使用 scl register 命令进行动态注册。

5.1.1. rh-mariadb103rh-mariadb105 Software Collections 之间的显著差异

MariaDB 10.3MariaDB 10.5 之间的显著变化包括:
  • MariaDB 现在默认使用 unix_socket 身份验证插件。该插件允许用户在通过本地 Unix 套接字文件连接到 MariaDB 时使用操作系统凭证。
  • MariaDB 添加了以 mariadb-* 命名的二进制代码,mysql* 符号链接指向 mariadb-* 的二进制代码。例如,mysqladminmysqlaccessmysqlshow 分别指向 mariadb-adminmariadb-accessmariadb-show 二进制代码。
  • SUPER 特权已被分成几个特权,以更好地与每个用户角色保持一致。因此,某些语句已更改了所需的权限。
  • 在并行复制中,slave_parallel_mode 现在默认为 optimistic
  • InnoDB 存储引擎中,以下变量的默认值已更改: innodb_adaptive_hash_index 改为 OFFinnodb_checksum_algorithm 改为 full_crc32
  • MariaDB 现在使用用于管理 MariaDB 命令历史记录(the .mysql_history 文件)的底层软件的 libedit 实施,而不是之前使用的 readline 库。此更改会影响直接使用 .mysql_history 文件的用户。注意 .mysql_history 是一个由 MariaDBMySQL 应用管理的文件,用户不应直接使用该文件。人类可读的外表是巧合。
    注意
    要提高安全性,您可以考虑不维护历史记录文件。禁用记录命令历史记录:
    1. 删除 .mysql_history 文件(如果存在的话)。
    2. 使用以下任一方法:
      • MYSQL_HISTFILE 变量设置为 /dev/null,并将此设置包含在任何 shell 启动文件中。
      • .mysql_history 文件更改为指向 /dev/null 的符号链接:
        ln -s /dev/null $HOME/.mysql_history
MariaDB Galera 集群 已升级到版本 4,有以下显著变化:
  • Galera 添加了一个新的流复制特性,其支持复制无限大小的事务。在执行流复制的过程中,集群以小片段复制事务。
  • Galera 现在完全支持全球交易 ID(GTID)。
  • /etc/my.cnf.d/galera.cnf 文件中的 wsrep_on 选项的默认值已从 1 改为 0, 以防止最终用户在不配置所需的附加选项的情况下启动 wsrep 复制。
MariaDB 10.5 中的 PAM 插件的更改包括:
  • MariaDB 10.5 添加了可插拔验证模块(PAM)插件的新版本。PAM 插件版本 2.0 使用单独的 setuid root 助手二进制文件来执行 PAM 身份验证,这使得 MariaDB 可以使用其他 PAM 模块。
  • 帮助程序二进制文件只能由 mysql 组中的用户执行。默认情况下,组只包含 mysql 用户。红帽建议管理员不要向 mysql 组添加更多用户,以防止无需通过这个助手工具进行节流或记录的情况下的密码猜测攻击。
  • MariaDB 10.5 中,可插拔验证模块(PAM)插件及其相关文件已移至一个新的子软件包 mariadb-pam。因此,在不使用对 MariaDB 进行PAM 验证的系统中不会引入新的 setuid root 二进制文件。
  • rh-mariadb105-mariadb-pam 软件包同时包含 PAM 插件版本:版本 2.0 是默认值,版本 1.0 作为 auth_pam_v1 共享对象库提供。
  • 默认情况下,RH-mariadb105-mariadb-pam 软件包不与 MariaDB 服务器一起安装。要使 PAM 身份验证插件在 MariaDB 10.5 中提供,请手动安装 rh-mariadb105-mariadb-pam 软件包。
如需更多信息,请参阅 MariaDB 10.4 中有关更改的 上游文档,以及 MariaDB 10.5 中的更改。另请参阅 升级到 MariaDB 10.4 的上游信息,以及 升级到 MariaDB 10.5

5.1.2. 从 rh-mariadb103 升级到 rh-mariadb105 Software Collection

重要
在升级前,备份所有数据,包括任何 MariaDB 数据库。
  1. 如果 rh-mariadb103 数据库服务器仍在运行,将它停止。
    在停止服务器前,将 innodb_fast_shutdown 选项设置为 0, 以便 InnoDB 执行缓慢关闭,包括完整清除和插入缓冲区合并。在 上游文档 中了解更多有关此选项的信息。这个操作的时间可能比正常关闭的时间要长。
    mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0"
    停止 rh-mariadb103 服务器:
    systemctl stop rh-mariadb103-mariadb.service
  2. 安装 rh-mariadb105 Software Collection,包括提供 mysql_upgrade 工具的子软件包:
    yum install rh-mariadb105-mariadb-server rh-mariadb105-mariadb-server-utils
    请注意,可以在仍然安装 rh-mariadb103 Software Collection 时安装 rh-mariadb105 Software Collection,因为这些集合不会冲突。
  3. 检查 rh-mariadb105 的配置,它存储在 /etc/opt/rh/rh-mariadb105/my.cnf 文件中,以及 /etc/opt/rh/rh-mariadb105/my.cnf.d/ 目录中。将其与存储在 /etc/opt/rh/ rh-mariadb103 /my.cnf 和 / etc/opt/rh/rh-mariadb103/my.cnf.d/ 中的 rh-mariadb103 配置进行比较,并根据需要进行调整。
  4. rh-mariadb103 Software Collection 的所有数据存储在 /var/opt/rh/rh-mariadb103/lib/mysql/ 目录中,除非进行了不同。将该目录的整个内容复制到 /var/opt/rh/rh-mariadb105/lib/mysql/。您可以移动内容,但要记住在继续升级前备份数据。确保数据归 mysql 用户和 SELinux 上下文所有。
  5. 启动 rh-mariadb105 数据库服务器:
    systemctl start rh-mariadb105-mariadb.service
  6. 执行数据迁移。请注意,由于在 MDEV-14637 中引入上游更改,需要运行 mysql_upgrade 命令。
    scl enable rh-mariadb105 mysql_upgrade
    如果 root 用户定义了非空密码(应该定义了密码),则需要使用 -p 选项调用 mysql_upgrade 工具并指定密码:
    scl enable rh-mariadb105 -- mysql_upgrade -p
    请注意,当安装 rh-mariadb105*-syspaths 软件包时,不需要 scl enable 命令。但是,*-syspaths 软件包与基础 Red Hat Enterprise Linux 系统以及 rh-mariadb103rh-mysql80 Software Collections 的对应软件包冲突。

5.2. 迁移到 MySQL 8.0

rh-mysql80 Software Collection 适用于 Red Hat Enterprise Linux 7,其中包括 MariaDB 5.5 作为默认的 MySQL 实施。
rh-mysql80 Software Collection 不与来自核心系统的 mysqlmariadb 软件包以及 rh-mysql*rh-mariadb* Software Collections 冲突,除非安装了 *-syspaths 软件包(请参阅以下)。也可以同时运行多个版本;但是,需要更改 my.cnf 文件中的端口号和套接字,以防止这些特定资源冲突。
请注意,只能从 MySQL 5.7 升级到 MySQL 8.0。如果您需要从早期版本升级,请首先升级到 MySQL 5.7。具体步骤请参阅 迁移到 MySQL 5.7

5.2.1. MySQL 5.7 和 MySQL 8.0 之间的显著差异

特定于 rh-mysql80 Software Collection 的不同

  • rh-mysql80 Software Collection 提供的 MySQL 8.0 服务器被配置为使用 mysql_native_password 作为默认身份验证插件,因为 Red Hat Enterprise Linux 7 中的客户端工具和库与 caching_sha2_password 方法不兼容,后者在上游 MySQL 8.0 版本中默认使用。
    要将默认身份验证插件更改为 caching_sha2_password,请编辑 /etc/opt/rh/rh-mysql80/my.cnf.d/mysql-default-authentication-plugin.cnf 文件:
    [mysqld]
    default_authentication_plugin=caching_sha2_password
    有关 caching_sha2_password 身份验证插件的更多信息,请参阅上游文档
  • rh-mysql80 Software Collection 包含 rh-mysql80-syspaths 软件包,它将安装 rh-mysql80-mysql-config-syspaths,rh-mysql80-mysql-syspaths, 和 rh-mysql80-mysql-syspaths 软件包。这些子软件包为二进制文件、脚本、手册页和其他提供系统范围的打包程序。安装 rh-mysql80*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-mysql80* 软件包提供的二进制文件和脚本正常工作。请注意,*-syspaths 软件包与基础 Red Hat Enterprise Linux 系统以及 rh-mariadb103rh-mariadb105 Software Collections 的对应软件包冲突。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide

MySQL 8.0中的常规更改

  • 在服务器启动期间,默认启用二进制日志记录。现在,log_bin 系统变量默认被设置为 ON,即使没有指定 --log-bin 选项。要禁用二进制日志记录,请在启动时指定 --skip-log-bin--disable-log-bin 选项。
  • 要接受 CREATE FUNCTION 语句,必须至少指定 DETERMINISTICNO SQLREADS SQL DATA 关键字,否则必须明确指定错误。
  • 与帐户管理相关的某些功能已被删除。即,使用 GRANT 语句修改特权分配以外的帐户属性,如身份验证、SSL 和 resource-limit 等。要在创建 account-creation 时建立上述属性,请使用 CREATE USER 语句。要修改这些属性,请使用 ALTER USER 语句。
  • 客户端中删除了某些与 SSL 相关的选项。使用 --ssl-mode=REQUIRED 选项,而不是 --ssl=1--enable-ssl。使用 --ssl-mode=DISABLED 选项,而不是 --ssl=0--skip-ssl--disable-ssl。使用 --ssl-mode=VERIFY_IDENTITY 选项而不是 --ssl-verify-server-cert 选项。请注意,这些选项在服务器端保持不变。
  • 默认字符集已从 latin1 改为 utf8mb4
  • utf8 字符集目前是 utf8mb3 的别名,但将来它将成为 utf8mb4 的引用。要防止不确定性,请为字符集引用(而不是 utf8)明确指定 utf8 mb4
  • SET 以外的声明中设置用户变量已被弃用。
  • log_syslog 变量之前配置了到系统日志的错误日志记录,它已被删除。
  • 引入了对空间数据支持的某些不兼容的更改。
  • GROUP BY 子句的已弃用的 ASCDESC 限定符已被删除。要生成指定的排序顺序,请提供 ORDER BY 子句。
有关 MySQL 8.0 与早期版本相比的详细更改,请参阅上游文档: MySQL 8.0 中的新内容,以及对 MySQL 8.0 的升级更改

5.2.2. 升级到 rh-mysql80 Software Collection

重要
在升级前,备份所有数据,包括任何 MySQL 数据库。
  1. 安装 rh-mysql80 Software Collection。
    yum install rh-mysql80-mysql-server
  2. 检查 rh-mysql80 的配置,它存储在 /etc/opt/rh/rh-mysql80/my.cnf 文件中,以及 /etc/opt/rh/rh-mysql80/my.cnf.d/ 目录中。将它与存储在 /etc/opt/rh/ rh-mysql57 /my.cnf 和 /etc/opt/rh/rh-mysql57 /my.cnf.d/ 中的 rh-mysql57/my.cnf.d/ 的配置进行比较,并在需要时进行调整。
  3. 如果 rh-mysql57 数据库服务器仍在运行,请停止它。
    systemctl stop rh-mysql57-mysqld.service
  4. rh-mysql57 Software Collection 的所有数据存储在 /var/opt/rh/rh-mysql57/lib/mysql/ 目录中。将该目录的整个内容复制到 /var/opt/rh/rh-mysql80/lib/mysql/。您还可以移动内容,但记得在继续升级前备份数据。
  5. 启动 rh-mysql80 数据库服务器。
    systemctl start rh-mysql80-mysqld.service
  6. 执行数据迁移。
    scl enable rh-mysql80 mysql_upgrade
    如果 root 用户定义了非空密码(应该定义了密码),则需要使用 -p 选项调用 mysql_upgrade 工具并指定密码。
    scl enable rh-mysql80 -- mysql_upgrade -p
    请注意,当安装 rh-mysql80*-syspaths 软件包时,不需要 scl enable 命令。但是,*-syspaths 软件包与基础 Red Hat Enterprise Linux 系统以及 rh-mariadb103rh-mariadb105 Software Collections 的对应软件包冲突。

5.3. 迁移到 PostgreSQL 13

Red Hat Software Collections 3.7 带有 PostgreSQL 13,仅适用于 Red Hat Enterprise Linux 7。rh-postgresql13 Software Collection 可以与 PostgreSQL 的基本或任何 PostgreSQL Software Collection 并行安装在同一台机器上。也可以同时在一台机器上运行多个 PostgreSQL 版本,但您需要使用不同的端口或 IP 地址并调整 SELinux 策略。
rh-postgresql13 Software Collection 包括 rh-postgresql13-syspaths 软件包,它安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-postgresql13*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-postgresql13* 软件包提供的二进制文件和脚本正常工作。请注意,*-syspaths 软件包与基本 Red Hat Enterprise Linux 系统中的对应软件包冲突。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide
重要
在迁移到 PostgreSQL 13 之前,请查看 PostgreSQL 13 的上游兼容性说明。
如果在容器中升级 PostgreSQL 数据库,请参阅 特定于容器的说明
下表提供了由 postgresql 软件包提供的 Red Hat Enterprise Linux 7 系统版本以及 rh- postgresql 12rh-postgresql13 Software Collections 中的不同路径的概述。
表 5.1. PostgreSQL 路径中的 Diferences
内容postgresqlrh-postgresql12rh-postgresql13
可执行文件/usr/bin//opt/rh/rh-postgresql12/root/usr/bin//opt/rh/rh-postgresql13/root/usr/bin/
libraries/usr/lib64//opt/rh/rh-postgresql12/root/usr/lib64//opt/rh/rh-postgresql13/root/usr/lib64/
Documentation/usr/share/doc/postgresql/html//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql/html//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql/html/
PDF 文档/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql-docs/
contrib 文档/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql12/root/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql13/root/usr/share/doc/postgresql-contrib/
未安装未安装未安装
data/var/lib/pgsql/data//var/opt/rh/rh-postgresql12/lib/pgsql/data//var/opt/rh/rh-postgresql13/lib/pgsql/data/
备份区域/var/lib/pgsql/backups//var/opt/rh/rh-postgresql12/lib/pgsql/backups//var/opt/rh/rh-postgresql13/lib/pgsql/backups/
模板/usr/share/pgsql//opt/rh/rh-postgresql12/root/usr/share/pgsql//opt/rh/rh-postgresql13/root/usr/share/pgsql/
流程语言/usr/lib64/pgsql//opt/rh/rh-postgresql12/root/usr/lib64/pgsql//opt/rh/rh-postgresql13/root/usr/lib64/pgsql/
开发标头/usr/include/pgsql//opt/rh/rh-postgresql12/root/usr/include/pgsql//opt/rh/rh-postgresql13/root/usr/include/pgsql/
其他共享数据/usr/share/pgsql//opt/rh/rh-postgresql12/root/usr/share/pgsql//opt/rh/rh-postgresql13/root/usr/share/pgsql/
回归测试/usr/lib64/pgsql/test/regress/ (in the -test package)/opt/rh/rh-postgresql12/root/usr/lib64/pgsql/test/regress/ (in the -test package)/opt/rh/rh-postgresql13/root/usr/lib64/pgsql/test/regress/ (in the -test package)

5.3.1. 从 Red Hat Enterprise Linux System 版本的 PostgreSQL 迁移到 PostgreSQL 13 Software Collection

Red Hat Enterprise Linux 7 带有 PostgreSQL 9.2。要将数据从 PostgreSQL 的 Red Hat Enterprise Linux 系统版本迁移到 rh-postgresql13 Software Collection,您可以使用 pg_upgrade 工具(推荐)执行快速升级,或使用 SQL 命令将数据库数据转储到文本文件中,并在新数据库中导入它。请注意,第二个方法通常非常慢,可能需要手动修复;有关此升级方法的更多信息,请参阅 PostgreSQL 文档
重要
在将数据从 PostgreSQL 的 Red Hat Enterprise Linux 系统版本迁移到 PostgreSQL 13 之前,请确保备份所有数据,包括 PostgreSQL 数据库文件,这些文件默认位于 /var/lib/pgsql/data/ 目录中。

过程 5.1. 使用 pg_upgrade 工具快速升级

要执行 PostgreSQL 服务器的快速升级,请完成以下步骤:
  1. 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以 root 用户身份在 shell 提示符后输入以下内容:
    systemctl stop postgresql.service
    要验证服务器是否正在运行,请键入:
    systemctl status postgresql.service
  2. 验证旧目录 /var/lib/pgsql/data/ 是否存在:
    file /var/lib/pgsql/data/
    并备份您的数据。
  3. 验证新数据目录 /var/opt/rh/rh-postgresql13/lib/pgsql/data/ 不存在:
    file /var/opt/rh/rh-postgresql13/lib/pgsql/data/
    如果您正在运行一个全新的 PostgreSQL 13 安装,则系统中不存在此目录。如果是,请以 root 用户身份运行以下命令备份它:
    mv /var/opt/rh/rh-postgresql13/lib/pgsql/data{,-scl-backup}
  4. root 用户身份运行以下命令来升级新服务器的数据库数据:
    scl enable rh-postgresql13 -- postgresql-setup --upgrade
    或者,您可以使用 /opt/rh/rh-postgresql13/root/usr/bin/postgresql-setup --upgrade 命令。
    请注意,您可以使用 --upgrade-from 选项来从不同版本的 PostgreSQL 升级。可以使用 --upgrade-ids 选项获得可能的升级场景列表。
    建议您读取生成的 /var/lib/pgsql/upgrade_rh-postgresql13-postgresql.log 日志文件,以了解升级过程中是否存在任何问题。
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql13-postgresql.service
    另外,建议您运行 analyze_new_cluster.sh 脚本,如下所示:
    su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
  6. 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以 root 用户身份运行以下命令:
    chkconfig postgresql off
    要启用 PostgreSQL 13 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql13-postgresql on
  7. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。

过程 5.2. 执行转储和恢复升级

要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
  1. root 用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:
    systemctl start postgresql.service
  2. 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以 root 用户身份,输入:
    su - postgres -c 'pg_dumpall > ~/pgdump_file.sql'
  3. root 用户身份运行以下命令来停止旧服务器:
    systemctl stop postgresql.service
  4. root 用户身份初始化新服务器的数据目录:
    scl enable rh-postgresql13 -- postgresql-setup initdb
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql13-postgresql.service
  6. 从之前创建的 SQL 文件中导入数据:
    su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
  7. 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以 root 用户身份运行以下命令:
    chkconfig postgresql off
    要启用 PostgreSQL 13 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql13-postgresql on
  8. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。

5.3.2. 从 PostgreSQL 12 Software Collection 迁移到 PostgreSQL 13 Software Collection

要将数据从 rh-postgresql12 Software Collection 迁移到 rh-postgresql13 Collection,您可以使用 pg_upgrade 工具(推荐)执行快速升级,或使用 SQL 命令将数据库数据转储到文本文件中,并在新数据库中导入它。请注意,第二个方法通常非常慢,可能需要手动修复;有关此升级方法的更多信息,请参阅 PostgreSQL 文档
重要
在将数据从 PostgreSQL 12 迁移到 PostgreSQL 13 之前,请确保备份所有数据,包括 PostgreSQL 数据库文件,这些文件默认位于 /var/opt/rh/rh-postgresql12/lib/pgsql/data/ 目录中。

过程 5.3. 使用 pg_upgrade 工具快速升级

要执行 PostgreSQL 服务器的快速升级,请完成以下步骤:
  1. 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以 root 用户身份在 shell 提示符后输入以下内容:
    systemctl stop rh-postgresql12-postgresql.service
    要验证服务器是否正在运行,请键入:
    systemctl status rh-postgresql12-postgresql.service
  2. 验证旧目录 /var/opt/rh/rh-postgresql12/lib/pgsql/data/ 是否存在:
    file /var/opt/rh/rh-postgresql12/lib/pgsql/data/
    并备份您的数据。
  3. 验证新数据目录 /var/opt/rh/rh-postgresql13/lib/pgsql/data/ 不存在:
    file /var/opt/rh/rh-postgresql13/lib/pgsql/data/
    如果您正在运行一个全新的 PostgreSQL 13 安装,则系统中不存在此目录。如果是,请以 root 用户身份运行以下命令备份它:
    mv /var/opt/rh/rh-postgresql13/lib/pgsql/data{,-scl-backup}
  4. root 用户身份运行以下命令来升级新服务器的数据库数据:
    scl enable rh-postgresql13 -- postgresql-setup --upgrade --upgrade-from=rh-postgresql12-postgresql
    另外,您可以使用 /opt/rh/rh-postgresql13/root/usr/bin/postgresql-setup --upgrade --upgrade-from=rh-postgresql12-postgresql 命令。
    请注意,您可以使用 --upgrade-from 选项来从不同版本的 PostgreSQL 升级。可以使用 --upgrade-ids 选项获得可能的升级场景列表。
    建议您读取生成的 /var/lib/pgsql/upgrade_rh-postgresql13-postgresql.log 日志文件,以了解升级过程中是否存在任何问题。
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql13-postgresql.service
    另外,建议您运行 analyze_new_cluster.sh 脚本,如下所示:
    su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
  6. 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 12 服务器,请以 root 用户身份输入以下命令:
    chkconfig rh-postgresql12-postgreqsql off
    要启用 PostgreSQL 13 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql13-postgresql on
  7. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。

过程 5.4. 执行转储和恢复升级

要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
  1. root 用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:
    systemctl start rh-postgresql12-postgresql.service
  2. 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以 root 用户身份,输入:
    su - postgres -c 'scl enable rh-postgresql12 "pg_dumpall > ~/pgdump_file.sql"'
  3. root 用户身份运行以下命令来停止旧服务器:
    systemctl stop rh-postgresql12-postgresql.service
  4. root 用户身份初始化新服务器的数据目录:
    scl enable rh-postgresql13 -- postgresql-setup initdb
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql13-postgresql.service
  6. 从之前创建的 SQL 文件中导入数据:
    su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
  7. 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 12 服务器,请以 root 用户身份输入以下命令:
    chkconfig rh-postgresql12-postgresql off
    要启用 PostgreSQL 13 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql13-postgresql on
  8. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。

5.4. 迁移到 nginx 1.18

rh-nginx118 Software Collection 的根目录位于 /opt/rh/rh-nginx118/root/ 中。默认情况下,错误日志存储在 /var/opt/rh/rh-nginx118/log/nginx 中。
配置文件存储在 /etc/opt/rh/rh-nginx118/nginx/ 目录中。nginx 1.18 中的配置文件的语法相同,其格式与之前的 nginx Software Collections 相同。
/etc/opt/rh/rh-nginx118/nginx/default.d/ 目录中的配置文件(带有 .conf 扩展名)包含在端口 80 的默认服务器块配置中。
重要
在从 nginx 1.16 升级到 nginx 1.18 之前,请备份您的所有数据,包括位于 /opt/rh/nginx116/root/ tree 中的 web 页面,以及位于 /etc/opt/rh/nginx116/nginx/ 树中的配置文件。
如果您进行了任何特定的更改,如更改配置文件或设置 web 应用程序,在 /opt/rh/nginx116/root/ 树中,在新的 /opt/rh/rh-nginx118/root//etc/opt/rh/rh-nginx118/nginx/ 目录中复制这些更改。
您可以使用此流程直接从 nginx 1.12nginx 1.14 升级到 nginx 1.18。在这种情况下使用适当的路径。
有关官方 nginx 文档,请参阅 http://nginx.org/en/docs/

5.5. 迁移到 Redis 5

Redis 3.2rh-redis32 Software Collection 提供,主要是 Redis 4.0 的严格子集,这主要是 Redis 5.0 的一个严格子集。因此,从 3.2 升级到 5.0 时不应发生重大问题。
要将 Redis Cluster 升级到 5.0 版本,需要重启所有实例。

兼容性备注

  • RDB 文件格式已改变。Redis 5 能够读取所有早期版本的格式,但较早的版本能够读取 Redis 5 格式。
  • 自版本 4.0 起,Red Hat Redis Cluster 总线协议不再与 Redis 3.2 兼容。
  • 有关次版本的非后向性更改,请参阅 上游版本 4.0 和版本 5.0
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.