主从复制的概念很简单,就是从原来的数据库复制一个完全一样的数据库,原来的数据库称作主数据库,复制的数据库称为从数据库。从数据库会与主数据库进行数据同步,保持二者的数据一致性。
主从复制的原理实际上就是通过bin log日志实现的。bin log日志中保存了数据库中所有SQL语句,通过对bin log日志中SQL的复制,然后再进行语句的执行即可实现从数据库与主数据库的同步。
主从复制的过程可见下图。主从复制的过程主要是靠三个线程进行的,一个运行在主服务器中的发送线程,用于发送binlog日志到从服务器。两外两个运行在从服务器上的I/O线程和SQL线程。I/O线程用于读取主服务器发送过来的binlog日志内容,并拷贝到本地的中继日志中。SQL线程用于读取中继日志中关于数据更新的SQL语句并执行,从而实现主从库的数据一致。
之所以需要实现主从复制,实际上是由实际应用场景所决定的。主从复制能够带来的好处有:
1 通过复制实现数据的异地备份,当主数据库故障时,可切换从数据库,避免数据丢失。
2 可实现架构的扩展,当业务量越来越大,I/O访问频率过高时,采用多库的存储,可以降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3 可实现读写分离,使数据库能支持更大的并发。
4 实现服务器的负载均衡,通过在主服务器和从服务器之间切分处理客户查询的负荷。
6 总结MySQL数据库应该算是程序员必须掌握的技术之一了。无论是项目过程中还是面试中,MySQL都是非常重要的基础知识。不过,对于MySQL来说,真的东西太多了。我在写这篇文章的时候,查阅了大量的资料,发现越看不懂的越多。还真是应了那句话:
你知道的越多,不知道的也就越多。
这篇文章着重是从理论的角度去解析MySQL基本的事务和日志系统的基本原理,我在表述的时候尽可能的避免采用实际的代码去描述。即便是这篇将近一万字+近二十副纯手工绘制的图解,也难以将MySQL的博大精深分析透彻。
但是我相信,对于初学者而言,这些理论能够让你对MySQL有一个整体的感知,让你对“何谓关系型数据库”这么一个问题有了比较清晰的认知;而对于熟练掌握MySQL的大佬来说,或许本文也能够唤醒你尘封已久的底层理论基础,对你之后的面试也会有一定帮助。
技术这种东西没有绝对的对错,倘若文中有误还请谅解,并欢迎与我讨论。自主思考永远比被动接受更有效。
7 referencehttps://www.cnblogs.com/kismetv/p/10331633.html
https://www.cnblogs.com/ivy-zheng/p/11094528.html
https://blog.csdn.net/qq_39016934/article/details/90116706
https://www.jianshu.com/p/5af73b203f2a
https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html#auto_id_2