MySQL 升级到8.4版本的完整流程及操作方法

2025-08-06 21:50

本文主要是介绍MySQL 升级到8.4版本的完整流程及操作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字...

本指南详细介绍了将 MySQL 升级到 8.4 版本的完整流程、注意事项和操作方法。

一、升级前准备 (3.1 Before You Begin)

在开始升级之前,必须仔细审阅本节信息并执行所有推荐的操作:

  • 理解升级过程:了解升级期间可能发生的情况。请参阅第 3.4 节“MySQL 升级过程升级的内容”。
    • 备份数据:创建完整的数据库备份以保护您的数据。js此备份必须包含 mysql 系统数据库,该数据库存储了 MySQL 数据字典表和其他系统表。
  • 重要提示:
  • 不支持从 MySQL 8.4 降级到 MySQL 8.3,或从一个 MySQL 8.4 版本降级到更早的 MySQL 8.4 版本。
    • 唯一支持的降级替代方案是恢复升级前创建的备份
    • 因此,在启动升级过程之前备份数据是绝对必要的
  • 检查升级路径:审阅第 3.2 节“升级路径”,确保您计划的升级路径是受支持的。
  • 审阅变更:审阅第 3.5 节“MySQL 8.4 中的变更”,了解升级前需要注意的变更。某些变更可能需要您采取行动。
  • 审阅废弃和移除功能:审阅第 1.4 节“自 MySQL 8.0 以来 MySQL 8.4 的新变化”中关于废弃和移除功能的信息。如果您使用了这些功能中的任何一项,升级可能需要相应更改。
  • 审阅配置变量变更:审阅第 1.5 节“自 8.0 以来 MySQL 8.4 中新增、废弃或移除的服务器和状态变量及选项”。如果您使用了废弃或已移除的变量,升级可能需要更改配置。
  • 查阅发行说明:查阅 MySQL 8.4 的发行说明,了解修复、变更和新功能信息。
  • 复制环境:如果使用了复制,审阅第 19.5.3 节“升级或降级复制拓扑”。
  • 遵循最佳实践:审阅第 3.3 节“升级最佳实践”并相应地进行规划。

二、升级路径 (3.2 Upgrade Paths)

注意:

  • 在尝试降级之前,请确保了解 MySQL 长期支持 (LTS) 和创新版本的发布模型。
  • 建议在执行升级之前,使用 MySQL Shell 的升级检查器工具 (util.checkForServerUpgrade()) 检查升级兼容性。
  • 复制拓扑的升级遵循第 19.5.3 节“升级或降级复制拓扑”中描述的滚动升级方案,该方案使用支持的单一服务器升级方法之一来升级每个单独的服务器。
  • 月度快速更新 (MRU) 和热修复在此文档中也视为发布。

表:MySQL 服务器的升级路径

升级路径路径示例支持的升级方法
在同一个 LTS 或 Bugfix 系列内8.0.37 到 8.0.41 或 8.4.0 到 8.4.4原地升级、逻辑导出导入、复制、MySQL 克隆
从 LTS/Bugfix 系列到下一个 LTS 系列8.0.37 到 8.4.x LTS原地升级、逻辑导出导入、复制
从 LTS/Bugfix 到下一个 LTS 系列之前的创新版8.0.34 到 8.3.0 或 8.4.0 到 9.0.0原地升级、逻辑导出导入、复制
从创新系列到下一个 LTS 系列8.3.0 到 8.4 LTS原地升级、逻辑导出导入、复制
从创新系列到下一个 LTS 系列之后的创新版不允许需要两步:8.3.0 到 8.4 LTS,然后 8.4 LTS 到 9.x 创新版
在同一个创新系列内8.1.0 到 8.3.0原地升级、逻辑导出导入、复制
从 MySQL 5.7 到 LTS 或创新版MySQL 5.7 到 8.4不能跳过 Bugfix 或 LTS 系列。例如,需先将 MySQL 5.7 升级到 MySQL 8.0,再将 MySQL 8.0 升级到 MySQL 8.4。

三、升级最佳实践 (3.3 Upgrade Best Practices)

MySQL 支持在次要版本之间(LTS 系列内)升级和跨主版本(跨 LTS 系列)升级。升级可提供最新的功能、性能和安全性修复。

