搜索

第 5 章 Migration(迁移)

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

5.1. 迁移到 MariaDB 10.3

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

5.1.1. rh-mariadb102rh-mariadb103 Software Collections 之间的显著差异

  • mariadb-bench 子软件包已被删除。
  • 默认允许插件成熟度等级已改为比服务器成熟度低 一 个等级。因此,在之前使用的,但成熟度较低的插件将不再加载。
有关 MariaDB 10.3 的更多信息,请参阅 上游文档有关 更改 和有关 升级 的信息。

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

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

5.2. 迁移到 MariaDB 10.2

Red Hat Enterprise Linux 6 包含 MySQL 5.1,作为默认的 MySQL 实现。Red Hat Enterprise Linux 7 包括 MariaDB 5.5 作为默认的 MySQL 实现。MariaDB 是社区开发的 MySQL 的简易替代品。自 Red Hat Software Collections 2.2 开始,MariaDB 10.1 作为一个 Software Collection 提供;Red Hat Software Collections 3.3 由 MariaDB 10.2 提供。
rh-mariadb102 Software Collection 用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7,与来自核心系统的 mysqlmariadb 软件包不会冲突。除非安装了 *-syspaths 软件包(请参阅以下),否则可以将 rh-mariadb102 Software Collection 与 mysqlmariadb 软件包一起安装。也可以同时运行这两个版本,但 my.cnf 文件中的端口号和套接字需要更改,以防止这些特定资源冲突。此外,还可以安装 rh-mariadb102 Software Collection,而 rh-mariadb101 Collection 仍已安装甚至正在运行。
推荐的从 MariaDB 5.5 MariaDB 10.3 的迁移路径是首先升级到 MariaDB 10.0,然后使用一个版本连续升级。详情请参阅早期的 Red Hat Software Collections 发行注记: Migrating to MariaDB 10.0Migrating to MariaDB 10.1 中的说明。
有关 MariaDB 10.2 的更多信息,请参阅上游文档( 版本 10.2 )和有关 升级 的信息。
注意
rh-mariadb102 Software Collection 支持使用 scl register 命令通过 NFS 挂载,也不支持使用 scl register 命令进行动态注册。

5.2.1. rh-mariadb101rh-mariadb102 Software Collections 之间的显著差异

MariaDB 10.2 的主要变化在 Red Hat Software Collections 3.0 发行注记 中进行了描述。
MariaDB 10.2 开始,更改了 SQL_MODE 变量的行为 ; 详情请查看 上游文档
多个选项更改了其默认值,或者已弃用或删除。详情请查看 从 MariaDB 10.1 迁移到 MariaDB 10.2 Software Collection 的知识库文章。
rh-mariadb102 Software Collection 包括 rh-mariadb102-syspaths 软件包,它将安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-mariadb102*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-mariadb102* 软件包提供的二进制文件和脚本正常工作。请注意,*-syspaths 软件包与来自基础 Red Hat Enterprise Linux 系统和 rh-mysql80 Software Collection 的对应软件包冲突。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide

5.2.2. 从 rh-mariadb101 升级到 rh-mariadb102 Software Collection

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

5.3. 迁移到 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第 5.4 节 “迁移到 MySQL 5.7” 中提供了有关如何升级到 MySQL 5.7 的说明。

5.3.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-mariadb102rh-mariadb103 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.3.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-mariadb102rh-mariadb103 Software Collections 的对应软件包冲突。

5.4. 迁移到 MySQL 5.7

