怎样解决MySQL数据库主从复制延迟的问题?


1.网络超时

2.慢查询

3.流量

问题一:主库的从库太多,导致复制延迟
从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟
问题二:从库硬件比主库差,导致复制延迟
查看Master和Slave的系统配置,可能会因为机器配置不当,包括磁盘I/O、CPU、内存等各方面因素造成复制的延迟。一般发生在高并发大数据量写入场景中
问题三:慢SQL语句过多
假如一条SQL语句执行时间是20秒,那么从执行完毕到从库上能查到数据至少需要20秒,这样就延迟20秒了。
一般要把SQL语句的优化作为常规工作不断地进行监控和优化,如果单个SQL的写入时间长,可以修改后分多次写入。通过查看慢查询日志或show full processlist命令,找出执行时间长的查询语句或大的事务
问题四:主从复制的设计问题
例如主从复制单线程,如果主库写并发太大,来不及传送到从库,就会导致延迟。更高版本的MySQL可以支持多线程复制,门户网站则会开发自己的多线程同步功能。
问题五:主从库之间的网络延迟
主从库的网卡、网线、交换机等网络设备都可能成为复制的瓶颈,导致复制延迟。另外,跨公网的主从复制很容易导致主从复制延迟
问题六:主库读写压力大,导致复制延迟
架构的前端要加buffer及缓存层

 

1.MySQL数据库主从同步延迟原理。

答:谈到mysql数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高;slave的Slave_IO_Running线程会到主库取日志,效率会比较高,slave的Slave_SQL_Running线程将主库的DDL和DML操作都在slave实施。DML和DDL的IO操作是随机的,不是顺序的,因此成本会很高,还可能是slave上的其他查询产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个DDL卡主了,需要执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有朋友会问:“主库上那个相同的DDL也需要执行10分,为什么slave会延时?”,答案是master可以并发,Slave_SQL_Running线程却不可以。

2.MySQL数据库主从同步延迟是怎么产生的。

答:当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。

3.MySQL数据库主从同步延迟解决方案

答:最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave。

4.MySQL数据库主从同步延迟产生的因素。

1. 网络延迟
2. master负载
3. slave负载
一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器,只作为备份用,不进行其他任何操作,就能相对最大限度地达到’实时’的要求了

另外,再介绍2个可以减少延迟的参数
–slave-net-timeout=seconds
参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
slave_net_timeout单位为秒 默认设置为 3600秒
| slave_net_timeout | 3600
–master-connect-retry=seconds
参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试。
master-connect-retry单位为秒 默认设置为 60秒
通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟

转载于:https://www.cnblogs.com/hanling/p/7215354.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神盾局特工第四季/全集Agents Of SHIELD迅雷下载

英文全名Agents Of SHIELD,第4季(2016)ABC. 本季看点:《神盾局特工》(Agents Of SHIELD)第三季季终集里,我们终于知道谁死了……但死的不是一个,而是两个。在这两集中,很多角色都遭遇过险境&…

java jsonalias_将多个JSON字段映射到单个Java字段

简介本文中,教大家如何使用Jackson和Gson将不同的JSON字段映射到单个Java字段中。Maven依赖为了使用Jackson和Gson库,我们需要在POM中添加以下依赖项:com.google.code.gsongson2.8.5testcom.fasterxml.jackson.corejackson-databind2.9.8test…

怎么用PHP修改文字大小,如何利用PHP和CSS改变网页文字大小

列表B// start session// import selected size into sessionsession_start();$_SESSION[textsize] $_GET[s];header("Location: " . $_SERVER[HTTP_REFERER]);?>这很简单,当用户选择了一种新的文本大小,resize.php通过GET方法来获得字号…

1.基础概念

1.1 URL(统一资源定位符) 协议:约定.(http) IP:地址(英特网中电脑唯一标识) 端口号:电脑中软件额唯一标识 http://localhost:8080/news/index.hmtl 协议://ip地址:端口号/项目名称/请求地址 转载于:https://www.cnblogs.com/banxia123-ha/p/7231267.html

php科学计数法转string,php如何将科学计数法转数字

php将科学计数法转数字的实现方法:首先通过if语句判断指定的数值是否为科学计数法;然后提取科学计数法中有效的数据;接着正式处理该数据;最后调用“convert_scientific_number_to_normal”方法实现转换即可。PHP将科学计数法转换为…

android UI布局

一、设置反复背景在drawable目录下建一个mybackground.xml文件在文件里写入&#xff1a;<?xml version"1.0" encoding"utf-8"?><bitmap xmlns:android"http://schemas.android.com/apk/res/android"android:src"drawable/mybg_i…

php8vsgo,服务端 I/O 性能:Node、PHP、Java、Go 的对比

原标题&#xff1a;服务端 I/O 性能&#xff1a;Node、PHP、Java、Go 的对比了解应用程序的输入/输出(I/O)模型意味着理解应用程序处理其数据的载入差异&#xff0c;并揭示其在真实环境中表现。或许你的应用程序很小&#xff0c;在不承受很大的负载时&#xff0c;这并不是个严重…

Python day8