为确保成功升级到最新的 MySQL 8.4 版本,我们推荐以下最佳实践:

  1. 决定升级的主版本或次版本
    • 了解 MySQL 发布模型中 LTS(长期支持)和创新版本的区别。LTS 版本提供 8 年以上的支持,适用于生产环境。创新版本为用户提供最新的功能和能力。
    • 次要版本升级通常较简单,而主版本升级需要战略规划和额外的升级前测试。本指南对主版本升级尤其有用。
  2. 决定升级类型
    • 原地升级 (In-place):替换 MySQL 服务器软件包。
    • 逻辑升级 (Logical):将 SQL 从旧的 MySQL 实例导出并导入到新的实例。
    • 复制拓扑升级 (Replication):考虑每个服务器在拓扑中的角色。
  3. 审查支持的平台
    • 如果您的当前操作系统不被新版本的 MySQL 支持,则计划升级操作系统,否则不支持原地升级。
    • 查看当前支持的平台列表:https://www.mysql.com/support/supportedplatforms/database.html
  4. 了解 MySQL 服务器变更
    • 每个主版本都会带来新功能、行为变更、废弃项和移除项。了解这些变更对现有应用的影响至关重要。
    • 参阅:第 3.5 节 “MySQL 8.4 中的变更”。
  5. 运行升级检查器并修复不兼容问题
    • 使用 MySQL Shell 的升级检查器工具 (util.checkForServerUpgrade()) 检测数据库版本之间必须解决的升级前不兼容问题。
    • 连接到现有的 MySQL 服务器,并选择计划升级到的目标 MySQL 服务器版本。该工具将报告升级前需要解决的问题(例如数据类型、存储引擎等的不兼容性)。
    • 当升级检查器不再报告任何问题时,您已准备好升级。
  6. 在测试环境中运行应用程序
    • 完成升级检查器的要求后,下一步在目标 MySQL 服务器上测试您的应用程序。
    • 检查 MySQL 错误日志和应用程序日志中的错误和警告。
  7. 对应用程序和工作负载进行基准测试
    • 建议通过比较应用程序和工作负载在 MySQL 新旧版本上的性能表现来进行基准测试。通常,较新的 MySQL 版本会增加功能并提高性能,但在某些情况下,特定查询在升级后可能会变慢。
    • 可能导致性能下降的原因包括:
      • 先前的服务器配置对新版本不是最优的
      • 数据类型变更
      • 多字节字符集支持需要更多存储空间
      • 存储引擎变更
      • 索引被删除或更改
      • 更强的加密
      • 更强的认证
      • SQL 优化器变更
      • 新版本的 MySQL 需要更多内存
      • 物理或虚拟硬件变慢(计算或存储)
    • 有关信息及可能的缓解技术,请参阅 验证性能下降。
  8. 并行运行新旧 MySQL 版本
    • 为最小化风险,最好在运行升级系统的同时保持当前系统运行(并行运行)。
  9. 进行最终的测试升级
    • 在升级生产系统之前,进行练习和全面测试升级流程。
  10. 检查 MySQL 备份
    • 在执行升级之前,确认存在完整的备份并且可用。
  11. 升级生产服务器
    • 完成上述步骤后,即可进行生产环境升级。
  12. 企业支持
    • 如果您是 MySQL 企业版客户,还可以联系 MySQL 支持团队专家咨询任何问题。

四、MySQL 升级过程升级的内容 (3.4 What the MySQL Upgrade Process Upgrades)

安装新版本的 MySQL 可能需要升级现有安装的以下部分:

  1. mysql 系统模式:包含存储 MySQL 服务器运行时所需信息的表(参见第 7.3 节 “mysql 系统模式”)。mysql 模式表分为两大类:
    • 数据字典表:存储数据库对象元数据。
    • 系统表(即剩余的非数据字典表):用于其他操作目的。
  2. 其他模式:包括一些内置的、可视为服务器“拥有”的模式,以及其他用户模式:
    • performance_schemaINFORMATION_SCHEMAndbinfosys 模式。
    • 用户模式。

有两个不同的版本号与可能需要升级的部分相关联:

  • 数据字典版本:适用于数据字典表。
  • 服务器版本(又称 MySQL 版本):适用于系统表和其他模式中的对象。

