人生呀,如梦,我觉得只要不投降,就是成功。(周星驰的电影都是多年后成为经典的,这也许就是一种成功)。MYSQL 其实作为数据库产品,对比其他数据库产品(不管收费不收费的),他的缺点都是显而易见的,不能进行复杂的SQL运算,被人诟病的SQL 执行引擎,到现在只能支持的索引类型(HASH 也对INNODB 不支持哟)。但走到现在,一致被人指指点点,多像那个“如梦”。可最近调查的DEVELOPER 最喜欢的 DATABASE , it's NO.1 ,各种公司的开源,闭源产品大部分也是围着他转,解决方案也是多如牛毛。谁敢说他是不成功的数据库产品??
话归正题,前些日志测试了MYSQL 8.013,感觉不是太好,尤其安装的时候各种不顺。最近因为要开始授课, 想着也的装一个做演示,本着测试就要最新的,装了8.015,安装的过程让人感觉是舒服的,不在像8.013 那样涩。(这里指的是PERCONA 的版本,在CENTOS7.4)
这次安装完,发现一些问题,这里SHARE 一下。
1 哪里开始不同(与5.7 相比,一下均与5.7相比)
SQL_MODE 变化,这应该是最应该被提及的一件事
如果你在MYSQL5.7时设置的SQL mode 很可能在MYSQL 8.015中报错,8.0 默认的 SQL MODE 已经变化为,如果你的设置与此不同或不兼容,很可能会在安装的期间报错
错误信息
ONLY_FULL_GROUP_BY, 在MYSQL 5.7 并不是一个默认值,而在MYSQL8.0 在你不设置的情况下,默认ONLY_FULL_GROUP_BY 是打开的状态。其实这也是在暗示,MSYQL 8 在 GROUP BY 中将更加严谨,并且代码的更改一定是有的,有兴趣可以测测 MYSQL 5.7 和 8.0 在GROUP BY 上是否有性能的差异。
2 去掉的一些参数
innodb_file_format,提到这个参数,在MYSQL 8.0 已经被废弃了,如果你在MY.CNF中体现,那安装就会失败
在MYSQL 5.7 的 document 上明确的显示这个参数的消失,主要是由于老的文件方式走到了生命的尽头,而且从新的参数集你也可以窥见一斑。
行的格式已经默认是 dynamic , 这也就意味着,建立索引支持的 BYTES 等等的数值,不在是 768。
MYSQL 8.0 中的 binlog_expire_logs_seconds
expire-logs-days 在MYSQL 中是设置BINLOG 的过期时间,以天来计算,而现在这个设置即将被剔除,换来的是以秒计算的过期时间,其实这样设置是更灵活的,默认值是 2592000,换算天数 30天。但如果你查询binlog_expire_logs_seconds 的值是 0的话,只能说明一个问题就是你的expire-logs-days 已经设置了,所以为了稳妥,还是改成MYSQL8.0 建议值,换算成秒。
MYSQL8.0 UNDO 表空间的变化
在MYSQL 5.7 undo表空间在 MY.CNF 中设置后,就不能在进行改变了,除非停机,后在改变,当然也还是比较麻烦。从 MYSQL 8.0后UNDO 表空间可以动态的建立和删除,相关原有的配置也在MYSQL 8.0中作废了。
取而代之的是 INNODB_UNDO_DIRECTORY 和动态的创建语句,当然如果你不设置,则会产生默认的两个文件 innodb_undo_001 innodb_undo_002 ,同时UNDO 文件的截断清除 也有两种方法,自动或手动。具体设置这里就详细提及了。
MYSQL 8 的用户及密码验证策略的改变
MYSQL 8 之前一直使用的是插件,而不是组件,MYSQL 8后已经要开始使用 validate_password
component, 相应的。但MYSQL 想的还是比较周到,如果你安装配置中,还是使用了插件,他还是可以继续工作,但在ERROR LOG 中会告知,请更换相关的组件,这也就是说,关于用户以及密码的部分,已经不已插件的模式支持,而变更为组件。(组件和插件之间的含义不同,不在解释,基础性问题)。
以上就是本次安装MYSQL 8 是遇到的错误和注意,(当然MYSQL 57 和 8 之间的不同很多,一篇文章讲不完) 在 MYSQL 8 的 MGR 的监控项目和可调整项目更多,并且MGR 也更加稳定。
MYSQL 的人生,“如梦”