第 5 章 Migration(迁移)


本章介绍了迁移到 Red Hat Software Collections 3.1 中包含的组件版本的信息。

5.1. 迁移到 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.1 提供了 MariaDB 10.2
rh-mariadb102 Software Collection,适用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7,不会与核心系统的 mysqlmariadb 软件包冲突,因此可以将 rh-mariadb102 Software Collection 与 mysqlmariadb 软件包一起安装。也可以同时运行这两个版本,但 my.cnf 文件中的端口号和套接字需要更改,以防止这些特定资源冲突。另外,可以在 rh-mariadb101 Collection 仍然安装 rh-mariadb102 Software Collection 时安装 rh-mariadb102 Software Collection,甚至在运行。
请注意,如果您使用 MariaDB 5.5MariaDB 10.0,首先需要升级到 rh-mariadb101 Software Collection,这在 Red Hat Software Collections 2.4 发行注记 中进行了描述。
有关 MariaDB 10.2 的更多信息,请参阅上游文档( 版本 10.2 )和有关 升级 的信息。
注意
rh-mariadb102 Software Collection 支持使用 scl register 命令通过 NFS 挂载,也不支持使用 scl register 命令进行动态注册。

5.1.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 系统中的对应软件包冲突。

5.1.2. 从 rh-mariadb101 升级到 rh-mariadb102 软件集合

重要
在升级前,备份所有数据,包括任何 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

5.2. 迁移到 MongoDB 3.6

Red Hat Software Collections 3.1 带有 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.2.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 文档验证
  • 更改流
  • chunk aware secondaries
  • 查看使用 3.6 查询功能的定义、文档验证器和部分索引过滤器
  • 会话和可重试写入
  • 带有 authenticationRestrictions的用户和角色
有关 MongoDB 3.6 中向后兼容更改的详情,请查看 上游发行注记

5.2.2. 从 rh-mongodb34 升级到 rh-mongodb36 软件集合

重要
在从 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
有关升级分片集群的详情,请参考上游 MongoDB Manual

5.3. 迁移到 MongoDB 3.4

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

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

常规更改

rh-mongodb34 Software Collection 引入了各种常规更改。从 MongoDB 3.2 迁移到 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.3.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
有关升级分片集群的详情,请参考上游 MongoDB Manual

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 的软件集合提供。
rh- mysql 57 Software Collection (适用于 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7)都与核心系统的 mysql mariadb 软件包冲突,因此可以和 rh-mysql56 软件集合一起安装 rh-mysql57 软件集合。也可以同时运行多个版本;但是,需要更改 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 之间的显著差异

  • mysql-bench 子软件包不包含在 rh-mysql57 软件集合中。
  • MySQL 5.7.7 起,默认的 SQL 模式包含 NO_AUTO_CREATE_USER。因此,需要使用 CREATE USER 语句创建 MySQL 帐户,因为 GRANT 语句不再默认创建用户。详情请查看 上游文档
要了解有关 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. 迁移到 PostgreSQL 10

Red Hat Software Collections 3.1 带有 PostgreSQL 10,仅适用于 Red Hat Enterprise Linux 7。rh-postgresql10 Software Collection 可以与 PostgreSQL 基本或任何 PostgreSQL Software Collection 并行安装在同一台机器上。也可以同时在一台机器上运行多个 PostgreSQL 版本,但您需要使用不同的端口或 IP 地址并调整 SELinux 策略。有关如何迁移到更早的版本或使用 Red Hat Enterprise Linux 6 的说明,请查看 第 5.6 节 “迁移到 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 的 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/
/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/
Source未安装未安装未安装
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/ (在 -test 软件包中)/opt/rh/rh-postgresql96/root/usr/lib64/pgsql/test/regress/ (在 -test 软件包中)/opt/rh/rh-postgresql10/root/usr/lib64/pgsql/test/regress/ (在 -test 软件包中)

5.5.1. 从 Red Hat Enterprise Linux 系统版本 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.5.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.6. 迁移到 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 策略。

5.6.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/
/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/
Source未安装未安装未安装未安装
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/ (在 -test 软件包中)/opt/rh/postgresql92/root/usr/lib64/pgsql/test/regress/ (在 -test 软件包中)/opt/rh/rh-postgresql95/root/usr/lib64/pgsql/test/regress/ (在 -test 软件包中)/opt/rh/rh-postgresql96/root/usr/lib64/pgsql/test/regress/ (在 -test 软件包中)
有关 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.6.2. 从 Red Hat Enterprise Linux 系统版本 PostgreSQL 迁移到 PostgreSQL 9.6 软件集合

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.6.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 软件集合进行迁移,请参阅 Red Hat Software Collections 2.0 发行注记 ;这个过程相同,您只需要调整新集合的版本。这同样适用于从 rh-postgresql94 Software Collection 迁移,这在 Red Hat Software Collections 2.2 发行注记 中进行了描述。

5.7. 迁移到 nginx 1.12

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.