你之前工作中使用的是什么版本的mysql?为什么选择这个版本?
mysql常见的发行版
- mysql官方版本
- percona mysql (兼任官方版本,性能高于mysql社区版)
- mariadb (功能兼容mysql)
答:贵公司使用的是什么版本的mysql,再结合自己之前的项目经验来讲。
比如我们之前使用的是percona的mysql版本,这个版本跟官方版本是完全
兼任的,并且还有mysql企业版才有的功能,用户审计,防火墙,innodb做备份工 具等等,并且性能要好于mysql的官方版本。
各个发行版之间的区别和缺点
如何决定是否要对mysql进行升级?如何进行升级?
1.升级是否可以给业务带来好处。
- 是否可以解决业务上的某一方面的痛点
比如:5.6-5.7多线程复制,更好的并发性,减少主从延迟的时间。
8.0修复了 只复制json中修改的部分。想要提高性能就得升级到8这个版本。 - 是否可以解决运上的某一方面的疼点
比如:新版本是否修复了老版本的bug,是否提供了更多的方法来方便我们管理。
8.0给运维提供了 各种mysql的监控度量值。
2.升级可能对业务带来的潜在的风险和影响。
- 对原业务程序的支持是否有影响。
比如:不同版本的mysql,需要不同版本的jdbc来进行连接 - 对原业务程序的性能是否有影响
比如:更新后的查询优化器,不能建立之前的索引的情况下,也可能会对查询带来负面的影响。
3.定制具体的数据库升级方案。
- 评估受影响的业务系统
比如:找出对应的业务系统数据库,找到负责人沟通明确数据的升级时间,并且跟研发确认是否同步数 据库连接驱动版本,明确后制定详细的步骤。 - 升级的详细步骤
比如:使用真实的业务数据进行多次测试, - 升级后的数据库环境检查
比如:数据库配置文件参数检查,数据库系统对象的检查,环境检查等。
有些在新版本中配置参数在新版本是不存在的。可能会造成数据库无法启动。
mysql upgrade更新系统表。 - 升级后的业务检查
比如:保证在高版本业务不受任何影响,可以正常运行。
4.升级失败后的回滚方案。
-
升级失败的回滚步骤
比如:先备份数据库。 -
回滚后的数据库环境检查
-
回滚后的业务检查
主从数据库滚动升级步骤
- 升级数据库进行备份
- 升级slave 服务器版本
(编译安装新版的实例,关闭老版本的实例,启动新版本的实例。) - 手动进行主从切换
- 升级master服务器版本
- 升级完成之后进行业务检查
最新的mysql版本是什么?它有什么特性比较吸引你?
mysql8.0版本主要的新特性
-
服务器功能
- 所有猿数据使用innodb引擎储存,无frm文件。
- 系统表采用innodb储存并采用独立表空间。
- 支持定义资源管理组(目前仅支持cpu资源)
命令:create resource group xx type=user VCPU=0 THREAD_PRIORITY=10;
可以用:select * from information——schema.resource_groups;
查看所有使用的资源组
获取进程号: use performance_schema
定义资源组:set resource group xx for 84; - 支持不可见索引和降序索引,支持直方图优化。
- 支持窗口函数。
- 支持在线修改全局参数持久化。
-
用户及安全
- 默认使用caching_sha2_password认证插件。
- 新增支持定义角色(role)。
- 新增密码历史记录功能,限制重复使用密码。
-
innodb功能
- innodb ddl语句支持原子操作
- 支持在线修改undo表空间
- 新增管理视图用于监控innodb表状态
- 新增innodb_dedicated_server配置项