MSQL slave延迟很大的优化方法案例

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的进度,可以尝试采用以下几种方法:

    采用MariaDB发行版,它实现了相对真正意义上的并行复制,其效果远比ORACLE MySQL好的很多。在我的场景中,采用MariaDB作为slave的实例,几乎总是能及时跟上master。如果不想用这个版本的话,那就老实等待官方5.7大版本发布吧;
    关于MariaDB的Parallel Replication具体请参考:Replication and Binary Log Server System Variables#slave_parallel_threads ? MariaDB Knowledge Base
    每个表都要显式指定主键,如果没有指定主键的话,会导致在row模式下,每次修改都要全表扫描,尤其是大表就非常可怕了,延迟会更严重,甚至导致整个slave库都被挂起,可参考案例:mysql主键的缺少导致备库hang;
    应用程序端多做些事,让MySQL端少做事,尤其是和IO相关的活动,例如:前端通过内存CACHE或者本地写队列等,合并多次读写为一次,甚至消除一些写请求;
    进行合适的分库、分表策略,减小单库单表复制压力,避免由于单库单表的的压力导致整个实例的复制延迟;
    其他提高IOPS性能的几种方法,根据效果优劣,我做了个简单排序:
        更换成SSD,或者PCIe SSD等IO设备,其IOPS能力的提升是普通15K SAS盘的数以百倍、万倍,甚至几十万倍计;
        加大物理内存,相应提高InnoDB Buffer Pool大小,让更多热数据放在内存中,降低发生物理IO的频率;
        调整文件系统为 XFS 或 ReiserFS,相比ext3可以极大程度提高IOPS能力。在高IOPS压力下,相比ext4有更稳健的IOPS表现(有人认为 XFS 在特别的场景下会有很大的问题,但我们除了剩余磁盘空间少于10%时引发丢数据外,其他的尚未遇到);
        调整RAID级别为raid 1+0,它相比raid1、raid5等更能提高IOPS性能。如果已经全部是SSD设备了,可以2块盘做成RAID 1,或者多快盘做成RAID 5(并且可以设置全局热备盘,提高阵列容错性),甚至有些土豪用户直接将多块SSD盘组成RAID 50;
        调整RAID的写cache策略为WB或FORCE WB,详情请参考:常用PC服务器阵列卡、硬盘健康监控 以及 PC服务器阵列卡管理简易手册;
        调整内核的io scheduler,优先使用deadline,如果是SSD,则可以使用noop策略,相比默认的cfq,个别情况下对IOPS的性能提升至少是数倍的。

时间: 2024-08-31 06:14:16

MSQL slave延迟很大的优化方法案例的相关文章

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

一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master.    ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制.不过,它只能支持一个实例下多个

浅谈常用的九大SEO优化方法

中介交易 SEO诊断 淘宝客 云主机 技术大厅 前段时间SEO行业惊现神奇新闻,一个牛人将SEO在几个月时间里做到第一.这段时间一直都在实践seo的一些技巧,试过很多 SEO方法,但是比不得某人强,在短短时间里就将SEO做到第一啊.当然咱只能慢慢来,否则排名升的太快也不是好事啊.下面是某位站长在seo工作中碰到的一些迷惑,其实细细想来,谁没有个困惑呢?看笔者如何解析这些迷惑! 1.网站内部优化.大家知道网站内部优化很重要,所以都会去做,但是一般几个星期之内没什么效果.(ps:内部优化一般情况下s

mysql5.6启动占用内存很大的解决方法

调整my.cnf 参数,重新配置(系统默认配置太高直接占用400M内存,小玩家玩不起呢)即可 performance_schema_max_table_instances=200 table_definition_cache=200 table_open_cache=128 下面附一个相关的my.cnf配置文件的说明 [client] port = 3306 socket = /tmp/mysql.sock   [mysqld] port = 3306 socket = /tmp/mysql.s

扫雷实用帖:HBase读延迟的12种优化套路

任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结起来,大家遇到的主要问题无非是Full GC异常导致宕机问题.RIT问题.写吞吐量太低以及读延迟较大.   Full GC问题的解决方案目前主要有两方面需要注意,一方面需要查看GC日志确认是哪种Full GC,根据Full GC类型对JVM参数进行调优,另一方面需要确认是否开启了BucketCach

php多种优化方法

php多种优化方法    PHP 优化配置之一 让论坛速度更快 PHP加速设置 PHP加速:Zend Optimizer优化PHP程序 Zend Optimizer V2.5.7 For Windows 软件语言:英文 运行环境:Win9x/NT/2000/XP Zend Optimizer V2.5.7 For Windows软件介绍: Zend Optimizer用优化代码的方法来提高PHP 4.0应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Comp

电商的井喷式发展 为第三方支付企业带来很大的增长空间

近年来,电子商务的井喷式发展,为第三方支付企业带来很大的增长空间.但是,支付行业下一波的大发展将来自传统行业的电子化.伴随着传统行业电子化程度的不断提高,行业自身对于电子支付的需求也随之提升.据艾瑞咨询分析师程善宝预计,未来在航空物流保险基金教育医疗和贸易市场等行业,电子化的发展将出现数十万亿的新增市场空间. 然而,在传统行业,对于众多中小企业商户来说,传统银行似乎并无法满足其需求.究其原因,一是以"资金沉淀"为主要利益点的银行,更加青睐"垒大户"的业务模式.相比较

内存在300m左右-WebView 关于显示图片轮播的网页,占很大内存,有什么方法优化

问题描述 WebView 关于显示图片轮播的网页,占很大内存,有什么方法优化 显示轮播图片40张,内存在300M左右,如何解决?同时图片切换也很不流畅 解决方案 ViewPager 显示图片,轮播 解决方案二: 以最省内存的方式读取本地资源的图片 Android 中加载图片的颜色模式有四种,分别是:ALPHA_8:每个像素占用 1byte 内存.ARGB_4444:每个像素占用 2byte 内存.ARGB_8888:每个像素占用 4byte 内存.RGB_565:每个像素占用 2byte 内存.

MySQL延迟关联性能优化方法

  这篇文章主要介绍了MySQL延迟关联性能优化方法,本文讲解了延迟关联的背景.延迟关联的分析.延迟关联的解决等内容,需要的朋友可以参考下 [背景] 某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下.使用工具查看数据库正在执行的sql ,排在前面的大部分是: 代码如下: SELECT id, cu_id, name, info, biz_type, gmt_create, gmt_modified,start_time, end_time, market_type, b

【MySQL】常见slave 延迟原因以及解决方法

一  序言 在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: check_ins_slave_lag (err_cnt:1)critical-slavelag on ins:3306=39438 相信slave 延迟是MySQL dba 遇到的一个老生长谈的问题了.先来分析一下slave延迟带来的风险   1. 异常情况下,主从HA无法切换.HA 软件需要检查数据的一致性,延迟时,主备不一致.    2. 备库复制hang会导致备份失败(flush tables wi