10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 本手册下载 从本手册中摘录

2.11.3 MySQL升级过程升级是什么

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

  • mysql系统架构,其中包含存储MySQL Server在运行时存储信息的表(参见5.3节,“mysql系统架构”)。mysql模式表分为两大类:

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

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

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

    • 性能模式,Information_Schema.ndbinfo., 和SYS.模式。

    • 用户模式。

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

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

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

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

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

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

    此步骤升级:

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

    • 性能模式,Information_Schema., 和ndbinfo.

  • 步骤2:服务器升级。

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

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

    • SYS.模式。

    • 用户模式。

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

如果数据字典已经过期,但是服务器被阻止升级它,那么服务器将不运行,并退出并返回一个错误。例如:

[ERROR] [MY-013381] [Server]服务器关闭,因为需要升级,但被命令行选项'——upgrade=NONE'禁止。[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine . [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.,以及STEP 2中描述的对象,如MySQL 8.0.16,mysql_upgrade.不必要地,并被贬值,因为该版本;我们希望在MySQL的未来版本中移除它。

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

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

  • 没有选择或与- aupgrade = auto.,服务器升级任何它认为过时的东西(步骤1和2)。

  • ——升级=没有,服务器升级了(跳过步骤1和2),但如果必须升级数据字典,则退出错误。不可能使用过时的数据字典运行服务器;服务器坚持要升级它或退出。

  • - aupgrade =最小,服务器升级数据字典,性能架构和Information_Schema.,如有必要(步骤1)。请注意,在使用此选项升级后,无法启动组复制,因为未更新复制内部依赖的系统表,并且在其他领域也可能显而易见。

  • ——升级=力,服务器升级数据字典,性能架构和Information_Schema.如有必要(步骤1),并强制升级其他一切(步骤2)。如果服务器检查所有模式中的所有对象,则期望服务器启动需要更长时间。

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

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

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

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

  • 第2步安装SYS.架构如果未安装它,并且否则将其升级到当前版本。如果一个错误会发生错误SYS.模式已存在但没有版本视图,假设它的缺席表示用户创建的模式:

    SYS架构存在,没有系统.Version视图。如果您创建了用户创建的SYS架构,则必须重命名升级以取得成功。

    要在这种情况下升级,请删除或重命名现有的SYS.架构首先。然后再次执行升级过程。(可能需要强制执行步骤2.)

    为了防止SYS.模式检查:

    • as mysql 8.0.16:使用该服务器启动服务器——升级=没有或者- aupgrade =最小选项。

    • MySQL 8.0.16之前:Invokemysql_upgrade.与之- skip-sys-schema选项。

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

    防止检查表:

    强制表检查:

    • as mysql 8.0.16:使用该服务器启动服务器——升级=力选项。

    • MySQL 8.0.16之前:Invokemysql_upgrade.与之——力选项。

  • 步骤2在命名的文件中保存MySQL版本号mysql_upgrade_info在数据目录中。

    忽略这一点mysql_upgrade_info无论如何,文件并执行检查:

    • as mysql 8.0.16:使用该服务器启动服务器——升级=力选项。

    • MySQL 8.0.16之前:Invokemysql_upgrade.与之——力选项。

    请注意

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

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

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