目标:

  1. mysql服务结构,当客户端发起请求之后,mysqld如何处理
  2. 如何重置mysql密码(多种⽅法)
  3. 索引的作⽤
  4. b树和b+树的区别
  5. 什么情况下会导致索引失效
  6. innodb和myisam存储引擎的区别
  7. 如果客户的数据库是myisam如何切换到innodb(⼤致步骤)
  8. mysql服务损坏,且没有备份的情况下,数据库服务如何恢复
  9. 事务的作⽤
  10. 事务的ACID
  11. 事务的隔离级别
  12. 悲观锁与乐观锁的区别
  13. 事务的redo和undo的过程
  14. 在事务未提交的情况下,数据库服务器重启,会发⽣什么
  15. ⼆进制⽇志中row模式和statement模式的优缺点
  16. 慢查询⽇志分析(mysqldumpslow)
  17. 主从复制原理(课上画图分析过,⼏个要素binlog,dump thread,relay-log,master.info,io thread,sql
    thread)
  18. 主从复制,从库误操作写⼊数据怎么办(主从不同步,会导致SQL线程停⽌)
  19. 主从复制,从库IO线程故障排查思路
  20. 主从复制中的延时从库,半同步复制,过滤复制使⽤场景
  21. MHA架构的原理

数据库相关操作:

安装Mysql数据库:

Mysql结构:

Mysql操作:

Mysql索引:

事务的ACID特性和四个隔离等级:

日志管理:

案例:使用二进制日志文件进行数据恢复

大概思路:首先查看当前使用的日志文件,用show binlog events 找到起始 position和终止的position,然后用mysqlbinlog工具将日志截取下来,重定向到另外一个文件。登录db将bin日志文件先关闭。然后再source。最后开启bin日志文件。

备份和恢复:

用mysqldump工具进行逻辑备份,备份的原理是把数据(包括表库)从Mysql数据库中以Sql语句的形式直接输出或者生成备份文件。这种叫逻辑备份。
image.png
image.png

案例主从复制原理:

  1. 主服务器上的更新操作会被写到二进制日志文件中
  2. 从服务器上的io线程会检测到主服务器的二进制文件变化
  3. 同步主服务器的二进制日志文件到本地的中继日志文件
  4. 从服务器上的sql线程负责读取和执行中继日志文件中的sql语句

    流程图:

    image.png

案例MHA架构(master high avaliable):

MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30s内,在复制框架中,MHA能够很好的解决数据不一致的问题,由于不需要在现有的replication中添加额外的服务器,仅需要一个manager节点,而一个manager节点可以管理多套复制,所以能大大地节约服务器的数量。另外,安装简单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。
MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(将从库提升为主库)

架构图:

image.png

工作流程:

  1. 将down机的master二进制日志文件保存下来
  2. 找到binlog位置点最新的slave
  3. 在binlog位置点最新的slave用relay-log修复其他salve
  4. 将master的二进制日志文件恢复到此节点上
  5. 将此节点提升为master
  6. 将其他slave指向此master并开启主从复制。

image.png
2052 2910