栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql主从复制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql主从复制

文章目录

前言一、主从复制目的二、主从复制过程三、主从复制注意事项四、主从复制权衡问题五、主从复制问题总结


前言

写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。


一、主从复制目的
1. 数据备份,保证mysql数据的可靠性;
2. 提高mysql的吞吐量,可以实现读写分离,主库负责写,从库负责读。
二、主从复制过程
主从复制过程:
	1. master端 主库所有的DDL和DML操作都会顺序写到binlog中;
	2. master端 会有log dump线程异步将binlog文件推送给slave;
	3. slave端 I/O线程会定期请求master的binlog文件,并将binlog写入到relay log中;
	4. slave端 SQL线程会读取并解析relay log并在slave中重放sql。
	
具体过程如下图所示:

三、主从复制注意事项
1. master要开启binlog功能,并且要赋予slave远程连接权限;
2. 至少需要2台mysql服务器,且服务器上mysql版本必须一致;
3. 要保证master服务器和slave服务器的时间同步。
四、主从复制权衡问题
在考虑mysql主从复制时,以下这些都是要好好权衡:
	1. 成本问题 包括设备成本和运维成本;
	2. 架构复杂度问题 项目整体架构复杂度提升,架构师是否能hold住;
	3. 主从数据写入强一致性问题;
	4. 主从同步的延迟问题;
五、主从复制问题
1.从库是否越多越好?
	在一主多从架构下可以实现读写分离,则mysql的读性能会极大提升,但并不是从库越多就越好,还有考虑master和slave的网络开销问题,
多个slave时master会新建多个dump线程来推送binlog给slave这也会拖垮master性能。

2. 主从延迟问题分析:
	2.1. master的binlog是顺序写效率高,而salve在重放sql时随机io;
	2.2.salve的sql线程是单线程处理sql重放,当master并发较高时超过了salve线程处理的速度;
	2.3.salve在处理大型query或慢查询时产生的等待锁;
	2.4.master和salve网络io问题导致延迟(可控)。
	
3. 主从延迟的解决方案:
	3.1. 采用分库架构,不同业务对应不同的mysql来分散压力;
	3.2. 一主多从、读写分离架构,让从库帮忙分担主库的压力(从库建议不要超过5个);
	3.3. master和salve部署在同一个局域网中;
	3.4. 使用redis缓存分担数据库压力;
	3.5. 将全文检索或有复杂查询数据存放到es中,分担DB压力;
	3.6. 杜绝mysql中的慢sql;
	3.7. 大表的数据做分表分库优化。
总结
1. 主从复制目的是做数据备份和读写分离,提高mysql的吞吐量和数据的可靠性;
2. 主从复制过程:master 由dump线程将binlog异步推送给slave;slave 由I/O线程读取binlog并写入到relaylog,再由SQL线程重放relaylog的sql;
3. 主从复制架构在选择前先考虑下成本等问题,杜绝过度设计;
4. 主从复制延迟主要问题就是从库查询性能和主库高并发写问题。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/719478.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号