Someone Asked: 2018-11-29 06:05:49 +0800 CST2018-11-29 06:05:49 +0800 CST 2018-11-29 06:05:49 +0800 CST mysql_upgrade 检查是否需要运行它 772 我如何确定是否需要在数据库上运行“mysql_upgrade”命令? Percona-server-5.6.41 已安装并运行了几个月。之前安装了 mysql-5.6。就地升级已完成(删除 mysql 并安装 percona)。但我不知道,是不是被mysql_upgrade处决了。 日志中没有关于表不匹配的错误。 数据库足够大,有 900 多个表和大约 150Gb 的大小。 mysql upgrade 1 个回答 Voted Best Answer jynus 2018-11-29T06:36:39+08:002018-11-29T06:36:39+08:00 mysql_upgrade将生成一个文件,通知它是否在 datadir 上运行。如果它是针对您拥有的特定版本运行的,则该 mysql_upgrade_info文件将包含当前版本字符串并将阻止新运行mysql_upgrade除非使用 --force。Cat$datadir/mysql_upgrade_info文件以了解最后运行的版本。 即使由于某种原因该文件丢失,运行mysql_upgrade也是相对安全的——以至于大多数包和初始化系统在升级/启动时自动运行它。我不喜欢自动执行,因为我喜欢控制它何时运行——例如,它可能需要很长时间处理很多文件,并且由于 DDL 命令的性质,它可能会创建元数据锁它执行,但 99% 的安装可以安全地运行它,假设没有其他流量正在进行。 数据库足够大,900 多张表和大约 150Gb 的大小 我的 2TB 数据库有 100K 个表和 100K 个视图,运行大约需要 30 分钟,给你一个想法(SSD)。我的其他 2TB 服务器有几十个表只需要 <10 秒。 我的建议是只运行它,除非你有长时间运行的查询。在最坏的情况下,它通常可以被杀死。它不运行时的问题更糟(尽管这些问题通常只发生在主要版本升级或主要版本中的第一个次要版本期间)。
mysql_upgrade
将生成一个文件,通知它是否在 datadir 上运行。如果它是针对您拥有的特定版本运行的,则该mysql_upgrade_info
文件将包含当前版本字符串并将阻止新运行mysql_upgrade
除非使用 --force。Cat$datadir/mysql_upgrade_info
文件以了解最后运行的版本。即使由于某种原因该文件丢失,运行
mysql_upgrade
也是相对安全的——以至于大多数包和初始化系统在升级/启动时自动运行它。我不喜欢自动执行,因为我喜欢控制它何时运行——例如,它可能需要很长时间处理很多文件,并且由于 DDL 命令的性质,它可能会创建元数据锁它执行,但 99% 的安装可以安全地运行它,假设没有其他流量正在进行。我的 2TB 数据库有 100K 个表和 100K 个视图,运行大约需要 30 分钟,给你一个想法(SSD)。我的其他 2TB 服务器有几十个表只需要 <10 秒。
我的建议是只运行它,除非你有长时间运行的查询。在最坏的情况下,它通常可以被杀死。它不运行时的问题更糟(尽管这些问题通常只发生在主要版本升级或主要版本中的第一个次要版本期间)。