【问题标题】:mysql db enterprise upgrade from 5.5.42 to 5.7.11mysql db企业从5.5.42升级到5.7.11
【发布时间】:2016-10-14 21:38:07
【问题描述】:

全部,

我们的产品使用Mysql 企业数据库。目前为 5.5.42,但计划升级到 5.7.latest。我应该期待看到哪些变化?

我感兴趣:
1) 性能影响
2) 破坏行为
3) 改变行为
4) 改进——功能和性能方面

是否建议首先升级我们的产品以使用 5.6.x,然后在 5.7.x 旁边或直接升级到 5.7.x,然后从那里进行测试/QA?任何输入都是有价值的。

【问题讨论】:

  • 2-4 列在各种发行说明中,1 也在发行说明中有所暗示,但是配置和使用对性能的影响很大,因此很难回答这一点。跨度>
  • 我需要查看多少发行说明才能了解 5.5.42 和 5.7.11 之间的影响?如果 oracle/mysql 有一个简单的方法来比较 2 个版本,那就太好了。
  • 为什么要投反对票?毕竟,我正在寻求客观的建议

标签: mysql upgrade dbmigrate


【解决方案1】:

5.5 和 5.7 之间有巨大的变化。在这里将他们全部征召入伍根本不切实际。我会尽量强调最重要的。显然还有很多new features introduced(GTID、半同步复制、JSON 支持、虚拟列等)。

1) 性能

您应该期待性能提升,因为 5.6 和 5.7 在互斥体处理方面有了很大改进,因此预计争用会减少。

还进行了可扩展性改进,因此您可以进一步扩展您的服务器,并且性能/查询容量比以前更长。

优化器有很多变化。因此,请务必检查您的查询。

在一天结束时,您应该始终使用您自己的应用程序检查您自己的情况。

2+3) 改变和破坏的行为

密码过期。在 5.7 中,密码可以有过期时间。只是需要注意的事情。

密码管理命令已更改,因此请务必检查它们,以免您的自动化功能被破坏。

由于优化器和成本模型发生了很大变化,一些查询可能会以不同的方式执行。

我要特别提到的两个让我们头疼的参数:查看optimizer_switch 并决定打开和关闭什么。 range_index_dive_limit 默认值在 5.7.4+ 中默认从 10 提高到 200。因为我看到这个参数很少在任何 my.cnf 中设置,这个新的默认值可能会影响你很大的时间。

4) 改进

很多。正如我在上面所写的,有许多新功能和可扩展性,性能改进旨在为您提供更好的服务。

5) 升级路径

是的,最好一次进行一次重大升级,进行测试,当一切正常时,您可以进行第二次重大升级。

【讨论】:

  • 谢谢。 @Károly Nagy:那么,是否不能从 5.5 export 直接升级到 5.7 ? Windows 操作系统通常允许以下 2 个级别升级到最新级别。
  • 这可能是可能的,但肯定不推荐。根据 Oracle 自己的说法:“如果您当前正在运行 MySQL 5.5 并希望升级到更新的系列,请先升级到 MySQL 5.6,然后再升级到 MySQL 5.7”dev.mysql.com/doc/refman/5.7/en/upgrading.html#upgrade-paths
【解决方案2】:

兼容性 - 升级时您最关心的问题。因为您的代码/语法是用较低版本制作的,所以预计它们的行为会有所不同,因为其中一些将无效或不会被较新版本识别(如果您跳到更高版本,将会产生很大影响)。

通常情况下,更新版本会提高性能、安全性等,但您需要修改代码/语法以应对新功能和特性。

【讨论】:

    【解决方案3】:

    性能

    5.7 中的性能提升只能在高负载系统上实现。如果您的并行执行少于 40-60,那么预计性能会下降 10% 左右。这是非常依赖于系统和负载的。总是测试自己! 这是 Percona 完成的良好 MySQL 5.7 性能测试:https://www.percona.com/blog/2016/05/17/mysql-5-7-read-write-benchmarks/

    改变和破坏的行为,改进

    5.7 中有很多变化。查看此链接以获取完整列表:http://www.thecompletelistoffeatures.com/

    我会提到以下在升级过程中应该考虑的变化:

    1. SQL_MODE 已更改。它适用于新安装,但对于旧系统,您很可能必须将其设置回旧值。
    2. 第一个 GA 版本的密码过期,但在投诉后,它在 5.7.11 中被禁用。所以现在不用担心了。
    3. SQL 优化器发生了很大变化。查询现在应该运行得更快,但我预计,有些可能会运行得更慢。大部分时间应该花在新版本的查询测试上!

    以下是影响升级到 5.7 的所有更改的概览: http://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html

    升级

    有两种升级方式:使用mysql_upgrade和mysqldump。

    1. 使用 mysql_upgrade 时,一次只能使用一个版本。无需测试中间版本。仅测试最终版本。
    2. 使用 mysqldump 直接进入 5.7。建议跳过 mysql 数据库。不能使用 mysqldump 迁移用户,请使用授权语句。

    更多信息请阅读:http://dev.mysql.com/doc/refman/5.7/en/upgrading.html

    【讨论】:

    • 谢谢。你能分享更多关于mysqldump选项的信息吗?
    • 您对 mysqldump 的确切问题是什么?这是一个很好的链接,例如:dba.stackexchange.com/questions/30974/….
    • 所以,顺序是 1) shell> mysqldump --master-data=2 --all-databases > dumpfile 2) 卸载旧的 mysql 版本 3) 安装新的 mysql 版本 4) shell> mysql
    • 是的,这会起作用,但不要忘记在最后运行 mysql_upgrade(第 5 步)。正如我提到的 mysql 数据库在 5.7 中发生了变化,使用 mysqldump 你会得到错误的模式。 mysql_upgrade 将修复它。如果您有程序或事件,您也可以将 --routines 和 --events 标志添加到 mysqldump。
    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多