阅读目录 为什么要用函数  函数的定义与调用  函数的返回值  函数的参数  本章小结返回顶部为什么要用函数 现在python届发生了一个大事件&#xff0c;len方法突然不能直接用了。。。 然后现在有一个需求&#xff0c;让你计算hello world的长度&#xff0c;你怎么计算&…

java创建对象过七夕,想 new 个对象过七夕,她却抛了异常

原标题&#xff1a;想 new 个对象过七夕&#xff0c;她却抛了异常关注 “”导读&#xff1a;单身之痛......作者 | 轩辕之风来源 | 编程技术宇宙(ID&#xff1a;xuanyuancoding)七夕又到了&#xff0c;单身汪们太难了&#xff0c;每年不仅要经历双十一&#xff0c;要经历2.14&a…

【Redis】解析Redis和Java传递数据

在Java中使用Redis之前需要导入 jedis.jar 包&#xff0c;由于Redis是基于key-value进行数据存储&#xff0c;java中的数据存储到Redis中有许多方式&#xff0c;这里笔者介绍采用JSON字符串和对象序列化两种方式。 1&#xff0c;使用JSON方式 首先将Java对象转化为JSON字符串 …

sql查询php,SQL查询或PHP?

我想看看哪里做错了&#xff0c;但我不能找到问题&#xff0c;我不能更新我的数据库&#xff0c;有人可以看到我的代码什么是缺少的&#xff1f;总是说我“数据库错误”码&#xff1a;if(isset($_POST[enviar])) {$types"";for ($i0; $i$types$types.$_POST[texames]…

C#带按钮的文本框TextBoxContainButton

经常需要用到各种组合控件&#xff0c;每次组合太麻烦&#xff0c;通过打包成自定义控件&#xff0c;方便调用。 带按钮的文本框&#xff0c;如下图&#xff1a; 文本框内可以输入文本&#xff0c;响应文本框内容变化事件&#xff0c;按钮可以设置点击事件&#xff0c;图标 通过…

PHP用gd库给图片添加水印,php用GD库给图片添加水印

php用GD库给图片添加文字水印&#xff0c;整个代码比较简单&#xff0c;DEMO如下&#xff1a;/*打开图片*///1、配置图片路径$src "aeroplane.jpg";//2、获取图片信息$info getimagesize($src);//3、获取图片类型$type image_type_to_extension($info[2], false);…

Windows单机配置Zookeeper环境

转自&#xff1a;http://www.jianshu.com/p/f7037105db46 首先要确保机器已经安装好java环境&#xff0c;并且配置好环境变量 http://apache.fayea.com/zookeeper/current/ 下载后&#xff0c;解压缩到硬盘&#xff0c;我这里解压到了 D:\WorkSoftware\zookeeper_3.4.9 解压缩在…

php 方法里用外部变量的值,PHP实现函数内修改外部变量值的方法示例

本文实例讲述了PHP实现函数内修改外部变量值的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;直接上代码&#xff0c;如下&#xff1a;$a_str ab;function change_val(){global $a_str; // 通过设置全局变量&#xff0c;修改变量值//$a_str abc;$a_str $a_str…

三层架构—简析

三层学习完了&#xff0c;第一次验收的时候&#xff0c;自己理解的也不是非常到位&#xff0c;后来又又一次敲了一遍登陆样例&#xff0c;查阅了一些资料 进行第二次验收才感觉清晰了很多。之前画时序图时我就想过时序图基本上也是非常好的体现了三层&#xff0c;当时也和别人讨…

php配置文件加载顺序,php extension 加载顺序问题

有的php扩展&#xff0c;加载是有先后顺序的&#xff0c;如果搞错了&#xff0c;会导致扩展无法加载。1&#xff0c;pdo_sqlsrv是sqlserver扩展&#xff0c;如果在pdo扩展之前加载就会报以下错误PHP Warning: PHP Startup: Unable to load dynamic library pdo_sqlsrv.so (trie…

机房收费系统之结账

其实&#xff0c;我认为机房收费系统中结账的部分是耗我精力最多的。首先我就不明确结账是干嘛的&#xff0c;所以一上来就晕乎乎。后来看了一篇博客说结账方便老板管理的才明确了为什么是“操作员”。这里面要理清的一点&#xff0c;结账的内容是未结账的。 暂时汇总的信息&am…

linux php oauth安装,php – 无法在Linux上安装OAuth

我正在尝试在Linux上安装OAuth,但它无法正常工作.我正在运行此命令&#xff1a;yum install php-devel然后pecl install oauth然后我得到这个输出&#xff1a;downloading oauth-1.2.2.tgz ...Starting to download oauth-1.2.2.tgz (45,348 bytes).............done: 45,348 b…

[NOIP2010提高组]关押罪犯

题目&#xff1a;洛谷P1525、Vijos P1776、codevs1069。 题目大意&#xff1a;有一些罪犯&#xff0c;两个罪犯之间可能会发生冲突&#xff0c;冲突有个影响力&#xff0c;而如果两个罪犯在不同监狱里&#xff0c;就可以避免冲突。现在有两个监狱&#xff0c;要你安排一种关押罪…