Red Hat Enterprise Linux 6 包含 MySQL 5.1,作为默认的 MySQL 实现。Red Hat Enterprise Linux 7 包括 MariaDB 5.5 作为默认的 MySQL 实现。除了这些基本版本外,自 Red Hat Software Collections 2.0 开始,MySQL 5.6 也可作为 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 的 Software Collection 提供。 文档
rh- mysql 57 Software Collection 适用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7,都不能与来自核心系统的 mysql mariadb 软件包冲突,也无法与 rh-mysql56 Software Collection 一起安装 rh-mysql 57 Software Collection。也可以同时运行多个版本;但是,需要更改 my.cnf 文件中的端口号和套接字,以防止这些特定资源冲突。
请注意,只能从 MySQL 5.6 升级到 MySQL 5.7。如果您需要从早期版本升级,请首先升级到 MySQL 5.6Red Hat Software Collections 2.2 发行注记中 提供了有关如何升级到 MySQL 5.6 的说明。

5.4.1. MySQL 5.6 和 MySQL 5.7 之间的显著差异

  • rh-mysql57 Software Collection 不包含 mysql-bench 子软件包。
  • MySQL 5.7.7 起,默认的 SQL 模式包含 NO_AUTO_CREATE_USER。因此,需要使用 CREATE USER 语句创建 MySQL 帐户,因为 GRANT 语句不再默认创建用户。详情请查看上游文档。http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html
有关 MySQL 5.7 与早期版本相比的详细更改,请参阅 上游文档: MySQL 5.7 中的新内容并将升级更改为 MySQL 5.7

5.4.2. 升级到 rh-mysql57 Software Collection

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

5.5. 迁移到 MongoDB 3.6

Red Hat Software Collections 3.3 带有 MongoDB 3.6,由 rh-mongodb36 Software Collection 提供,仅适用于 Red Hat Enterprise Linux 7。
rh-mongodb36 Software Collection 包括 rh-mongodb36-syspaths 软件包,它安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-mongodb36*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-mongodb36* 软件包提供的二进制文件和脚本正常工作。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide

5.5.1. MongoDB 3.4 和 MongoDB 3.6 之间的显著差异

常规更改

rh-mongodb36 Software Collection 包括以下显著的常规更改:
  • 在 Non-Uniform Access Memory (NUMA)硬件上,可以将 systemd 服务配置为使用 numactl 命令启动;请参阅 上游建议。要将 MongoDBnumactl 命令搭配使用,您需要安装 numactl RPM 软件包,并相应地更改 /etc/opt/rh/rh-mongodb36/sysconfig/mongod/etc/opt/rh/rh-mongodb36/sysconfig/mongos 配置文件。

兼容性更改

MongoDB 3.6 包括各种小更改,可能会影响与以前版本的 MongoDB 的兼容性:
  • MongoDB 二进制文件现在默认绑定到 localhost,因此需要明确启用侦听不同的 IP 地址。请注意,这已经是 MongoDB Software Collections 发布的 systemd 服务的默认行为。
  • MONGODB-CR 身份验证机制已弃用。对于由 3.0 之前的 MongoDB 版本创建的用户的数据库,请将身份验证模式升级到 SCRAM
  • HTTP 接口和 REST API 已被删除
  • 副本集中的仲裁程序具有优先级 0
  • master-slave 复制已被弃用
有关 MongoDB 3.6 的详细兼容性更改,请参阅 上游发行注记

后向兼容功能

以下 MongoDB 3.6 功能向后兼容,需要使用 featureCompatibilityVersion 命令将版本 设置为 3.6:
  • 集合的 UUID
  • $jsonschema 文档验证
  • 更改流
  • 块了解第二个工具
  • 查看使用版本 3.6 查询功能的定义、文档验证器和部分索引过滤器
  • 会话和可重试写入
  • 带有 authenticationRestrictions的用户和角色
有关 MongoDB 3.6 中向后兼容更改的详情,请查看 上游发行注记

5.5.2. 从 rh-mongodb34 升级到 rh-mongodb36 Software Collection

