10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册页(TGZ)- 260.6 kb
手册页(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

MySQL 8.0参考手册/.../ MySQL升级过程升级了什么

2.11.3 MySQL升级过程升级的内容

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

  • mysql系统模式,它包含存储MySQL服务器在运行时所需信息的表(请参阅章节5.3,“mysql系统架构”).mysql模式表分为两大类:

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

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

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

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

    • 用户模式。

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

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

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

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

作为刚才提到的两个不同版本的反映,升级分为两个步骤:

  • 步骤1:升级数据字典。

    此步骤升级:

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

    • 性能模式,INFORMATION_SCHEMA,ndbinfo

  • 步骤2:服务器升级。

    此步骤包括所有其他升级任务。如果现有MySQL安装的服务器版本低于新安装的MySQL版本,则其他所有内容都必须升级:

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

    • sys模式。

    • 用户模式。

数据字典升级(第1步)由服务器负责,服务器在启动时根据需要执行此任务,除非调用选项阻止它这样做。选项是——升级=没有从MySQL 8.0.16开始,——no-dd-upgrade在MySQL 8.0.16之前。

如果数据字典过期,但服务器无法升级它,则服务器不会运行,而是报错退出。例如:

[ERROR] [MY-013381] [Server]服务器关闭,因为需要升级,但被命令行选项'——upgrade=NONE'禁止。[ERROR] [MY-010334] [Server]初始化DD存储引擎失败[ERROR] [MY-010020] [Server]数据字典初始化失败。

在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的未来版本中被移除。

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

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

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

  • ——升级=没有,服务器不升级任何东西(跳过步骤1和2),但是如果必须升级数据字典,服务器也会退出并报错。不可能使用过期的数据字典运行服务器;服务器坚持升级或者退出。

  • ——升级=最小,服务器升级数据字典、性能模式和INFORMATION_SCHEMA请注意,在使用此选项升级之后,无法启动Group Replication,因为复制内部所依赖的系统表没有更新,并且在其他领域可能也会明显降低功能。

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

如果服务器认为不需要执行步骤2操作,则强制执行这些操作非常有用。一种方法不同于汽车那是和,服务器会重新创建系统表,如帮助表或时区表(如果它们缺失的话)。

下面列出了MySQL 8.0.16之前的升级命令和MySQL 8.0.16及更高版本的升级命令:

在MySQL 8.0.16之前,肯定是这样mysql_upgrade选项会影响它执行的操作。下表显示了哪个服务器——升级选项值,以实现类似的效果。(这些不一定是完全等价的,因为给定——升级选项值可能有额外的影响。)

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

  • 步骤2安装sys模式,否则将其升级到当前版本。类时,将发生错误sysSchema存在但不存在版本视图,假设它的缺失表示用户创建的模式:

    不存在sys模式。视图版本。如果用户创建了sys模式,则必须重命名该模式才能成功升级。

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

    为了防止sys模式检查:

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

    防止检查表:

    强制检查表:

    • 从MySQL 8.0.16开始:使用——升级=力选择。

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

  • 步骤2将MySQL版本号保存在一个名为mysql_upgrade_info在data目录中。

    忽略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做出决策,因此不能自动完成。