深入理解Mysql数据库主从延迟
1什么会增加主从延迟?
1 网络不好
2 从库硬件差
3 索引没做好,从库执行慢
4 从库锁等待,多见于myisam
5 主库写频繁,从库单线程执行慢
6 使用row复制,或mix使用行复制
2如何优化,减少延迟时间?
1 如何写频繁,水平拆分,减少单片写数量
2 避免复杂DML操作
3几个因为主从延迟发送异常的场景
1 一个事务内有读和写操作
2 修改后紧接着接口访问
4业务上如何解决主从延迟?
解决这个问题有以下几个思路:
1 流程优化避免写后立即读取
a 业务流程上:写完成后接口返回,客户端再次调用接口获取数据,在这个过程中同步已经完成;
b 代码上:写完成后缓存结果到局部变量,内存或缓存中,下次读取直接走缓存;
2避免主从延迟,保证读写强一致性
a 如果是一主一从,可以使用数据库提供的半同步复制,写完成时会等待从库同步完成后返回;但是强一致性会降低写吞吐量
b mysql5.6以后可以使用semi-sync功能,实现强一致性;
c 线上读写都是使用主库,从库只做线下运营,分析使用;为了缓解数据库读写压力,在数据库上架构缓冲层;
3强制读走主库
4 配置经验延迟时间,延迟时间范围内的查询走主库;
a 中间件实现。很多中间件提供这种配置
b 应用层实现。架构一个缓存层,对数据修改后将key保存在cache总,设置生存时间为经验延迟时间。查询时首先查询cache,如果找到key则强制走主库;
另外,通过show slave status 字段‘Second_Behind_Master’可以检测主从延迟时间,在延迟较大时,将读切到读库,如果是使用中间件,可以配置强制读主库的延迟:slaveThreshold;这种方式不能保证读到脏数据,对一致性要求不高时可以使用;
深入理解Mysql数据库主从延迟的更多相关文章
- MySQL数据库主从同步延迟分析及解决方案
一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...
- mysql数据库主从同步读写分离(一)主从同步
1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做? 不往从服务器去写了 ...
- (转)Mysql数据库主从心得整理
Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...
- mysql数据库主从同步
环境: Mater: CentOS7.1 5.5.52-MariaDB 192.168.108.133 Slave: CentOS7.1 5.5.52-MariaDB 192.168. ...
- Spring AOP实现Mysql数据库主从切换(一主多从)
设置数据库主从切换的原因:数据库中经常发生的是“读多写少”,这样读操作对数据库压力比较大,通过采用数据库集群方案, 一个数据库是主库,负责写:其他为从库,负责读,从而实现读写分离增大数据库的容错率. ...
- Linux下MySQL数据库主从同步配置
说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...
- MySQL数据库主从切换脚本自动化
MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...
- MySQL数据库主从同步实战过程
Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...
- [转帖]mysql数据库主从配置
mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...
随机推荐
- Java一点输入输出技巧
输入: 格式1:Scanner sc = new Scanner(System.in); 格式2:Scanner sc = new Scanner(new BufferedInputStream(Sy ...
- vsftpd安装及虚拟用户配置
服务器环境:CentOS6.9 Linux 2.6.32-696.10.1.el6.x86_64 安装vsftpd.db4.db4-utils # yum -y install vsftpd db4 ...
- ⒃bootstrap组件 轮播图 基础案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 分布式框架Dubbo入门
Dubbo简介 Dubbo是一个Alibaba开源额分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.dubbo就是个服务框架,只有在分布式的时候,才有dubb ...
- NHibernate Criteria中 Restriction与Expression的差别
http://stackoverflow.com/questions/5483393/nhibernate-criteria-restriction-vs-expression 据说是Restrict ...
- JS中有关正则表达式的一些常见应用
总所周知,正则表达式主要用于字符串处理.表单验证等,简单的代码量实现复杂的功能 1.身份证号码的一个校验 先做一个简单的位数校验来判断身份证的合法性:(15位数字或18位数字或17位数字加X|x) v ...
- Node.js初探之GET方式传输
Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...
- 熊掌号:"搜索+信息流"双引擎与"百家号+熊掌号"双品牌内容平台
一. 熊掌号是什么?熊掌号简单来说,就是"搜索 + 信息流"双引擎与"百家号 + 熊掌号"双品牌内容平台,上线了,对站长还是企业,都是一件好事.只要写出优质的原 ...
- shell中条件判断语法与判断条件小结
1. IF条件判断语法: if Athen dosthelif B dosthelse dosthfi 2. 判断条件: 2.1 字符串判断 str1 = str2 当两个串有相同 ...
- js 资料
http://javascript.ruanyifeng.com/#introduction 2.MDN 火狐中文社区 https://developer.mozilla.org/zh-CN/doc ...