重要
在从 rh-mongodb34 迁移到 rh-mongodb36 Software Collection 之前,请备份所有数据,包括任何 MongoDB 数据库,这些数据库默认存储在 /var/opt/rh/rh-mongodb34/lib/mongodb/ 目录中。另外,请参阅 兼容性更改 以确保应用程序和部署与 MongoDB 3.6 兼容。
要升级到 rh-mongodb36 Software Collection,请执行以下步骤。
  1. 要进行升级,rh-mongodb34 实例必须将 featureCompatibilityVersion 设置为 3.4。检查 featureCompatibilityVersion:
    ~]$ scl enable rh-mongodb34 'mongo --host localhost --port 27017 admin' --eval 'db.adminCommand({getParameter: 1, featureCompatibilityVersion: 1})'
    如果 mongod 服务器配置有启用的访问控制,请在 mongo 命令中添加 --username--password 选项。
  2. rh-mongodb36 Software Collections 安装 MongoDB 服务器和 shell:
    ~]# yum install rh-mongodb36
  3. 停止 MongoDB 3.4 服务器:
    ~]# systemctl stop rh-mongodb34-mongod.service
  4. 将数据复制到新位置:
    ~]# cp -a /var/opt/rh/rh-mongodb34/lib/mongodb/* /var/opt/rh/rh-mongodb36/lib/mongodb/
  5. /etc/opt/rh/rh-mongodb36/mongod.conf 文件中配置 rh-mongodb36-mongod 守护进程。
  6. 启动 MongoDB 3.6 服务器:
    ~]# systemctl start rh-mongodb36-mongod.service
  7. 启用向后不兼容的功能:
    ~]$ scl enable rh-mongodb36 'mongo --host localhost --port 27017 admin' --eval 'db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )'
    如果 mongod 服务器配置有启用的访问控制,请在 mongo 命令中添加 --username--password 选项。
    注意
    升级后,建议首先运行部署,而不为刻录的周期启用后不兼容的功能,以最大程度降低降级的可能性。
有关升级的详情,请查看 上游发行注记
有关升级 Replica Set 的详情,请参考上游 MongoDB Manual
有关升级 Sharded 集群的详情,请参考上游 MongoDB Manual

5.6. 迁移到 MongoDB 3.4

rh-mongodb34 Software Collection 适用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7,提供 MongoDB 3.4

5.6.1. MongoDB 3.2 和 MongoDB 3.4 之间的显著差异

常规更改

rh-mongodb34 Software Collection 引进了各种常规更改。知识库文章 Migrating from MongoDB 3.2 to MongoDB 3.4 一书中列出了主要变化。有关详细更改,请参阅 上游发行注记
此外,这个 Software Collection 中包含 rh-mongodb34-syspaths 软件包,它安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-mongodb34*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-mongodb34* 软件包提供的二进制文件和脚本正常工作。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide

兼容性更改

MongoDB 3.4 包括各种小更改,可能会影响与以前版本的 MongoDB 的兼容性。详情请查看 从 MongoDB 3.2 迁移到 MongoDB 3.4 和上游文档 的知识库文章。https://docs.mongodb.com/manual/release-notes/3.4-compatibility/
值得注意的是,以下 MongoDB 3.4 功能会向后兼容,需要使用 featureCompatibilityVersion 命令将版本设置为 3.4
  • 支持从现有集合或其他视图中创建只读视图
  • 索引版本 v:2,它添加了对协调、十进制数据和区分大小写的索引的支持
  • 支持带有新 十进制数据类型 的十进制 128 格式
有关 MongoDB 3.4 中向后兼容更改的详情,请查看 上游发行注记

5.6.2. 从 rh-mongodb32 升级到 rh-mongodb34 Software Collection

