MySQL主从复制、读写分离、MHA——图文总结

本文详细介绍了MySQL的主从复制原理,包括复制类型、工作过程、使用场景和存在的问题。此外,还讨论了读写分离的必要性和实现方式,如基于程序代码内部实现和中间代理层实现。最后,探讨了MHA(Master High Availability)的故障切换机制及其搭建步骤,旨在提升数据库系统的可用性和并发性能。
摘要由CSDN通过智能技术生成

前言

在实际的生产环境中,如果对MySQL数据库的读和写都在一台数据库服务中操作,无论在安全性、高可用性,还是高并发性等各个方面都是完全不能满足实际需求的,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案进行部署与实施

一、MySQL主从复制

1.支持的复制类型

  • 基于语句的复制(statement):在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高
  • 基于行的复制(row): 把改变的内容复制过去,而不是把命令在从服务器上执行一遍
  • 混合类型的复制(mixed): 在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高

2.主从复制的工作过程是基于日志

  • master二进制日志
  • slave中继日志

3.请求方式

  • I/O线程
  • dump线程
  • SQL线程

4.主从复制的原理

①Master节点将数据的改变记录到二进制日志(bin log),当Master上的数据发生改变时,则将其改变写入二进制日志中

②Slave节点会在一定时间间隔内对Master的二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O线程请求 Master的二进制事件

③同时Master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点本地的中继日志(Relay log)中

④Slave节点将启动SQL线程从中继日志中读取二进制日志,在本地写入,即解析成 sql 语句逐一执行,使得其数据和 Master节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒

复制过程有一个很重要的限制,即复制在 Slave 上是串行化的,也就是说 Master 上的并行更新操作不能在 Slave 上并行操作

中继日志通常会位于OS缓存中,所以中继日志的开销很小

mark

5.MySQL集群和主从复制分别适合在什么场景下使用

集群和主从复制是为了应对高并发、大访问量的情况,如果网站访问量和并发量太大了,少量的数据库服务器是处理不过来的,会造成网站访问慢,数据写入会造成数据表或记录被锁住,锁住的意思就是其他访问线程暂时不能读写要等写入完成才能继续,这样会影响其他用户读取速度,采用主从复制可以让一些服务器专门读&#x

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: MySQL主从复制是一种通过复制数据来同步多个数据库服务器的方式,可以提高数据库的可用性和并发负载能力。主从复制的原理是将主数据库的数据和语句复制到从数据库上,从数据库可以用于读操作,而主数据库用于写操作。这样可以减缓数据库锁的争用,提高读性能,同时也解决了数据库单点故障的问题,实现了高可用性。\[1\]\[2\] 读写分离是在主从复制的基础上实现的,通过将读操作分发到从数据库上,写操作仍然在主数据库上进行。这样可以进一步提高读性能,适用于读请求非常多的场景。读写分离的实现方式可以依赖于MySQL主从复制功能,通过配置多台MySQL服务器来实现。\[2\]\[3\] 总结来说,mysql主从复制读写分离是为了提高数据库的性能和可用性而采取的措施。主从复制通过复制数据来同步多个数据库服务器,读写分离则将读操作分发到从数据库上,提高了读性能。这两种方式可以结合使用,以满足实际需求。 #### 引用[.reference_title] - *1* [MySQL主从复制读写分离](https://blog.csdn.net/weixin_62466637/article/details/122964543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySql主从复制读写分离](https://blog.csdn.net/Genius_zhu/article/details/126981510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MHA高可用配置和故障切换](https://blog.csdn.net/qq_57377057/article/details/127063972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值