云计算百科
云计算领域专业知识百科平台

助你拷打面试官day17,看看你能回答出来吗?

1、说一下mysql的主从复制过程

具体的流程如下

  • 首先master要开启binlog日志,记录所有的ddl和dml操作

  • 然后通过网络把binlog日志发送给slave,由slave的io线程先写到relay log中继日志

补充:如果slave接收到master发送过来的binlog日志就直接执行重放到数据库中,由于重放的过程会比较久,这时候可能会导致io线程阻塞,所以relay log中继日志就是起到一个缓冲的作用

  • 再由slave的执行线程读取relay log日志重放到数据库中

补充:

(1)binlog日志有三种模式:

row(默认):记录哪一行被修改了,具体修改了什么,如果遇到修改表结构或者操作大范围数据行的情况,会产生大量日志数据

statement:记录涉及修改到数据的sql,好处就是日志数据量少,但是在主从复制的情况,有可能从库复制过程过来的sql执行失败(因为环境信息可能不一样),导致主从数据不一致

mixed:就是上边两种的混合,当涉及修改的数据行比较少的时候会选择row,比较多且安全的时候选择statement

2、mysql有哪些日志文件及它们的作用是什么?

  • slow log慢sql日志

    • 可以设置一个阈值收集慢sql

  • undo log回滚日志

    • 一般用于回滚

  • redo重做日志

    • 用来重启后恢复buffer pool中的数据

  • binlog二进制日志

    • 一般用于事务提交和主从复制

  • relay log中继日志

    • 一般用于主从复制

3、你们有做单元测试吗?怎么做单元测试的?

  • 你们有做单元测试吗?

    • 有的

  • 怎么做单元测试的?

    • 我们做的都不是太复杂和专业的单元测试

    • 单个接口测试使用apifox/Yapi/swagger自己模拟请求来进行测试的

    • 使用junit测试service或mapper

赞(0)
未经允许不得转载:网硕互联帮助中心 » 助你拷打面试官day17,看看你能回答出来吗?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!