请注意,在升级到 MongoDB 3.4 并使用新功能启动后,无法降级到 3.2.7 或更早版本。您只能降级为 3.2.8 或更高版本。
重要
在从 rh-mongodb32 迁移到 rh-mongodb34 Software Collection 之前,请备份所有数据,包括任何 MongoDB 数据库,这些数据库默认存储在 /var/opt/rh/rh-mongodb32/lib/mongodb/ 目录中。另外,请参阅兼容性更改,以确保应用程序和部署与 MongoDB 3.4 兼容。
要升级到 rh-mongodb34 Software Collection,请执行以下步骤:
  1. rh-mongodb34 Software Collections 安装 MongoDB 服务器和 shell:
    ~]# yum install rh-mongodb34
  2. 停止 MongoDB 3.2 服务器:
    ~]# systemctl stop rh-mongodb32-mongod.service
    在 Red Hat Enterprise Linux 6 系统上使用 服务 rh-mongodb32-mongodb stop 命令。
  3. 将数据复制到新位置:
    ~]# cp -a /var/opt/rh/rh-mongodb32/lib/mongodb/* /var/opt/rh/rh-mongodb34/lib/mongodb/
  4. /etc/opt/rh/rh-mongodb34/mongod.conf 文件中配置 rh-mongodb34-mongod 守护进程。
  5. 启动 MongoDB 3.4 服务器:
    ~]# systemctl start rh-mongodb34-mongod.service
    在 Red Hat Enterprise Linux 6 上,改为使用服务 rh-mongodb34-mongodb start 命令。
  6. 启用向后兼容的功能:
    ~]$ scl enable rh-mongodb34 'mongo --host localhost --port 27017 admin' --eval 'db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )'
    如果 mongod 服务器配置有启用的访问控制,请将 --username--password 选项添加到 mongo 命令。
    请注意,建议您在升级后运行部署,而不先启用这些功能。
有关升级的详情,请查看 上游发行注记
有关升级 Replica Set 的详情,请参考上游 MongoDB Manual
有关升级 Sharded 集群的详情,请参考上游 MongoDB Manual

5.7. 迁移到 PostgreSQL 10

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

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

Red Hat Enterprise Linux 7 带有 PostgreSQL 9.2。要将数据从 PostgreSQL 的 Red Hat Enterprise Linux 系统版本迁移到 rh-postgresql10 Software Collection,您可以使用 pg_upgrade 工具(推荐)执行快速升级,或使用 SQL 命令将数据库数据转储到文本文件中,并在新数据库中导入它。请注意,第二个方法通常非常慢,可能需要手动修复;有关此升级方法的更多信息,请参阅 PostgreSQL 文档
重要
在将数据从 PostgreSQL 的 Red Hat Enterprise Linux 系统版本迁移到 PostgreSQL 10 之前,请确保备份所有数据,包括 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-postgresql10/lib/pgsql/data/ 不存在:
    file /var/opt/rh/rh-postgresql10/lib/pgsql/data/
    如果您正在运行一个全新的 PostgreSQL 10 安装,则系统中不存在此目录。如果是,请以 root 用户身份运行以下命令备份它:
    mv /var/opt/rh/rh-postgresql10/lib/pgsql/data{,-scl-backup}
  4. root 用户身份运行以下命令来升级新服务器的数据库数据:
    scl enable rh-postgresql10 -- postgresql-setup --upgrade
    另外,您可以使用 /opt/rh/rh-postgresql10/root/usr/bin/postgresql-setup --upgrade 命令。
    请注意,您可以使用 --upgrade-from 选项从不同的 PostgreSQL 版本升级。可以使用 --upgrade-ids 选项获得可能的升级场景列表。
    建议您读取生成的 /var/lib/pgsql/upgrade_rh-postgresql10-postgresql.log 日志文件,以了解升级过程中是否存在任何问题。
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql10-postgresql.service
    另外,建议您运行 analyze_new_cluster.sh 脚本,如下所示:
    su - postgres -c 'scl enable rh-postgresql10 ~/analyze_new_cluster.sh'
  6. 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以 root 用户身份运行以下命令:
    chkconfig postgresql off
    要启用 PostgreSQL 10 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql10-postgresql on
  7. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql10/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-postgresql10-postgresql -- postgresql-setup --initdb
  5. root 用户身份启动新服务器:
    systemctl start rh-postgresql10-postgresql.service
  6. 从之前创建的 SQL 文件中导入数据:
    su - postgres -c 'scl enable rh-postgresql10 "psql -f ~/pgdump_file.sql postgres"'
  7. 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以 root 用户身份运行以下命令:
    chkconfig postgresql off
    要启用 PostgreSQL 10 服务器,以 root 用户身份键入:
    chkconfig rh-postgresql10-postgresql on
  8. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。

