10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

2.11.3 MySQL升级过程升级了哪些内容

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

  • mysql系统模式,其中包含MySQL服务器运行时所需的表(参见第5.3节,mysql系统架构).mysql模式表分为两大类:

    • 数据字典表,存储数据库对象元数据。

    • 系统表(即剩余的非数据字典表),用于其他操作目的。

  • 其他模式,其中一些是内置的,可以考虑使用拥有由服务器,以及其他非服务器:

    • 性能模式,INFORMATION_SCHEMAndbinfo,sys模式。

    • 用户模式。

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

  • 数据字典版本号。这适用于数据字典表。

  • 服务器版本,也称为MySQL版本。这适用于其他模式中的系统表和对象。

在这两种情况下,适用于现有MySQL安装的实际版本都存储在数据字典中,当前预期版本被编译成新的MySQL版本。当实际版本低于当前预期版本时,必须将与该版本相关的安装部分升级到当前版本。如果两个版本都需要升级,则必须先升级数据字典。

正如刚才提到的两个不同版本所反映的那样,升级分为两个步骤:

  • 第一步:升级数据字典。

    这一步升级:

    • 方法中的数据字典表mysql模式。如果实际的数据字典版本低于当前的预期版本,服务器就会用更新的定义创建数据字典表,将持久化的元数据复制到新表中,用新表自动替换旧表,并重新初始化数据字典。

    • 性能模式,INFORMATION_SCHEMA,ndbinfo

  • 步骤2:服务器升级。

    此步骤包含所有其他升级任务。如果现有的MySQL服务器版本低于新安装的MySQL版本,那么其他所有的东西都必须升级:

    • 中的系统表mysql模式(其余的非数据字典表)。

    • sys模式。

    • 用户模式。

数据字典升级(步骤1)是服务器的责任,它在启动时根据需要执行这个任务,除非调用时带有一个阻止它这样做的选项。的选择是——升级=没有MySQL 8.0.16——no-dd-upgradeMySQL 8.0.16之前的版本。

如果数据字典过期,但服务器无法升级,服务器将无法运行,并返回错误退出。例如:

[ERROR] [MY-013381][服务器]服务器关闭,因为需要升级,但命令行选项'——upgrade=NONE'禁止升级。[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine [ERROR] [MY-010020] [Server] Data Dictionary初始化失败。

在MySQL 8.0.16中,第2步的责任发生了一些变化:

  • 在MySQL 8.0.16之前,mysql_upgrade升级性能方案INFORMATION_SCHEMA,以及步骤2中描述的对象。DBA将被调用mysql_upgrade启动服务器后手动操作。

  • 从MySQL 8.0.16开始,服务器执行以前由mysql_upgrade.虽然升级仍然是一个两步操作,但服务器会同时执行这两个步骤,从而简化了过程。

根据你要升级的MySQL版本,说明在就地升级而且逻辑升级指示服务器是否执行所有升级任务,或者您是否也必须调用mysql_upgrade在服务器启动之后。

请注意

由于服务器升级了性能架构,INFORMATION_SCHEMA,以及MySQL 8.0.16中步骤2中描述的对象,mysql_upgrade是不需要的,并且从该版本起已弃用;希望在MySQL的未来版本中删除它。

在MySQL 8.0.16之前和之后的步骤2中发生的大多数方面是相同的,尽管可能需要不同的命令选项来实现特定的效果。

从MySQL 8.0.16开始——升级服务器选项控制服务器是否以及如何在启动时执行自动升级:

  • 没有选择或——升级=汽车,服务器会升级任何它认为过时的内容(步骤1和2)。

  • ——升级=没有,服务器不升级任何内容(跳过步骤1和步骤2),但如果必须升级数据字典,则会退出并报错。不可能使用过时的数据字典运行服务器;服务器坚持要么升级要么退出。

  • ——升级=最小,服务器升级数据字典、性能架构和INFORMATION_SCHEMA请注意,使用此选项进行升级后,不能启动组复制,因为复制内部依赖的系统表不会更新,而且在其他领域也可能明显出现功能减少的情况。

  • ——升级=力,服务器升级数据字典、性能架构和INFORMATION_SCHEMA如果有必要(步骤1),并强制升级其他所有内容(步骤2)。使用此选项,服务器启动时间可能会更长,因为服务器会检查所有模式中的所有对象。

如果服务器认为没有必要,强制执行步骤2操作是有用的。的一种方法不同于汽车是,与,服务器将重新创建系统表,如帮助表或时区表,如果它们缺失。

下面的列表显示了MySQL 8.0.16之前的升级命令,以及MySQL 8.0.16及更高版本的等价命令:

在MySQL 8.0.16之前,一定mysql_upgrade选项影响它执行的操作。下表显示了哪个服务器——升级选项的值使用MySQL 8.0.16,以达到类似的效果。(它们不一定完全相等,因为a是给定的——升级期权价值可能有额外的影响。)

关于升级步骤2中发生的其他注意事项:

  • 步骤2安装sys模式(如果没有安装),并将其升级到当前版本。当asysSchema存在但没有版本视图,假设它的缺失表明是用户创建的模式:

    存在一个sys模式,但没有sys。视图版本。如果用户创建了sys模式,必须重命名才能升级成功。

    在这种情况下,要升级,请删除或重命名现有的sys模式。然后重新执行升级操作。(可能有必要强制执行步骤2。)

    为了防止sys模式检查:

    • MySQL 8.0.16的有效版本:启动服务器——升级=没有——升级=最小选择。

    • 在MySQL 8.0.16之前:调用mysql_upgrade——skip-sys-schema选择。

  • 步骤2根据需要处理所有用户模式中的所有表。完成表检查可能需要很长时间。每个表都是锁定的,因此在处理时其他会话不可用。检查和修复操作可能非常耗时,特别是对于大型表。表检查使用为升级选择的检查表声明。有关此选项的详细信息,请参见第13.7.3.2节," CHECK TABLE语句"

    防止表检查:

    强制表检查:

    • MySQL 8.0.16的有效版本:启动服务器——升级=力选择。

    • 在MySQL 8.0.16之前:调用mysql_upgrade——力选择。

  • 步骤2将MySQL版本号保存到一个文件中mysql_upgrade_info在数据目录下。

    忽略了mysql_upgrade_info文件并执行检查:

    • MySQL 8.0.16的有效版本:启动服务器——升级=力选择。

    • 在MySQL 8.0.16之前:调用mysql_upgrade——力选择。

    请注意

    mysql_upgrade_info文件是弃用;希望在MySQL的未来版本中删除它。

  • 步骤2用当前MySQL版本号标记所有已检查和修复的表。这可以确保下次使用相同版本的服务器进行升级检查时,可以确定是否需要再次检查或修复给定的表。

  • 步骤2升级系统表,以确保它们具有当前的结构。这是真实的服务器或mysql_upgrade执行步骤。关于帮助表和时区表的内容,mysql_upgrade不加载任何类型的表,而服务器加载帮助表,但不加载时区表。(也就是说,在MySQL 8.0.16之前,服务器只在数据目录初始化时加载帮助表。从MySQL 8.0.16开始,它在初始化和升级时加载帮助表。)加载时区表的过程与平台有关,需要DBA做出决策,因此不能自动完成。