mysql面试指南-mysql版本类问题

你之前工作中使用的是什么版本的mysql?为什么选择这个版本?

mysql常见的发行版
- mysql官方版本
- percona mysql (兼任官方版本,性能高于mysql社区版)
- mariadb (功能兼容mysql)

答:贵公司使用的是什么版本的mysql,再结合自己之前的项目经验来讲。
比如我们之前使用的是percona的mysql版本,这个版本跟官方版本是完全
兼任的,并且还有mysql企业版才有的功能,用户审计,防火墙,innodb做备份工 具等等,并且性能要好于mysql的官方版本。

各个发行版之间的区别和缺点

mysql面试指南-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配置项
上一篇:java 中文乱码问题,请注意response.getWriter的顺序


下一篇:InnoDB下的全表扫描和全索引扫描