暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

4.4.5 mysql_upgrade —检查和升级MySQL表

原创 由迪 2020-11-17
2130

注意

从MySQL 8.0.16开始,MySQL服务器执行以前由mysql_upgrade处理的升级任务 (有关详细信息,请参见 第2.11.3节“ MySQL升级过程将进行哪些升级”)。因此, 从该版本开始,不再需要mysql_upgrade并已弃用;希望在将来的MySQL版本中将其删除。由于mysql_upgrade不再执行升级任务,因此它无条件退出,状态为0。

每次升级MySQL时,都应执行 mysql_upgrade,以查找与已升级的MySQL服务器不兼容的情况:

  • 它将升级mysql架构中的系统表, 以便您可以利用可能已添加的新特权或功能。
  • 它将升级性能架构 INFORMATION_SCHEMA,和 sys架构。
  • 它检查用户架构。

如果mysql_upgrade发现表可能不兼容,它将执行表检查,如果发现问题,则尝试表修复。如果表无法修复,请参见第2.11.13节“重建或修复表或索引”以获取手动表修复策略。

mysql_upgrade直接与MySQL服务器通信,向其发送执行升级所需的SQL语句。

警告

执行升级之前, 应始终备份当前的MySQL安装 。请参见 第7.2节“数据库备份方法”

升级MySQL安装并运行mysql_upgrade之前, 某些升级不兼容性可能需要特殊处理 。请参见 第2.11节“升级MySQL”,以获取有关确定是否存在此类不兼容性以及如何处理这些不兼容问题的说明。

像这样 使用mysql_upgrade

  1. 确保服务器正在运行。

  2. 调用mysql_upgrade升级mysql模式中的系统表,并检查和修复其他模式中的表:

    shell> mysql_upgrade [options]
    
  3. 停止服务器并重新启动它,以便任何系统表更改均生效。

如果要升级多个MySQL服务器实例,使用适合于连接到每个所需服务器的连接参数调用 mysql_upgrade。例如,对于在3306至3308部分上的本地主机上运行的服务器,通过连接到适当的端口来升级它们中的每一个:

shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]

对于Unix上的本地主机连接,该 --protocol=tcp选项强制使用TCP / IP而不是Unix套接字文件进行连接。

默认情况下,mysql_upgrade以MySQLroot用户身份运行 。如果在root 运行mysql_upgrade时密码已过期 ,则会显示一条消息,提示您密码已过期,并且 mysql_upgrade失败。要更正此问题,请重置root密码以使其失效,然后再次运行mysql_upgrade。首先,以以下方式连接到服务器root

shell> mysql -u root -p
Enter password: ****  <- enter root password here

使用ALTER USER以下命令重置密码:

mysql> ALTER USER USER() IDENTIFIED BY 'root-password';

然后退出mysql并再次运行 mysql_upgrade

shell> mysql_upgrade [options]

注意

如果在disabled_storage_engines 系统变量设置为禁用某些存储引擎的情况下运行服务器 (例如MyISAM),则 mysql_upgrade可能会失败,并显示如下错误:

mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled
(Table creation is disallowed).

要解决此问题,请在disabled_storage_engines 禁用的情况下重新启动服务器 。然后,您应该能够成功运行 mysql_upgrade。此后,将服务器重新 disabled_storage_engines设置为其原始值。

除非使用该--upgrade-system-tables 选项调用,否则 mysql_upgrade会根据需要处理所有用户模式中的所有表。表检查可能需要很长时间才能完成。每个表都被锁定,因此在处理它时其他会话无法使用。检查和修复操作可能很耗时,特别是对于大桌子。表检查使用语句的FOR UPGRADE选项CHECK TABLE。有关此选项的含义的详细信息,请参见 第13.7.3.2节“ CHECK TABLE语句”

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

mysql_upgrade将MySQL版本号保存mysql_upgrade_info在数据目录中命名的文件中。这用于快速检查是否已为此发行版检查所有表,以便可以跳过表检查。要忽略此文件并执行检查,请使用该--force选项。