5.7.2. 从 PostgreSQL 9.6 Software Collection 迁移到 PostgreSQL 10 Software Collection

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

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

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

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

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

5.8. 迁移到 PostgreSQL 9.6

PostgreSQL 9.6 可用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7,它可以与 Red Hat Enterprise Linux 6 中的 PostgreSQL 8.4 并行安装同一机器上,或者 Red Hat Enterprise Linux 7 中的 PostgreSQL 9.2 或之前版本的 Red Hat Software Collections 中发布的任何 PostgreSQL 版本。也可以同时在一台机器上运行多个 PostgreSQL 版本,但您需要使用不同的端口或 IP 地址并调整 SELinux 策略。
重要
如果在容器中升级 PostgreSQL 数据库,请参阅 特定于容器的说明。请注意,目前无法在 OpenShift 环境中通过 Gluster 文件卷将 PostgreSQL 从 9.5 升级到 9.6。

5.8.1. PostgreSQL 9.5 和 PostgreSQL 9.6 之间的显著差异

上游发行注记 中描述了 PostgreSQL 9.5PostgreSQL 9.6 之间的显著变化。
rh-postgresql96 Software Collection 包括 rh-postgresql96-syspaths 软件包,它安装为二进制文件、脚本、手册页和其他提供系统范围打包程序的软件包。安装 rh-postgreqsl96*-syspaths 软件包后,用户不需要使用 scl enable 命令对 rh-postgreqsl96* 软件包提供的二进制文件和脚本正常工作。请注意,*-syspaths 软件包与基本 Red Hat Enterprise Linux 系统中的对应软件包冲突。要了解更多有关 syspaths 的信息,请参阅 Red Hat Software Collections Packaging Guide
下表提供了 Red Hat Enterprise Linux 系统版本 PostgreSQL (postgresql)和 postgresql92rh-postgresql95rh-postgresql96 Software Collections 中的不同路径的概述。请注意,Red Hat Enterprise Linux 6 发布的 PostgreSQL 8.4 的路径以及 Red Hat Enterprise Linux 7 提供的 PostgreSQL 9.2 系统版本相同; rh-postgresql94 Software Collection 的路径与 rh-postgresql95 类似。
表 5.2. PostgreSQL 路径中的 Diferences
内容postgresqlpostgresql92rh-postgresql95rh-postgresql96
可执行文件/usr/bin//opt/rh/postgresql92/root/usr/bin//opt/rh/rh-postgresql95/root/usr/bin//opt/rh/rh-postgresql96/root/usr/bin/
libraries/usr/lib64//opt/rh/postgresql92/root/usr/lib64//opt/rh/rh-postgresql95/root/usr/lib64//opt/rh/rh-postgresql96/root/usr/lib64/
Documentation/usr/share/doc/postgresql/html//opt/rh/postgresql92/root/usr/share/doc/postgresql/html//opt/rh/rh-postgresql95/root/usr/share/doc/postgresql/html//opt/rh/rh-postgresql96/root/usr/share/doc/postgresql/html/
PDF 文档/usr/share/doc/postgresql-docs//opt/rh/postgresql92/root/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql95/root/usr/share/doc/postgresql-docs//opt/rh/rh-postgresql96/root/usr/share/doc/postgresql-docs/
contrib 文档/usr/share/doc/postgresql-contrib//opt/rh/postgresql92/root/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql95/root/usr/share/doc/postgresql-contrib//opt/rh/rh-postgresql96/root/usr/share/doc/postgresql-contrib/
未安装未安装未安装未安装
data/var/lib/pgsql/data//opt/rh/postgresql92/root/var/lib/pgsql/data//var/opt/rh/rh-postgresql95/lib/pgsql/data//var/opt/rh/rh-postgresql96/lib/pgsql/data/
备份区域/var/lib/pgsql/backups//opt/rh/postgresql92/root/var/lib/pgsql/backups//var/opt/rh/rh-postgresql95/lib/pgsql/backups//var/opt/rh/rh-postgresql96/lib/pgsql/backups/
模板/usr/share/pgsql//opt/rh/postgresql92/root/usr/share/pgsql//opt/rh/rh-postgresql95/root/usr/share/pgsql//opt/rh/rh-postgresql96/root/usr/share/pgsql/
流程语言/usr/lib64/pgsql//opt/rh/postgresql92/root/usr/lib64/pgsql//opt/rh/rh-postgresql95/root/usr/lib64/pgsql//opt/rh/rh-postgresql96/root/usr/lib64/pgsql/
开发标头/usr/include/pgsql//opt/rh/postgresql92/root/usr/include/pgsql//opt/rh/rh-postgresql95/root/usr/include/pgsql//opt/rh/rh-postgresql96/root/usr/include/pgsql/
其他共享数据/usr/share/pgsql//opt/rh/postgresql92/root/usr/share/pgsql//opt/rh/rh-postgresql95/root/usr/share/pgsql//opt/rh/rh-postgresql96/root/usr/share/pgsql/
回归测试/usr/lib64/pgsql/test/regress/ (in the -test package)/opt/rh/postgresql92/root/usr/lib64/pgsql/test/regress/ (in the -test package)/opt/rh/rh-postgresql95/root/usr/lib64/pgsql/test/regress/ (in the -test package)/opt/rh/rh-postgresql96/root/usr/lib64/pgsql/test/regress/ (in the -test package)
有关 PostgreSQL 8.4PostgreSQL 9.2 之间的更改,请参阅 Red Hat Software Collections 1.2 发行注记Red Hat Software Collections 2.0 发行注记 中描述了 PostgreSQL 9.2PostgreSQL 9.4 之间的显著变化。有关 PostgreSQL 9.4PostgreSQL 9.5 之间的区别,请参阅 Red Hat Software Collections 2.2 发行注记

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

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

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

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

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

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