升级过程发生在两个步骤:

  1. 步骤 1:数据字典升级
    • 升级 mysql 模式中的数据字典表、Performance Schema、INFORMATION_SCHEMAndbinfo
    • 由服务器在启动时自动执行(除非使用 --upgrade=NONE 选项禁止)。
    • 如果数据字典过期但被禁止升级,服务器将无法启动并报错退出。
    • 使用 --upgrade 服务器选项控制自动升级行为:
      • --upgrade=AUTO (或无选项):升级所有过期的内容(步骤 1 和 2)。
      • --upgrade=NONE:不升级任何内容,但如果数据字典必须升级则退出报错。
      • --upgrade=MINIMAL:仅升级数据字典、Performance Schema 和 INFORMATION_SCHEMA(步骤 1)。注意:此选项后无法启动组复制,且其他功能可能受限。
      • --upgrade=FORCE:升级步骤 1 的内容,并强制升级其他所有内容(步骤 2)。启动时间可能较长。
  2. 步骤 2:服务器升级
    • 升级 mysql 模式中的系统表(剩余的非数据字典表)、sys 模式和用户模式。
    • 安装或升级 sys 模式(如果存在同名用户模式会报错)。
    • 将系统表升级到当前结构(包括帮助表,不包括时区表)。
    • 更改 mysql.db, mysql.tables_priv, mysql.columns_priv, mysql.procs_priv 表主键列顺序以提升性能(对拥有大量用户和权限的系统可能耗时)。
    • 使用 CHECK TABLE ... FOR UPGRADE 检查并处理所有用户模式中的所有表(可能耗时且锁表)。
    • 将所有检查和修复过的表标记为当前的 MySQL 版本号。
    • 注意:升级过程不会升级时区表的内容。升级时区表需手动操作,参见第 7.1.15 节 “MySQL 服务器时区支持”。

五、MySQL 8.4 中的变更 (3.5 Changes in MySQL 8.4)

在升级到 MySQL 8.4 之前,请审阅以下部分描述的变更,以识别适用于您当前 MySQL 安装和应用程序的变更:

  • MySQL 8.4 中的不兼容变更
    • 空间索引:升级到 MySQL 8.4.4 或更高版本时,建议在升级前删除所有空间索引,升级完成后再重新创建它们。或者,您也可以在升级后立即(但在使用包含这些索引的表之前)删除并重新创建此类索引。更多信息参见第 13.4.10 节 “创建空间索引”。
    • 移除 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() 函数:MySQL 8.0 中已废弃的 WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() SQL 函数在 8.4 中已移除;尝试调用它现在会导致语法错误。请改用 WAIT_FOR_EXECUTED_GTID_SET()
    • authentication_fidoauthentication_fido_client 在某些平台上不再可用:由于服务器捆绑的 libfido2 库升级到需要 OpenSSL 1.1.1 或更高版本的 1.13.0,authentication_fidoauthentication_fido_client 认证插件在 Enterprise Linux 6, Enterprise Linux 7, Solaris 11 或 SUSE Enterprise Linux 12 上不再可用。
    • 命令行选项禁止设置为 NULL:在命令行上将服务器变量设置为 SQL NULL 是不支持的。在 MySQL 8.4 中,明确禁止将任何此类变量设置为 NULL,尝试这样做将被拒绝并报错。特定变量(如 basedir, datadir, plugin_dir 等)除外。参见第 7.1.8 节 “服务器系统变量”。
    • 更多变更信息请参阅第 1.4 节 “自 MySQL 8.0 以来 MySQL 8.4 的新变化”。
  • 变更的服务器默认值
    • 下表列出了 MySQL 8.4 与 MySQL 8.0 相比,系统变量默认值发生变化的项目。虽然新默认值适用于大多数用例,但在特定场景或需要兼容旧配置时可能需要调整。