注意

mysql_upgrade_info文件已弃用;希望在将来的MySQL版本中将其删除。

mysql_upgrade检查 mysql.user系统表行,对于任何具有空plugin列的行,将其设置'mysql_native_password'为凭据是否使用与该插件兼容的哈希格式。具有4.1之前的密码哈希值的行必须手动升级。

mysql_upgrade不会升级时区表或帮助表的内容。有关升级说明,请参见5.1.15节“ MySQL服务器时区支持”第5.1.17节“服务器端帮助支持”

除非使用该--skip-sys-schema选项调用,否则 mysql_upgrade将安装该sys模式(如果未安装该模式), 否则将其 升级到当前版本。如果sys存在一个架构但没有 version视图,那么会发生错误,并假设该架构的缺失表示用户创建的架构:

A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.

在这种情况下,要进行升级,请先删除或重命名现有 sys架构。

mysql_upgrade支持以下选项,可以在命令行或选项文件的 [mysql_upgrade][client]组中指定这些选项。有关MySQL程序使用的选项文件的信息,请参见 第4.2.2.2节“使用选项文件”

表4.10 mysql_upgrade选项

选项名称 描述 介绍了 不推荐使用
–bind-address 使用指定的网络接口连接到MySQL Server
–character-sets-dir 字符集的安装目录
–compress-algorithms 压缩客户端和服务器之间发送的所有信息 8.0.18
-压缩算法 用于服务器连接的允许压缩算法 8.0.18
–debug 编写调试日志
–debug-check 程序退出时打印调试信息
–debug-info 程序退出时打印调试信息,内存和CPU统计信息
–default-auth 身份验证插件使用
–default-character-set 指定默认字符集
–defaults-extra-file 除常规选项文件外,还读取命名的选项文件
–defaults-file 只读命名的选项文件
–defaults-group-suffix 选项组后缀值
- -force 即使当前MySQL版本已经执行了mysql_upgrade,也强制执行
–get-server-public-key 从服务器请求RSA公钥
–help 显示帮助信息并退出
–host MySQL服务器所在的主机
–login-path 从.mylogin.cnf中读取登录路径选项
–max-allowed-packet 发送到服务器或从服务器接收的最大数据包长度
–net-buffer-length TCP / IP和套接字通信的缓冲区大小
–no-defaults 不读取选项文件
–password 连接服务器时使用的密码
–password 使用命名管道连接到服务器(仅Windows)
–plugin-dir 安装插件的目录
- -port 用于连接的TCP / IP端口号
–print-defaults 打印默认选项
–protocol 使用的传输协议
–server-public-key-path 包含RSA公钥的文件的路径名
–shared-memory-base-name 共享内存连接的共享内存名称(仅Windows)
–skip-sys-schema 不要安装或升级sys模式
- -socket Unix套接字文件或Windows命名管道使用
–ssl-ca 包含受信任的SSL证书颁发机构列表的文件
–ssl-capath 包含受信任的SSL证书颁发机构证书文件的目录
–ssl-cert 包含X.509证书的文件
–ssl-cipher 连接加密的允许密码
–ssl-crl 包含证书吊销列表的文件
–ssl-crlpath 包含证书吊销列表文件的目录
–ssl-fips-mode 是否在客户端启用FIPS模式
–ssl-key 包含X.509密钥的文件
–ssl-model 与服务器连接的所需安全状态
–tls-ciphersuites 允许的TLSv1.3密码套件用于加密连接 8.0.16
–tls-version 允许的TLS协议进行加密连接
–upgrade-system-tables 仅更新系统表,而不更新用户架构
–user 连接服务器时使用的MySQL用户名
–verbose 详细模式
–version-check 检查服务器版本是否正确
–write-binlog 将所有语句写入二进制日志
–zstd-compression-level 与使用zstd压缩的服务器的连接的压缩级别 8.0.18
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论