mysql_upgrade升级
Posted 哭泣的馒头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql_upgrade升级相关的知识,希望对你有一定的参考价值。
一、概述
安装一个新版本的 mysql 可能需要升级现有安装的这些部分:
MySQL 系统模式,其中包含存储 MySQL 服务器运行时所需信息的表
Mysql 模式表分为两大类:
存储数据库对象元数据的数据字典表。
系统表(即其余的非数据字典表) ,用于其他操作目的
其他模式,其中一些是内置的,可能被认为是服务器“拥有的”,其他的则不是:
Performance Schema、 INFORATION _ SCHEMA、 ndbinfo 和 sys schema
User schemas
两个不同的版本号与可能需要升级的安装部分相关联:
数据字典版本。这适用于数据字典表。
服务器版本,也称为 MySQL 版本。这适用于其他模式中的系统表和对象
在这两种情况下,适用于现有 MySQL 安装的实际版本都存储在数据字典中,并将当前预期版本编译为新版本的 MySQL。当实际版本低于当前预期版本
时,与该版本关联的安装部分必须升级到当前版本。如果两个版本都指示需要升级,则必须首先进行数据字典升级。
作为刚才提到的两个不同版本的反映,升级分两个步骤进行:
第一步:数据字典升级。
这一步升级:
mysql架构中的数据字典表。如果实际数据字典版本低于当前预期版本,则服务器创建具有更新定义的数据字典表,将持久化元数据复制到新表,用新
表原子替换旧表,并重新初始化数据字典。
Performance Schema、INFORMATION_SCHEMA和 ndbinfo。
第二步:服务器升级。
此步骤包括所有其他升级任务。如果现有 MySQL 安装的服务器版本低于新安装的 MySQL 版本,则必须升级其他所有内容:
架构中的系统表mysql(剩余的非数据字典表)。
The sys schema.
User schemas
二、新特性
MySQL 8.0.16 开始,MySQL 不推荐使用mysql_upgrade。取而代之的是server upgrade的升级方式。
Prior to MySQL 8.0.16, mysql_upgrade upgrades the Performance Schema, the INFORMATION_SCHEMA, and the objects
described in step 2. The DBA is expected to invoke mysql_upgrade manually after starting the server.
As of MySQL 8.0.16, the server performs all tasks previously handled by mysql_upgrade. Although upgrading remains
a two-step operation, the server performs them both, resulting in a simpler process.
在 MySQL 8.0.16 之前
1. 关闭 MySQL,替换新的二进制 MySQL
2. 启动 MySQL,让服务器升级 DD(数据字典)表
3. 运行 mysql_upgrade,更新系统表和用户表
4. 加载新的帮助表
5. 重启 MySQL
从 MySQL 8.0.16 开始:
1. 关闭 MySQL,替换新的二进制 MySQL
2. 启动 MySQL,升级 DD(数据字典)表和系统表、用户表和帮助表
升级的时间和操作都会大幅度缩短,操作步骤也减少了很多,更方便了用户。
步骤 2 中发生的大多数方面在 MySQL 8.0.16 之前和之前都是相同的,尽管可能需要不同的命令选项来实现特定的效果。
从 MySQL 8.0.16 开始,--upgrade server 选项控制服务器是否以及如何在启动时执行自动升级:
如果没有选项或使用 --upgrade=AUTO,服务器会升级它确定为过时的任何内容(步骤 1 和 2)。
使用--upgrade=NONE时,服务器不升级任何内容(跳过步骤 1 和 2),但如果必须升级数据字典,也会出错退出。无法使用过时的数据字典运行服
务器;服务器坚持升级或退出。
使用--upgrade=MINIMAL,服务器会升级数据字典、性能模式和INFORMATION_SCHEMA(如果需要)(步骤 1)。请注意,使用此选项升级后,无法
启动组复制,因为复制内部所依赖的系统表未更新,并且其他区域的功能减少也可能很明显。
使用--upgrade=FORCE,服务器会升级数据字典、性能模式和INFORMATION_SCHEMA,如有必要(步骤 1),并强制升级其他所有内容(步骤 2)。
使用此选项预计服务器启动时间会更长,因为服务器会检查所有模式中的所有对象。
FORCE如果服务器认为没有必要,强制执行第 2 步操作很有用。FORCE与 不同的一种方式AUTO 是,FORCE如果缺少帮助表或时区表,服务器会重新
创建系统表。
以上是关于mysql_upgrade升级的主要内容,如果未能解决你的问题,请参考以下文章
mysql_upgrade 失败 - innodb 表不存在?
mysql_upgrade 和 MySQL 服务 - 恶性循环