您好,登录后才能下订单哦!
MYSQL 8 的参数UP DOWN了什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
mysql8 是早早晚晚都的上的版本,早上会让开发欣喜,因为很多不支持的功能都开始支持,而尤其是MGR 方面的完善和物理复制的插件等等也是D们期待的。晚上也是有道理的,查询的速度估计会让继续使用MYSQL.5.7的感到欣慰。
mysql 8的安装上已经和mysql,5.7 在参数的配置上不一样了,所以还是先搞清楚哪些参数的问题,配置一个较优的mysql 8 比较好,目前mysql 最新的版本是8.019,目前稍微稳定的版本是8.015, 功能有创造性的是8.017.
下面的版本都是基于percona mysql 8.017 对比5.7的配置来说
1 SQL MODE 主要影响影响MySQL支持的SQL语法和它执行的数据验证检查,在MYSQL初始化的时候SQL MODE 是一个重要的设置,而MYSQL 5.7 和8.0 在一些配置上是有区别的。
下面是匹配mysql 8.011 以上的版本的SQL MODE
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
下面是mysql 5.78以上的配置
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
其中我们可以看到这里两个版本的区别,仅仅体现在 no_auto_create_user 这个选项上,这个选项的含义是除非指定了身份验证信息,否则将阻止GRANT语句自动创建新用户帐户。该语句必须指定使用identify BY或使用identify WITH的身份验证插件的非空密码。由于MYSQL 8 不能在通过grant 来建立账户,必须通过create user来进行,所以这个配置就被MYSQL 8 拿掉了。
如果不改变还使用MYSQL5.7的配置,会造成启动服务器报错
2 innodb_file_format 这个配置也在mysql 8 被去掉了,如果还有这个配置则MYSQL 8 无法启动并报错。主要是mysql 8不在支持Antelope
格式,只支持Barracuda
格式,所以这个选项的存在就么有必要了。
3 innodb_undo_logs 在5.7 的配置产生多少UNDO LOGS 的配置,在8.0 已经使用 innodb_rollback_segments 来替代了。这里有一个公式,可以计算出当前你的设置能支持多少并发的事务,超过这个数字就会出现报错导致事务无法运行。
(innodb_page_size / 16 / 2) * innodb_rollback_segments *
number of undo tablespaces
4
query_cache_type 这也是在MYSQL 8.0 去掉的功能,在MYSQL 5.X 也很少被使用的一个鸡肋的功能。
5 MYSQL 的关于账户安全方面的插件,全部失效,需要安装符合8.0 的安全插件产品。所以相关的配置均不存在,如果配置则报错。
6 expire_logs_days ,这项配置也已经被取消
7 innodb_undo_tablespaces 这项配置也被取消
8 master-info-file, relay_log_info_file 等也都被取消,相关的信息被强制保存在数据表中。
在清理了这些配置后,也添加了其他的参与予以替换
1 Caching_sha2_password_rsa_public_key 新的用户安全插件使用的密码插件配置
2 Innodb_undo_tablespaces_active 多少存活的undo tablespace 数量
3 binlog_expire_logs_seconds 来设置BINLOG 的过期清理的时间,单位秒
4 innodb_deadlock_detect 检测死锁
5innodb_dedicated_server 自动调整 INNODB BUFFER内存 log file size, 数据刷新方法。
6 innodb_temp_tablespaces_dir 开始调整临时表的存放的空间
注:在 innodb_dedicated_server 设置为ON 的情况下,如果不清理原先与innodb_dedicated_server 有关的信息,则MYSQL 会根据你初始的设置项来进行设置,innodb_dedicated_server 相当于无效。
而其中UNDO LOG 的变化比较大
1 可以动态创建UNDO LOG
2 不在只能创建128个 SEGMENT
3 超过一定数量的UNDO LOG SIZE 会被 innodb_undo_truncate 检测通过innodb_max_undo_log_size 来控制,超过这个设置就开始自动在线收缩。
另外针对用户密码验证的问题,之前写过一篇MYSQL 的针对用户名密码验证的文字,这里就不重复了。
INSTALL COMPONENT 'file://component_validate_password';
最后在顺一遍MYSQL 8 的一些限制
1 一个表最多有 1017 列
2 一个表最多有 64个二级索引
3 一行最大的索引的承受字节是 3072 或者 767 bytes
4 uft8mb4 的表索引最大承受191个字符,超过无法建立索引,包含前缀索引
5 如果缩减innodb_page_size 到8KB 到 4KB ,以上的部分内容的限制会减半或减75%
6 建立二级索引,单个索引最大的运行列为16列
关于MYSQL 8 的参数UP DOWN了什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。