5.8.3. 从 PostgreSQL 9.5 Software Collection 迁移到 PostgreSQL 9.6 Software Collection

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

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

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

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

要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
  1. root 用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:
    service rh-postgresql95-postgresql start
  2. 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以 root 用户身份,输入:
    su - postgres -c 'scl enable rh-postgresql95 "pg_dumpall > ~/pgdump_file.sql"'
  3. root 用户身份运行以下命令来停止旧服务器:
    service rh-postgresql95-postgresql stop
  4. root 用户身份初始化新服务器的数据目录:
    scl enable rh-postgresql96-postgresql -- postgresql-setup --initdb
  5. root 用户身份启动新服务器:
    service rh-postgresql96-postgresql start
  6. 从之前创建的 SQL 文件中导入数据:
    su - postgres -c 'scl enable rh-postgresql96 "psql -f ~/pgdump_file.sql postgres"'
  7. 另外,您可以将 PostgreSQL 9.6 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 9.5 服务器,请以 root 用户身份输入以下命令:
    chkconfig rh-postgresql95-postgresql off
    要启用 PostgreSQL 9.6 服务器,以 root 用户身份输入:
    chkconfig rh-postgresql96-postgresql on
  8. 如果您的配置与默认文件不同,请确保更新配置文件,特别是 /var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf 配置文件。否则,只有 postgres 用户才能访问数据库。
如果您需要从 postgresql92 Software Collection 迁移,请参阅 Red Hat Software Collections 2.0 发行注记。该流程是相同的,您只需要调整新集合的版本。同样适用于从 rh-postgresql94 Software Collection 迁移,这在 Red Hat Software Collections 2.2 发行注记 中进行了描述。

5.9. 迁移到 nginx 1.14

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

5.10. 迁移到 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.