位置: 编程技术 - 正文

mysql同步问题之Slave延迟很大优化方法

编辑:rootadmin

推荐整理分享mysql同步问题之Slave延迟很大优化方法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发。简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master。

ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制。不过,它只能支持一个实例下多个 database 间的并发复制,并不能真正做到多表并发复制。因此在较大并发负载时,slave还是没有办法及时追上master,需要想办法进行优化。

另一个重要原因是,传统的MySQL复制是异步(asynchronous)的,也就是说在master提交完后,才在slave上再应用一遍,并不是真正意义上的同步。哪怕是后来的Semi-sync Repication(半同步复制),也不是真同步,因为它只保证事务传送到slave,但没要求等到确认事务提交成功。既然是异步,那肯定多少会有延迟。因此,严格意义上讲,MySQL复制不能叫做MySQL同步(处女座的面试官有可能会在面试时把说成MySQL同步的一律刷掉哦)。

另外,不少人的观念里,slave相对没那么重要,因此就不会提供和master相同配置级别的服务器。有的甚至不但使用更差的服务器,而且还在上面跑多实例。

综合这两个主要原因,slave想要尽可能及时跟上master的进度,可以尝试采用以下几种方法:

1、采用MariaDB发行版,它实现了相对真正意义上的并行复制,其效果远比ORACLE MySQL好的很多。在我的场景中,采用MariaDB作为slave的实例,几乎总是能及时跟上master。如果不想用这个版本的话,那就老实等待官方5.7大版本发布吧;

关于MariaDB的Parallel Replication具体请参考:Replication and Binary Log Server System Variables#slave_parallel_threads ? MariaDB Knowledge Base

2、每个表都要显式指定主键,如果没有指定主键的话,会导致在row模式下,每次修改都要全表扫描,尤其是大表就非常可怕了,延迟会更严重,甚至导致整个slave库都被挂起,可参考案例:mysql主键的缺少导致备库hang;

mysql同步问题之Slave延迟很大优化方法

3、应用程序端多做些事,让MySQL端少做事,尤其是和IO相关的活动,例如:前端通过内存CACHE或者本地写队列等,合并多次读写为一次,甚至消除一些写请求;

4、进行合适的分库、分表策略,减小单库单表复制压力,避免由于单库单表的的压力导致整个实例的复制延迟;

其他提高IOPS性能的几种方法,根据效果优劣,我做了个简单排序:

1、更换成SSD,或者PCIe SSD等IO设备,其IOPS能力的提升是普通K SAS盘的数以百倍、万倍,甚至几十万倍计;

2、加大物理内存,相应提高InnoDB Buffer Pool大小,让更多热数据放在内存中,降低发生物理IO的频率;

3、调整文件系统为 XFS 或 ReiserFS,相比ext3可以极大程度提高IOPS能力。在高IOPS压力下,相比ext4有更稳健的IOPS表现(有人认为 XFS 在特别的场景下会有很大的问题,但我们除了剩余磁盘空间少于%时引发丢数据外,其他的尚未遇到);

4、调整RAID级别为raid 1+0,它相比raid1、raid5等更能提高IOPS性能。如果已经全部是SSD设备了,可以2块盘做成RAID 1,或者多快盘做成RAID 5(并且可以设置全局热备盘,提高阵列容错性),甚至有些土豪用户直接将多块SSD盘组成RAID ;

5、调整RAID的写cache策略为WB或FORCE WB,详情请参考:常用PC服务器阵列卡、硬盘健康监控 以及 PC服务器阵列卡管理简易手册;

6、调整内核的io scheduler,优先使用deadline,如果是SSD,则可以使用noop策略,相比默认的cfq,个别情况下对IOPS的性能提升至少是数倍的。

其他更多方法,欢迎大家帮忙补充 :)

MySQL-tpch 测试工具简要手册 tpch是TPC(TransactionProcessingPerformanceCouncil)组织提供的工具包。用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能。它包含了一整套面向商业

