`

如何解决主从数据库同步延迟问题?

 
阅读更多
如何解决主库插入记录后,无法从从库中及时读取的问题,如何从架构上避免这种问题
在网上见过新建一个版本库的表,然后利用mysql proxy判断数据是否是最新的,然后路由到主库或者是从库,请问这个方案是可行的吗?具体如何操作?

作者:姜健
链接:https://www.zhihu.com/question/20025096/answer/82440882
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题主说的方案感觉非常不靠谱。
不过mysql-proxy本人也几乎没怎么接触,它能否实现上诉功能有些不大确定,即使它有,也不建议为了这个就用它,官网自己都不推荐用到生产环境。

针对主从延迟,本人的经验如下:
业务量不大的
主库能处理业务就全放在主库吧,从库只做灾备,备份,对实时性要求不高的统计报表类工作;
已经出现延迟的
一般来说,就慢慢等吧,试图通过重启db之类的操作是无法解决的,还会因为大事务回滚再重做导致花的时间更长。
延迟N天无法解决的
那就重做slave。
为什么会延迟N天,难道仅仅是因为从库单线程吗?
我感觉大部分都是主库上采用mixed的binlog_format,由于某种限制,无法基于statement,只好row模式复制。
那么如果当前sql是全表扫描,传到slave上执行时就是茫茫多次的全表扫描了。
一般来说在slave上show proceslist看查看当前的system user正在执行什么,那就是问题SQL。如果pos点一直不动,也可以去主库对应的binlog上查看下执行的是什么玩意。
出现延迟时,查看下当前slave的cpu和磁盘状况
一般来说如果从库没有其他业务,单线程的原因,cpu跑满一个核已经是极限了。磁盘io满的话,确认下是否有其他进程或mysql线程影响了它(比如从库正在dump或者超大的sql在执行),也可以尝试调整下slave上关于io的几个参数
从库raid卡,务必设置成write back的写策略
这点本人深受其害,查了几个月才发现为什么我的SSD io性能这么烂。
批量的dml操作
批量的dml操作如果不做处理,一般必然会出现延迟,建议业务低峰期执行,并将批量操作做下调整,一次dml 10000行,sleep一会,再dml 10000行。
具体的行数和sleep需要自己根据业务确定,能保证从库不延迟就好。

一点别的tips:
如果还是经常性的短时间延迟,那就尝试加大从库的硬件配置,比如上sata SSD,pcie等
延迟的监控到位,可通过pt-heart-beat来准确监控延迟值,及时发现查看。
5.5以后版本的,可以考虑采用半同步复制,能解决少量延迟引起的问题,不过对tps性能损耗较大
升级到mysql 5.7吧,多线程复制,几乎完美解决单线程复制引起的从库延迟。


作者:姜健
链接:https://www.zhihu.com/question/20025096/answer/82440882
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题主说的方案感觉非常不靠谱。
不过mysql-proxy本人也几乎没怎么接触,它能否实现上诉功能有些不大确定,即使它有,也不建议为了这个就用它,官网自己都不推荐用到生产环境。

针对主从延迟,本人的经验如下:
业务量不大的
主库能处理业务就全放在主库吧,从库只做灾备,备份,对实时性要求不高的统计报表类工作;
已经出现延迟的
一般来说,就慢慢等吧,试图通过重启db之类的操作是无法解决的,还会因为大事务回滚再重做导致花的时间更长。
延迟N天无法解决的
那就重做slave。
为什么会延迟N天,难道仅仅是因为从库单线程吗?
我感觉大部分都是主库上采用mixed的binlog_format,由于某种限制,无法基于statement,只好row模式复制。
那么如果当前sql是全表扫描,传到slave上执行时就是茫茫多次的全表扫描了。
一般来说在slave上show proceslist看查看当前的system user正在执行什么,那就是问题SQL。如果pos点一直不动,也可以去主库对应的binlog上查看下执行的是什么玩意。
出现延迟时,查看下当前slave的cpu和磁盘状况
一般来说如果从库没有其他业务,单线程的原因,cpu跑满一个核已经是极限了。磁盘io满的话,确认下是否有其他进程或mysql线程影响了它(比如从库正在dump或者超大的sql在执行),也可以尝试调整下slave上关于io的几个参数
从库raid卡,务必设置成write back的写策略
这点本人深受其害,查了几个月才发现为什么我的SSD io性能这么烂。
批量的dml操作
批量的dml操作如果不做处理,一般必然会出现延迟,建议业务低峰期执行,并将批量操作做下调整,一次dml 10000行,sleep一会,再dml 10000行。
具体的行数和sleep需要自己根据业务确定,能保证从库不延迟就好。

一点别的tips:
如果还是经常性的短时间延迟,那就尝试加大从库的硬件配置,比如上sata SSD,pcie等
延迟的监控到位,可通过pt-heart-beat来准确监控延迟值,及时发现查看。
5.5以后版本的,可以考虑采用半同步复制,能解决少量延迟引起的问题,不过对tps性能损耗较大
升级到mysql 5.7吧,多线程复制,几乎完美解决单线程复制引起的从库延迟。
分享到:
评论

相关推荐

    主从数据库的配置和使用案例(可以直接运行)

    在实际部署时,还需要考虑网络延迟、数据一致性、故障转移等问题。例如,可以设置心跳检测和自动切换机制,当主库出现故障时,从库能够及时接管,保证服务的连续性。 总的来说,主从数据库配置和使用是提高系统性能...

    springboot2.0+mybatis主从数据库双数据源。

    综上所述,"springboot2.0+mybatis主从数据库双数据源"项目旨在提供一个高效的数据库解决方案,通过分离读写操作,提升系统性能,并通过严谨的事务管理确保数据一致性。对于开发人员来说,理解和掌握这些知识点对于...

    mysql主从数据库同步

    MySQL 主从数据库同步是数据库高可用性和数据冗余的一种常见实现方式,确保数据在多个服务器间保持一致。在这个过程中,一台MySQL服务器作为主服务器,负责接收并处理所有的写入操作,而其他服务器作为从服务器,从...

    51_说说MySQL读写分离的原理?主从同步延时咋解决?.zip

    本文将详细探讨读写分离的原理以及如何解决主从同步延时问题。 首先,理解读写分离的原理。在传统的单数据库架构中,所有的读写操作都集中在一台服务器上,这可能导致数据库性能瓶颈。而读写分离则是将读操作和写...

    oracle 主从同步

    - 使用RMAN将备用数据库与主数据库同步。 #### 1.4 MAXIMIZE PERFORMANCE和MAXIMIZE PROTECTION模式转换 Oracle DataGuard支持两种主要的保护模式:MAXIMIZE PERFORMANCE和MAXIMIZE PROTECTION。这两种模式之间的...

    springboot 配置主从数据库涉及的各类细节 对初次解除主从数据库的开发

    在本篇文章中,我们将深入探讨如何在Spring Boot项目中配置并实现主从数据库,以便为初次接触该领域的开发者提供详尽的指导。主从数据库配置是数据库管理中的一个高级主题,它通过设置一个主数据库(Master)和一个...

    mysql主从数据库配置

    MySQL主从数据库配置是数据库高可用性和负载均衡的重要实践,它允许数据从一个主数据库(Master)异步复制到一个或多个从数据库(Slave)。这种配置对于处理大规模数据操作和保证数据一致性至关重要。 主从复制的...

    mysql主从同步解决方案及优化

    淘宝资深工程师丁奇在2009年的分享中详细介绍了MySQL主从同步的原理、配置、优化以及在实际应用中遇到的问题和解决方案。 首先,MySQL主从同步的基本概念指的是在一个数据库实例(主库)上对数据进行修改操作后,...

    Oracle10G 数据库同步

    Oracle10G数据库同步是IT领域中一个关键的议题,特别是在多数据中心或灾备环境的管理中。Oracle10G是Oracle数据库的一个重要版本,它引入了许多增强功能,旨在提高性能、安全性和可用性。本方案针对Oracle10G数据库...

    减少mysql主从数据同步延迟问题的详解

    MySQL主从数据同步是数据库高可用性和数据冗余的重要手段,但随之而来的是可能出现的数据同步延迟问题。这种延迟可能由多种因素引起,包括网络延迟、主服务器(master)和从服务器(slave)的负载以及系统配置等。...

    MySql主从数据库设置

    MySQL主从数据库设置是数据库高可用性和数据冗余的一种常见策略,它允许数据在多个服务器之间同步,确保即使主数据库发生故障,从数据库也能无缝接管,保证服务的连续性。以下将详细介绍MySQL主从复制的基本概念、...

    Mysql主从半同步配置

    在当今的IT环境下,数据库的高可用性和数据一致性要求越来越高,MySQL主从复制技术也因此受到广泛应用。MySQL主从半同步复制是介于异步复制和全同步复制之间的一种模式,它提供了更好的数据安全性和一致性,同时也尽...

    mysql主从数据库的一些资料

    1. **延迟问题**:主从复制可能存在数据同步延迟,需要监控并调整复制延迟阈值,优化网络环境,或者采用半同步复制等策略减少延迟。 2. **错误处理**:主库和从库可能出现错误导致复制中断,如主键冲突、SQL语法错误...

    sql server 主从同步配置

    - 对于生产环境而言,还需要考虑数据同步的延迟问题,确保在高并发场景下也能保持良好的性能。 #### 五、总结 通过上述步骤,我们可以在SQL Server环境中成功配置出一套高效的主从同步系统。这不仅可以提高数据的...

    读写分离时主从复制的数据延迟如何处理

    然而,在这种模式下,由于网络延迟、系统负载等原因,主从库间可能存在数据同步延迟,这会给读写分离架构带来数据一致性问题。 处理读写分离时主从复制的数据延迟问题,关键在于识别延迟并制定合适的策略来应对。在...

    MySQL主从服务器数据库同步的实现 (1).pdf

    MySQL主从服务器数据库同步是一种常见的高可用性和负载均衡策略,特别是在大型系统中,用于确保数据的一致性并分散读写操作。以下是对MySQL主从同步技术的详细解释: 1. **主从同步原理**: - MySQL的同步机制基于...

    mysql主从数据库的配置说明文档.pdf

    MySQL主从数据库配置是数据库高可用性和负载均衡的重要实践,主要应用于解决数据库性能瓶颈和确保数据安全性。在本文档中,我们将深入理解MySQL主从复制的原理、优势以及配置步骤。 1. **主从复制原理**: MySQL的...

    php框架CodeIgniter主从数据库配置方法分析

    在很多项目中,为了提高数据库的性能与可用性,常常会使用到主从数据库配置。在CodeIgniter框架中,这种配置可以有效地实现数据库的读写分离,提高数据查询效率,并保障数据的安全性。 配置主从数据库主要是在...

Global site tag (gtag.js) - Google Analytics