为什么要主从复制
- 做数据的
热备份
;- 如果主数据库
宕机
,可以快速将业务切换
到从数据库上,可避免数据丢失
;- 业务量越来越大,I/O访问频率过高,单机无法满足,此时做多数据库的存储,
降低磁盘I/O访问的频率,提高单个机器的I/O性能
。如果对数据库的读写都在同一个数据库服务器中操作,业务系统性能降低;- 在业务复杂的系统中,有这么一个情景,有一句sql语句需要
锁表
,导致暂时不能使用度的服务,那么就很影响运行中的业务。使用主从复制,让主库负责写,从库负责读
,这样的话,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。通过做主从复制(读写分离
)来减轻数据库的负载。
原理
MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或者多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器中的所有数据库或者特定的数据库,或者特定的表。
MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。
基于语句的复制
,主服务器上面执行的语句在从服务器上面再执行一遍,在MySQL-3.23
版本以后支持;基于行的复制
,把主服务器上面改变后的内容直接复制过去,而不关心到底改变该内容是有那条语句引发的,在MySQL-5.0
版本以后引入;
适用场景
- 读写分离:生产中遇到sql语句需要锁表,导致暂时不能使用读的服务,这样会影响到现有业务。采用读写分离,即使主库出现了锁表的情景,通过读从库也可以保障业务的正常运作;
- 数据实时备份:当系统中某个节点发生故障时,可以方便的故障切换;
- 高可用 HA:防止数据库宕机;
- 架构扩展:随着业务中访问量的增大,如果是单机部署的数据库,就会导致I/O访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个节点上,降低单机磁盘I/O访问的频率,提高单个机器的I/O性能。
参考资料
https://juejin.im/post/5bff51f4e51d450c487d26c0
https://baijiahao.baidu.com/s?id=1617888740370098866&wfr=spider&for=pc
https://segmentfault.com/a/1190000008942618
https://www.jianshu.com/p/1eed312e83bf
网友评论