第 5 章 Migration(迁移)
本章提供有关迁移到 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 与来自核心系统的 mysql 或 mariadb 软件包没有冲突。除非安装了 *-syspaths 软件包(请参见如下),否则可以将 rh-mariadb105 Software Collection 与 mysql 或 mariadb 软件包一起安装。也可以同时运行这两个版本,但
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-mariadb103 和 rh-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.2 和 Migrating to MariaDB 10.3。请注意,MariaDB 10.4 不可用,因此您必须直接从 rh-mariadb103 迁移到 rh-mariadb105。
注意
rh-mariadb105 Software Collection 支持使用 scl register 命令通过 NFS 挂载,也不支持使用 scl register 命令进行动态注册。
5.1.1. rh-mariadb103 和 rh-mariadb105 Software Collections 之间的显著差异
MariaDB 10.3 和 MariaDB 10.5 之间的显著变化包括:
- MariaDB 现在默认使用
unix_socket
身份验证插件。该插件允许用户在通过本地 Unix 套接字文件连接到 MariaDB 时使用操作系统凭证。 - MariaDB 添加了以
mariadb-*
命名的二进制代码,mysql*
符号链接指向mariadb-*
的二进制代码。例如,mysqladmin
、mysqlaccess
和mysqlshow
分别指向mariadb-admin
、mariadb-access
和mariadb-show
二进制代码。 SUPER
特权已被分成几个特权,以更好地与每个用户角色保持一致。因此,某些语句已更改了所需的权限。- 在并行复制中,
slave_parallel_mode
现在默认为optimistic
。 - 在 InnoDB 存储引擎中,以下变量的默认值已更改:
innodb_adaptive_hash_index
改为OFF
,innodb_checksum_algorithm
改为full_crc32
。 - MariaDB 现在使用用于管理 MariaDB 命令历史记录(the
.mysql_history
文件)的底层软件的libedit
实施,而不是之前使用的readline
库。此更改会影响直接使用.mysql_history
文件的用户。注意.mysql_history
是一个由 MariaDB 或 MySQL 应用管理的文件,用户不应直接使用该文件。人类可读的外表是巧合。注意要提高安全性,您可以考虑不维护历史记录文件。禁用记录命令历史记录:- 删除
.mysql_history
文件(如果存在的话)。 - 使用以下任一方法:
- 将
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 数据库。
- 如果 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
- 安装 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,因为这些集合不会冲突。 - 检查 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 - rh-mariadb103 Software Collection 的所有数据存储在
/var/opt/rh/rh-mariadb103/lib/mysql/
目录中,除非进行了不同。将该目录的整个内容复制到/var/opt/rh/rh-mariadb105/lib/mysql/
。您可以移动内容,但要记住在继续升级前备份数据。确保数据归mysql
用户和 SELinux 上下文所有。 - 启动 rh-mariadb105 数据库服务器:
systemctl start rh-mariadb105-mariadb.service
- 执行数据迁移。请注意,由于在 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-mariadb103 和 rh-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 不与来自核心系统的 mysql 或 mariadb 软件包以及 rh-mysql* 或 rh-mariadb* Software Collections 冲突,除非安装了 *-syspaths 软件包(请参阅以下)。也可以同时运行多个版本;但是,需要更改
my.cnf
文件中的端口号和套接字,以防止这些特定资源冲突。
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-mariadb103 和 rh-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
语句,必须至少指定DETERMINISTIC
、NO SQL
或READS 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
子句的已弃用的ASC
或DESC
限定符已被删除。要生成指定的排序顺序,请提供ORDER BY
子句。
5.2.2. 升级到 rh-mysql80 Software Collection
重要
在升级前,备份所有数据,包括任何 MySQL 数据库。
- 安装 rh-mysql80 Software Collection。
yum install rh-mysql80-mysql-server
- 检查 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/ - 如果 rh-mysql57 数据库服务器仍在运行,请停止它。
systemctl stop rh-mysql57-mysqld.service
- rh-mysql57 Software Collection 的所有数据存储在
/var/opt/rh/rh-mysql57/lib/mysql/
目录中。将该目录的整个内容复制到/var/opt/rh/rh-mysql80/lib/mysql/
。您还可以移动内容,但记得在继续升级前备份数据。 - 启动 rh-mysql80 数据库服务器。
systemctl start rh-mysql80-mysqld.service
- 执行数据迁移。
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-mariadb103 和 rh-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 12 和 rh-postgresql13 Software Collections 中的不同路径的概述。
内容 | postgresql | rh-postgresql12 | rh-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 服务器的快速升级,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:systemctl stop postgresql.service
要验证服务器是否正在运行,请键入:systemctl status postgresql.service
- 验证旧目录
/var/lib/pgsql/data/
是否存在:file /var/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:systemctl start rh-postgresql13-postgresql.service
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 13 服务器,以root
用户身份键入:chkconfig rh-postgresql13-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql13/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-postgresql13 -- postgresql-setup initdb
- 以
root
用户身份启动新服务器:systemctl start rh-postgresql13-postgresql.service
- 从之前创建的 SQL 文件中导入数据:
su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的系统 PostgreSQL 服务器,以
root
用户身份运行以下命令:chkconfig postgresql off
要启用 PostgreSQL 13 服务器,以root
用户身份键入:chkconfig rh-postgresql13-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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 服务器的快速升级,请完成以下步骤:
- 停止旧的 PostgreSQL 服务器,以确保数据不处于不一致的状态。要做到这一点,以
root
用户身份在 shell 提示符后输入以下内容:systemctl stop rh-postgresql12-postgresql.service
要验证服务器是否正在运行,请键入:systemctl status rh-postgresql12-postgresql.service
- 验证旧目录
/var/opt/rh/rh-postgresql12/lib/pgsql/data/
是否存在:file /var/opt/rh/rh-postgresql12/lib/pgsql/data/
并备份您的数据。 - 验证新数据目录
/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}
- 以
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
日志文件,以了解升级过程中是否存在任何问题。 - 以
root
用户身份启动新服务器:systemctl start rh-postgresql13-postgresql.service
另外,建议您运行analyze_new_cluster.sh
脚本,如下所示:su - postgres -c 'scl enable rh-postgresql13 ~/analyze_new_cluster.sh'
- 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 12 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql12-postgreqsql off
要启用 PostgreSQL 13 服务器,以root
用户身份键入:chkconfig rh-postgresql13-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/var/opt/rh/rh-postgresql13/lib/pgsql/data/pg_hba.conf
配置文件。否则,只有postgres
用户才能访问数据库。
过程 5.4. 执行转储和恢复升级
要执行 PostgreSQL 服务器的转储和恢复升级,请完成以下步骤:
- 以
root
用户身份在 shell 提示符后输入以下内容来确保旧的 PostgreSQL 服务器正在运行:systemctl start rh-postgresql12-postgresql.service
- 将 PostgreSQL 数据库中的所有数据转储到脚本文件中。以
root
用户身份,输入:su - postgres -c 'scl enable rh-postgresql12 "pg_dumpall > ~/pgdump_file.sql"'
- 以
root
用户身份运行以下命令来停止旧服务器:systemctl stop rh-postgresql12-postgresql.service
- 以
root
用户身份初始化新服务器的数据目录:scl enable rh-postgresql13 -- postgresql-setup initdb
- 以
root
用户身份启动新服务器:systemctl start rh-postgresql13-postgresql.service
- 从之前创建的 SQL 文件中导入数据:
su - postgres -c 'scl enable rh-postgresql13 "psql -f ~/pgdump_file.sql postgres"'
- 另外,您可以将 PostgreSQL 13 服务器配置为在引导时自动启动。要禁用旧的 PostgreSQL 12 服务器,请以
root
用户身份输入以下命令:chkconfig rh-postgresql12-postgresql off
要启用 PostgreSQL 13 服务器,以root
用户身份键入:chkconfig rh-postgresql13-postgresql on
- 如果您的配置与默认文件不同,请确保更新配置文件,特别是
/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.12 或 nginx 1.14 升级到 nginx 1.18。在这种情况下使用适当的路径。
有关官方 nginx 文档,请参阅 http://nginx.org/en/docs/。
5.5. 迁移到 Redis 5
Redis 3.2 由 rh-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。