分类系统变量旧默认值新默认值
InnoDB 变更innodb_adaptive_hash_indexONOFF
innodb_buffer_pool_in_core_fileONOFF
innodb_buffer_pool_instancesinnodb_buffer_pool_size < 1GB: 1; 否则: 8innodb_buffer_pool_size <= 1GB: 1; 否则: MIN( 0.5 * (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size), 0.25 * number_of_cpus)
innodb_change_bufferingallnone
innodb_doublewrite_filesinnodb_buffer_pool_instances * 22
innodb_doublewrite_pagesinnodb_write_io_threads 的值128
innodb_flush_methodfsync支持则 O_DIRECT,否则 fsync
innodb_io_capacity20010000
innodb_io_capacity_maxMIN(2 * innodb_io_capacity, 2000)2 * innodb_io_capacity
innodb_log_buffer_size16777216 (16MB)67108864 (64MB)
innodb_numa_interleaveOFFON
innodb_page_cleaners4innodb_buffer_pool_instances 的值
innodb_parallel_read_threads4MIN(number_of_cpus / 8, 4)
innodb_purge_threads4如果 number_of_cpus <= 16: 1; 否则: 4
innodb_use_fdatasyncOFFON
组复制变更group_replication_consistencyEVENTUALBEFORE_ON_PRIMARY_FAILOVER
group_replication_exit_state_actionREAD_ONLYOFFLINE_MODE
临时表变更temptable_max_mmap1073741824 (1GB)0
temptable_max_ram1073741824 (1GB)总内存的 3% (范围 1-4 GB)
temptable_use_mmapONOFF
  • 有关 MySQL 8.4 中新增的选项或变量,请参阅 MySQL 服务器版本参考中的“MySQL 8.4 的选项和变量变更”。
  • 性能模式 variables_info 表显示了每个系统变量的设置来源及其取值范围。

六、准备安装进行升级 (3.6 Preparing Your Installation for Upgrade)

在升级到最新的 MySQL 8.4 版本之前,通过执行以下初步检查,确保您当前的 MySQL 8.3 或 MySQL 8.4 服务器实例已做好升级准备:

提示: 考虑使用 MySQL Shell 升级检查器工具 (util.checkForServerUpgrade()) 来验证 MySQL 服务器实例是否已准备好升级。您可以指定计划升级到的目标 MySQL 服务器版本(从 MySQL Server 8.0.11 到与当前 MySQL Shell 版本号匹配的 MySQL Server 版本号)。该工具执行与指定目标版本相关的自动检查,并建议您应手动进行的其他相关检查。升级检查器适用于 MySQL 的所有 Bugfix、Innovation 和 LTS 版本。MySQL Shell 安装说明请参阅 此处。