MySQL字符编码设置方法 通过showvariableslike'character_set%%';查看编码修改mysql的编码方式可以有以下几个:1.通过配置文件修改my.ini(windows下)或/etc/my.cnf(linux下)分别添加如下内容[mysq

MySql二进制连接方式详解 使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接mysql服务器的简单实例:[root@h

标签: mysql同步问题之Slave延迟很大优化方法

本文链接地址:https://www.jiuchutong.com/biancheng/347536.html 转载请保留说明!

上一篇:mysql主键的缺少导致备库hang住(mysql主键冲突但数据不存在)

下一篇:MySQL-tpch 测试工具简要手册

  • 广告行业的税负率
  • 耕地占用税退税政策
  • 以前年度损益调整在利润表中怎么填
  • 在建工程人员工资计入产品成本吗
  • 财务报表与分析课后答案
  • 未开票收入次月如何申报增值税
  • 承兑贴现几个点是月息还是年息
  • 坏账准备计入营业收入如何报年报
  • 企业买车算固定收入吗
  • 连续三个月发烧怎么回事
  • 报销费用明细和发票
  • 13%税开成了3%怎么报税
  • 企业租赁个人房屋怎么交税
  • 结构性存款是
  • 代采账务处理
  • 取得建安类专用发票能抵扣进项税吗
  • 收购烟叶委托加工烟丝组成计税价格
  • 应付账款不付处理分录如何写?
  • 企业的商品产品包括
  • 特许权使用费如何缴纳增值税
  • 公司不给发公司
  • 所得税按利润总额的25%计算缴纳
  • 银行贷款受托支付受托人有风险吗
  • 已预缴税款金额可以不申请退税吗
  • 小规模纳税人附加税减半征收政策2023
  • 微软推出windows1
  • 专项储备属于什么科目代码
  • 一个产品要有什么认证
  • 电脑老是弹出广告怎么处理
  • 事业单位预付款会计分录
  • 年度应付职工薪酬在科目余额表哪里看
  • 一公顷等于多少千米
  • 有关增值税的计算真题
  • 税法规定个人收入超过3500元的超过部分应
  • 投资者减除费用60000
  • php怎么传递参数
  • java+php
  • Vue2 Element description组件 列合并
  • trainer 平替
  • touch命令创建多个文件
  • 如何在国家税务局增值税纳税申报
  • 研发失败能做加工企业吗
  • 大华摄像头海康威视录像机
  • 网站用masonry瀑布流无限加载重叠解决方法
  • 数据库管理中负责数据模式定义的数据库语言是
  • 利润表和资产负债表
  • access调用sql
  • 营业执照变更需要本人到场吗
  • 专项附加可以随便填吗
  • 车船税应计入税金及附加吗
  • 公司与公司的往来款计入什么科目
  • 车船税每年都是一样的吗
  • 减免的增值税要交所得税吗
  • 上期留抵税额怎么在账上提现
  • 计提工资时一定要发票吗
  • 会计做账什么意思
  • 新会计准则关于贷款损失准备
  • 每月发票认证时间
  • 小规模企业购买车辆发票可以抵税吗
  • 职工福利费核算要求
  • win10 mysql 5.6.35 winx64免安装版配置教程
  • win10升级后c盘莫名其妙满了
  • linux系统百科
  • linux rpm如何安装
  • winxp远程桌面
  • win8任务管理器打不开怎么办
  • win10系统自带虚拟机无法启
  • vs2013怎么配置环境
  • 框架常用注解
  • cocos2d教程
  • javascript cookies
  • python基础教程chm
  • js怎么设置图片大小
  • js继承的方法
  • js图片预览
  • 课题研究经费预算一般多少比较合适
  • 广东国家电子税务全电发票
  • 国家税务总局23号文件
  • 从国外网购东西回来要交税吗
  • 公司财税知识
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设