第 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,不会与核心系统的 mysql 或 mariadb 软件包冲突,因此可以将 rh-mariadb102 Software Collection 与 mysql 或 mariadb 软件包一起安装。也可以同时运行这两个版本,但
my.cnf
文件中的端口号和套接字需要更改,以防止这些特定资源冲突。另外,可以在 rh-mariadb101 Collection 仍然安装 rh-mariadb102 Software Collection 时安装 rh-mariadb102 Software Collection,甚至在运行。
请注意,如果您使用 MariaDB 5.5 或 MariaDB 10.0,首先需要升级到 rh-mariadb101 Software Collection,这在 Red Hat Software Collections 2.4 发行注记 中进行了描述。
注意
rh-mariadb102 Software Collection 支持使用 scl register 命令通过 NFS 挂载,也不支持使用 scl register 命令进行动态注册。
5.1.1. rh-mariadb101 和 rh-mariadb102 Software Collections 之间的显著差异
MariaDB 10.2 的主要变化在 Red Hat Software Collections 3.0 发行注记 中进行了描述。
多个选项更改了默认值,或者已弃用或删除。详情请查看 从 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 数据库。
- 如果 rh-mariadb101 数据库服务器仍在运行,则停止它。在停止服务器前,将
innodb_fast_shutdown
选项设置为0,
以便InnoDB
执行缓慢关闭,包括完整清除和插入缓冲区合并。请参阅上游文档 中的有关此选项的更多信息。如果正常关闭时,此操作可能需要更长的时间。mysql -uroot -p -e "SET GLOBAL innodb_fast_shutdown = 0"
停止 rh-mariadb101 服务器。service rh-mariadb101-mariadb stop
- 安装 rh-mariadb102 Software Collection。
yum install rh-mariadb102-mariadb-server
请注意,在 rh-mariadb101 Software Collection 仍然被安装时,可以安装 rh-mariadb102 Software Collection,因为这些集合不会冲突。 - 检查 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 - rh-mariadb101 Software Collection 的所有数据存储在
/var/opt/rh/rh-mariadb101/lib/mysql/
目录中,除非进行了不同。将该目录的整个内容复制到/var/opt/rh/rh-mariadb102/lib/mysql/
。在继续升级前,您可以移动内容但记住备份数据。确保数据归mysql
用户和 SELinux 上下文所有。 - 启动 rh-mariadb102 数据库服务器。
service rh-mariadb102-mariadb start
- 执行数据迁移。
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 命令启动;请参阅 上游建议。要将 MongoDB 与 numactl 命令搭配使用,您需要安装 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,请执行以下步骤。
- 要进行升级,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
选项。 - 从 rh-mongodb36 Software Collections 安装 MongoDB 服务器和 shell:
~]# yum install rh-mongodb36
- 停止 MongoDB 3.4 服务器:
~]# systemctl stop rh-mongodb34-mongod.service
- 将数据复制到新位置:
~]# cp -a /var/opt/rh/rh-mongodb34/lib/mongodb/* /var/opt/rh/rh-mongodb36/lib/mongodb/
- 在
/etc/opt/rh/rh-mongodb36/mongod.conf
文件中配置rh-mongodb36-mongod
守护进程。 - 启动 MongoDB 3.6 服务器:
~]# systemctl start rh-mongodb36-mongod.service
- 启用向后不兼容的功能:
~]$ 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,请执行以下步骤:
- 从 rh-mongodb34 Software Collections 安装 MongoDB 服务器和 shell:
~]# yum install rh-mongodb34
- 停止 MongoDB 3.2 服务器:
~]# systemctl stop rh-mongodb32-mongod.service
在 Red Hat Enterprise Linux 6 系统上使用 服务 rh-mongodb32-mongodb stop 命令。 - 将数据复制到新位置:
~]# cp -a /var/opt/rh/rh-mongodb32/lib/mongodb/* /var/opt/rh/rh-mongodb34/lib/mongodb/
- 在
/etc/opt/rh/rh-mongodb34/mongod.conf
文件中配置rh-mongodb34-mongod
守护进程。 - 启动 MongoDB 3.4 服务器:
~]# systemctl start rh-mongodb34-mongod.service
在 Red Hat Enterprise Linux 6 上,改为使用服务 rh-mongodb34-mongodb start 命令。 - 启用向后兼容的功能:
~]$ 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.6。Red 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
语句不再默认创建用户。详情请查看 上游文档。
5.4.2. 升级到 rh-mysql57 Software Collection
重要
在升级前,备份您的所有数据,包括任何 MySQL 数据库。
- 安装 rh-mysql57 Software Collection。
yum install rh-mysql57-mysql-server
- 检查 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/ - 如果仍然在运行,则停止 rh-mysql56 数据库服务器。
service rh-mysql56-mysqld stop
- rh-mysql56 Software Collection 的所有数据存储在
/var/opt/rh/rh-mysql56/lib/mysql/
目录中。将该目录的整个内容复制到/var/opt/rh/rh-mysql57/lib/mysql/
。您还可以移动内容,但记得在继续升级前备份数据。 - 启动 rh-mysql57 数据库服务器。
service rh-mysql57-mysqld start
- 执行数据迁移。
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 96 和 rh-postgresql10 Software Colections 中的不同路径的概述。
内容 | postgresql | rh-postgresql96 | rh-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 服务器,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:systemctl stop postgresql.service
要验证服务器是否没有运行,请输入:systemctl status postgresql.service
- 验证旧目录
/var/lib/pgsql/data/
是否存在:file /var/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:systemctl start rh-postgresql10-postgresql.service
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql10 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 10 服务器,以root
用户身份键入:chkconfig rh-postgresql10-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf
配置文件。否则,只有postgres
用户才能访问数据库。
过程 5.2. 执行转储和恢复升级
要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
- 以
root
用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:systemctl start postgresql.service
- 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以
root
用户身份,输入:su - postgres -c 'pg_dumpall > ~/pgdump_file.sql'
- 以
root
用户身份运行以下命令来停止旧服务器:systemctl stop postgresql.service
- 以
root
用户身份初始化新服务器的数据目录:scl enable rh-postgresql10-postgresql -- postgresql-setup --initdb
- 以
root
用户身份启动新服务器:systemctl start rh-postgresql10-postgresql.service
- 从之前创建的 SQL 文件导入数据:
su - postgres -c 'scl enable rh-postgresql10 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 10 服务器,以root
用户身份键入:chkconfig rh-postgresql10-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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 服务器,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:systemctl stop rh-postgresql96-postgresql.service
要验证服务器是否没有运行,请输入:systemctl status rh-postgresql96-postgresql.service
- 验证旧目录
/var/opt/rh/rh-postgresql96/lib/pgsql/data/
是否存在:file /var/opt/rh/rh-postgresql96/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:systemctl start rh-postgresql10-postgresql.service
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql10 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 9.6 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql96-postgreqsql off
要启用 PostgreSQL 10 服务器,以root
用户身份键入:chkconfig rh-postgresql10-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf
配置文件。否则,只有postgres
用户才能访问数据库。
过程 5.4. 执行转储和恢复升级
要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
- 以
root
用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:systemctl start rh-postgresql96-postgresql.service
- 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以
root
用户身份,输入:su - postgres -c 'scl enable rh-postgresql96 "pg_dumpall > ~/pgdump_file.sql"'
- 以
root
用户身份运行以下命令来停止旧服务器:systemctl stop rh-postgresql96-postgresql.service
- 以
root
用户身份初始化新服务器的数据目录:scl enable rh-postgresql10-postgresql -- postgresql-setup --initdb
- 以
root
用户身份启动新服务器:systemctl start rh-postgresql10-postgresql.service
- 从之前创建的 SQL 文件导入数据:
su - postgres -c 'scl enable rh-postgresql10 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 10 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 9.6 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql96-postgresql off
要启用 PostgreSQL 10 服务器,以root
用户身份键入:chkconfig rh-postgresql10-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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 之间的显著差异
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)和 postgresql92、rh-postgresql95 和 rh-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 类似。
内容 | postgresql | postgresql92 | rh-postgresql95 | rh-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.4 和 PostgreSQL 9.2 之间的更改,请参阅 Red Hat Software Collections 1.2 发行注记。Red Hat Software Collections 2.0 发行注记 中描述了 PostgreSQL 9.2 和 PostgreSQL 9.4 之间的显著变化。有关 PostgreSQL 9.4 和 PostgreSQL 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 服务器,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:service postgresql stop
要验证服务器是否没有运行,请输入:service postgresql status
- 验证旧目录
/var/lib/pgsql/data/
是否存在:file /var/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:service rh-postgresql96-postgresql start
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql96 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 9.6 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 9.6 服务器,以root
用户身份输入:chkconfig rh-postgresql96-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf
配置文件。否则,只有postgres
用户才能访问数据库。
过程 5.6. 执行转储和恢复升级
要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
- 以
root
用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:service postgresql start
- 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以
root
用户身份,输入:su - postgres -c 'pg_dumpall > ~/pgdump_file.sql'
- 以
root
用户身份运行以下命令来停止旧服务器:service postgresql stop
- 以
root
用户身份初始化新服务器的数据目录:scl enable rh-postgresql96-postgresql -- postgresql-setup --initdb
- 以
root
用户身份启动新服务器:service rh-postgresql96-postgresql start
- 从之前创建的 SQL 文件导入数据:
su - postgres -c 'scl enable rh-postgresql96 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 9.6 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 9.6 服务器,以root
用户身份输入:chkconfig rh-postgresql96-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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 服务器,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:service rh-postgresql95-postgresql stop
要验证服务器是否没有运行,请输入:service rh-postgresql95-postgresql status
- 验证旧目录
/var/opt/rh/rh-postgresql95/lib/pgsql/data/
是否存在:file /var/opt/rh/rh-postgresql95/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:service rh-postgresql96-postgresql start
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql96 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 9.6 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 9.5 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql95-postgreqsql off
要启用 PostgreSQL 9.6 服务器,以root
用户身份输入:chkconfig rh-postgresql96-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql96/lib/pgsql/data/pg_hba.conf
配置文件。否则,只有postgres
用户才能访问数据库。
过程 5.8. 执行转储和恢复升级
要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
- 以
root
用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:service rh-postgresql95-postgresql start
- 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以
root
用户身份,输入:su - postgres -c 'scl enable rh-postgresql95 "pg_dumpall > ~/pgdump_file.sql"'
- 以
root
用户身份运行以下命令来停止旧服务器:service rh-postgresql95-postgresql stop
- 以
root
用户身份初始化新服务器的数据目录:scl enable rh-postgresql96-postgresql -- postgresql-setup --initdb
- 以
root
用户身份启动新服务器:service rh-postgresql96-postgresql start
- 从之前创建的 SQL 文件导入数据:
su - postgres -c 'scl enable rh-postgresql96 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 9.6 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 9.5 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql95-postgresql off
要启用 PostgreSQL 9.6 服务器,以root
用户身份输入:chkconfig rh-postgresql96-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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.4、nginx 1.6、nginx 1.8 或 nginx 1.10 升级到 nginx 1.12。在这种情况下,使用适当的路径。
有关官方 nginx 文档,请参阅 http://nginx.org/en/docs/。