初步检查(必须不存在以下问题):

  1. 运行升级兼容性检查
    mysqlcheck -u root -p --all-databases --check-upgrade
    如果 mysqlcheck 报告任何错误,请纠正这些问题。具体包括:
    • 没有使用废弃数据类型或函数的表。
    • 没有孤立的 .frm 文件。
    • 触发器没有缺失或空的定义者 (DEFINER) 或无效的创建上下文(由 SHOW TRIGGERSINFORMATION_SCHEMA.TRIGGERS 表中的 character_set_client, collation_connection, Database Collation 属性指示)。任何此类触发器必须导出并重新导入以修复问题。
  2. 检查不支持分区的存储引擎
    SELECT TABLE_SCHEMA, TABLE_NAME
        FROM INFORMATION_SCHEMA.TABLES
        WHERE ENGINE NOT IN ('innodb', 'ndbcluster')
            AND CREATE_OPTIONS LIKE '%partitioned%';
    查询报告的任何表必须更改为使用 InnoDB 或使其变为非分区表:
    • 更改存储引擎:ALTER TABLE table_name ENGINE = INNODB; (参见第 17.6.1.5 节 “将表从 MyISAM 转换到 InnoDB”)。
    • 移除分区:ALTER TABLE table_name REMOVE PARTITIONING;
  3. 检查保留关键字冲突:MySQL 8.4 中的一些新保留关键字可能使之前用作标识符的词变得非法。修复方法是使用反引号 ` 引用标识符。参见第 11.2 节 “模式对象名称” 和第 11.3 节 “关键字和保留词”。
  4. 检查与数据字典表冲突的用户表
    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE
        LOWER(TABLE_SCHEMA) = 'mysql'
        AND
        LOWER(TABLE_NAME) IN
        (
        'catalogs', 'character_sets', 'check_constraints', 'collations', 'column_statistics',
        'column_type_elements', 'columns', 'dd_properties', 'events', 'foreign_key_column_usage',
        'foreign_keys', 'index_column_usage', 'index_partitions', 'index_stats', 'indexes',
        'parameter_type_elements', 'parameters', 'resource_groups', 'routines', 'schemata',
        'st_spatial_reference_systems', 'table_partition_values', 'table_partitions', 'table_stats',
        'tables', 'tablespace_files', 'tablespaces', 'triggers', 'view_routine_usage', 'view_table_usage'
        );
    查询报告的任何表必须删除或重命名 (RENAME TABLE)。这也可能需要更改使用这些受影响表的应用程序。
  5. 检查过长的外键约束名 (超过 64 字符):
    SELECT TABLE_SCHEMA, TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME IN
      (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),
                   INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1)
       FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN
       WHERE LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);
    对于约束名超过 64 字符的表,删除该约束并使用不超过 64 字符的约束名重新添加 (ALTER TABLE ... DROP FOREIGN KEY ..., ADD CONSTRAINT ... FOREIGN KEY ...)。
  6. 检查 SQL 模式sql_m编程ode 系统变量中不能定义已废弃的 SQL 模式。尝试使用已废弃的 SQL 模式会阻止 MySQL 8.4 启动。应修改使用已废弃 SQL 模式的应用程序以避免它们。参见服务器变更中移除的 SQL 模式。
  7. 确保正常关机:仅升级已正确关闭的 MySQL 服务器实例。如果实例意外关闭,请重启该实例并使用 innodb_fast_shutdown=0 关闭它后再进行升级。
  8. 检查视图列名长度:不能有显式定义列名超过 64 字符的视图(MySQL 5.7 允许最多 255 字符)。为避免升级错误,应在升级前修改此类视图。识别方法:使用 SHOW CREATE VIEW 或查询 INFORMATION_SCHEMA.VIEWS 表检查视图定义。
  9. 检查 ENUM/jsSET 元素长度:不能有单个 ENUMSET 列元素超过 255 字符或 1020 字节长度的表或存储过程。在 MySQL 8.4 之前,ENUMSET 列元素的最大组合长度为 64K。在 MySQL 8.4 中,单个 ENUMSET 列元素的最大字符长度为 255,最大字节长度为 1020(支持多字节字符集)。在升级到 MySQL 8.4 之前,修改任何超出新限制的 ENUMSET 列元素。否则会导致升级失败。
  10. 移除废弃功能:您的 MySQL 8.3 安装不能使用 MySQL 8.4 不支持的功能。例如:
    • 审阅 MySQL 8.4 中移除的功能和已移除的服务器启动选项及系统变量(参见第 1.5 节)。如果使用了其中任何一项,升级需要更改配置。
  11. lower_case_table_names 变更注意事项:
    • 如果您打算在升级时将 lower_case_table_names 设置更改为 1,请确保在升级前模式和表名都是小写的。否则,由于模式或表名字母大小写不匹配,可能会导致失败。
    • 使用以下查询检查包含大写字符的模式和表名:
      SELECT TABLE_SCHEMA, TABLE_NAME
      FROM information_schema.tables
      WHERE TABLE_NAME COLLATE utf8mb4_bin <> LOWER(TABLE_NAME) COLLATE utf8mb4_bin;
      
    • 注意:不建议在升级时更改 lower_case_table_names 设置。如果 lower_case_table_names=1,升级过程会检查表和模式名是否全为小写字符。如果发现包含大写字符的表或模式名,升级过程将因错误而失败。

升级失败处理:
如果升级到 MySQL 8.4 因上述任何问题失败,服务器将回滚对数据目录的所有更改。在这种情况下,应删除所有重做日志文件 (ib_logfile*),在现有数据目录上重新启动 MySQL 8.3 服务器以解决错误。修复错误后,执行慢速关闭 (innodb_fast_shutdown=0),然后再次尝试升级。

七、Unix/Linux 上基于二进制或软件包的安装升级 (3.7)

升级方法取决于平台和初始安装方式:

1. 原地升级 (In-Place Upgrade)

原地升级涉及关闭旧服务器,用新的二进制文件或软件包替换旧的,然后在现有数据目录上重启新服务器。

步骤:

  1. 审阅第 3.1 节信息。
  2. 按照第 3.6 节完成安装准备检查。
  3. XA 事务:如果使用 InnoDB 的 XA 事务,升级前运行 XA RECOVER 检查未提交的 XA 事务。如果有结果,使用 XA COMMITXA ROLLBACK 提交或回滚这些事务。
  4. 关机设置:如果通常配置 innodb_fast_shutdown=2 (冷关机),请配置为执行快速或慢速关机:
    SET GLOBAL innodb_fast_shutdown = 1; -- 快速关机
    SET GLOBAL innodb_fast_shutdown = 0; -- 慢速关机 (推荐用于跨版本升级)
  5. 关闭旧服务器
    mysqladmin -u root -p shutdown
    
  6. 升级 MySQL 二进制文件或软件包
    • 二进制安装:解压新的 MySQL 二进制分发包 (参见 获取并解压分发版)。
    • 软件包安装:安装新软件包 (注意:如果最初安装了多个 RPM 包,需升级所有包,而不仅仅是服务器包)。对于 Yum/APT/SLES 仓库安装,请使用相应的包管理器命令 (如 sudo yum update mysql-server, sudo apt-get install mysql-server)。
    • 注意:对于使用 systemd 的平台 (RPM/Debian 包安装),使用 systemctl 管理服务 (systemctl stop mysqld, systemctl start mysqld),而不是 mysqld_safe
  7. 启动 MySQL 8.4 服务器 (使用现有数据目录):
    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
    # 或者对于 systemd 系统
    sudo systemctl start mysqld
    • 如果有加密的 InnoDB 表空间,使用 --early-plugin-load 选项加载密钥环插件。
  8. 自动升级
    • 服务器启动时自动检测数据字典表是否存在。如果不存在,则在数据目录中创建它们,用元数据填充,然后继续正常启动序列。
    • 此过程升级所有数据库对象的元数据(数据库、表空间、系统和用户表、视图、存储程序)并移除以前用于元数据存储的文件(如 .frm 文件)。
    • 失败处理:如果此步骤失败,服务器回滚更改。需删除重做日志文件,重启旧版服务器修复错误,慢速关机后重试升级。
    • 此步骤还根据需要升级 mysql 系统数据库,更新 Performance Schema、INFORMATION_SCHEMAsys 数据库,并检查所有用户数据库与当前 MySQL 版本的兼容性。
    • 注意:此过程不会升级时区表。升级时区表需手动操作,参见第 7.1.15 节。

2. 逻辑升级 (Logical Upgrade)

逻辑升级涉及使用 mysqldump 等工具从旧实例导出 SQL,安装新服务器,然后将 SQL 导入到新实例。

步骤:

  1. 审阅第 3.1 节信息。
  2. 从旧安装导出数据
    mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > data-for-upgrade.sql
    重要提示: 如果表包含生成列,请使用 MySQL 5.7.9 或更高版本附带的 mysqldump。可以使用 INFORMATION_SCHEMA.COLUMNS 表识别带有生成列的表。
  3. 关闭旧服务器
    mysqladmin -u root -p shutdown
  4. 安装 MySQL 8.4:参见第 2 章 “安装 MySQL”。
  5. 初始化新数据目录
    mysqld --initialize --datadir=/path/to/8.4-datadir
    记下屏幕上显示或写入错误日志的临时 ‘root’@‘localhost’ 密码。
  6. 启动 MySQL 8.4 服务器 (使用新数据目录):
    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir &
    # 或者对于 systemd 系统
    sudo systemctl start mysqld
  7. 重置 root 密码
    mysql -u root -p
    Enter password: ****  <- 输入临时 root 密码
    mysql> ALTER USER USER() IDENTIFIED BY 'your new papythonssword';
  8. 将导出的 SQL 导入新服务器
    mysql -u root -p --force < data-for-upgrade.sql
    注意:如果启用了 GTID (gtid_mode=ON) 且转储文件包含系统表,不建议加载转储文件。mysqldump 为非事务性的 MyISAM 系统表发出 DML 指令,这在启用 GTID 时是不允许的。另外,将启用 GTID 的服务器转储加载到另一个启用 GTID 的服务器会生成不同的事务 ID。
  9. 执行剩余升级操作
    • 关闭服务器,然后使用 --upgrade=FORCE 选项重启以执行剩余的升级任务:
    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir --upgrade=FORCE &
    # 或者对于 systemd 系统 (需在配置文件中设置 upgrade=FORCE 或命令行传递)
    sudo systemctl stop mysqld
    sudo mysqld --user=mysql --datadir=/path/to/8.4-datadir --upgrade=FORCE &
    • 使用 --upgrade=FORCE 重启会强制进行步骤 2 的升级任务(升级系统表、sys 模式、检查用户模式中的所有对象)。
    • 注意:此过程不会升级时区表。

3. MySQL 集群升级 (MySQL Cluster Upgrade)

MySQL 集群升级遵循常规滚动升级方案 (MGM 节点 -> 数据节点 -> API 节点/MySQL 服务器)。升级每个 mysqld 有两个步骤:

  1. 导入数据字典:使用 --upgrade=MINIMAL 选项启动新的 mysqld 以升级数据字典但不升级系统表。服务器必须能连接到 NDB 集群才能完成此阶段。
  2. 升级系统表:不使用 --upgrade=MINIMAL 选项重启每个 mysqld

八、使用 MySQL Yum 仓库升级 (3.8)

适用于支持的 Yum-based 平台 (参见第 2.5.1 节)。

  1. 选择目标系列
    • 默认情况下,MySQL Yum 仓库会将 MySQL 更新到您安装时选择的发布轨道中的最新版本(例如,8.0.x 安装不会自动更新到 8.4.x)。
    • 要更新到另一个发布系列,必须首先禁用当前选定的子仓库,并为目标系列启用子仓库。编辑 /etc/yum.repos.d/mysql-community.repo 文件中的子仓库条目。
    • 一般规则:从一个 Bugfix 系列升级到另一个时,应升级到下一个 Bugfix 系列,而不是跳过一个。例如,从 MySQL 5.7 升级到 8.4,应先升级到 MySQL 8.0,再升级到 8.4。
    • MySQL Yum 仓库不支持原地降级。降级请参见第 4 章。
  2. 升级 MySQL
    sudo yum update mysql-server   # 非 dnf 系统
    sudo dnf upgrade mysql-server  # dnf 系统
    # 或者更新整个系统
    sudo yum update               # 非 dnf 系统
    sudo dnf upgrade              # dnf 系统
    # 升级特定组件 (先列出:`sudo yum list installed | grep "^mysql"`)
    sudo yum update package-name  # 非 dnf 系统
    sudo dnf upgrade package-name # dnf 系统
    注意:MySQL 服务器在通过 Yum 更新后总是会重启。
  3. 升级共享客户端库
    • 使用旧的共享客户端库编译的应用程序在更新后应继续工作。
    • 如果重新编译应用程序并动态链接到更新后的库,则需要在部署这些应用程序的系统上也部署 MySQL 提供的新共享库包。为此,请在这些系统上添加 MySQL Yum 仓库并安装最新的共享库。

九、使用 MySQL APT 仓库升级 (3.9)

在 Debian 和 Ubuntu 平台上,使用 MySQL APT 仓库执行原地升级。具体步骤参见 使用 MySQL APT 仓库升级 MySQL。

十、使用 MySQL SLES 仓库升级 (3.10)

在 SUSE Linux Enterprise Server (SLES) 平台上,使用 MySQL SLES 仓库执行原地升级。具体步骤参见 使用 MySQL SLES 仓库升级 MySQL。

十一、在 Windows 上升级 (3.11)

升级方法取决于现有安装方式:

1. 使用 MSI 安装程序升级

  1. 下载并执行最新的 MySQL Server MSI。
  2. 虽然不支持直接跨系列升级,但“自定义安装”选项允许指定安装位置(否则默认安装到 C:\Program Files\MySQL\MySQL Server 8.4\)。
  3. 运行捆绑的 MySQL 配置器 (MySQL Configurator) 来配置新安装。

参考链接:https://dev.mysql.com/doc/refman/8.4/en/upgrading.html

到此这篇关于MySQL 升级到8.4版本的完整流程及操作方法的文章就介绍到这了,更多相关mysql8.4版本升级内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL 升级到8.4版本的完整流程及操作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155614

相关文章

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录