热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

awsmysql副本滞后_使用AmazonRDSforMySQL排查高副本滞后问题

示例输出B显示主日志文件是mysql-bin-changelog.066552。这也是主状态的文件参数,意味着IO_THREAD与主数据库实例保持一致。在副本输出中&

示例输出 B 显示主日志文件是 mysql-bin-changelog.066552。这也是主状态的文件参数,意味着IO_THREAD 与主数据库实例保持一致。在副本输出中,SQL 线程正在执行 Relay_Master_Log_File: mysql-bin-changelog.066530。这意味着 SQL_THREAD 滞后 12 个二进制日志。

通常,IO_THREAD 不会导致较高的复制延迟,因为 IO_THREAD 仅从主数据库实例读取二进制日志。但是,网络连接和网络延迟会影响服务器之间的读取速度。副本 IO_THREAD 可能会由于高带宽的使用而变慢。

如果副本 SQL_THREAD 是复制延迟的产生原因,那么这些延迟可能是由于以下原因导致的:

主数据库实例上长时间运行的查询

数据库实例类大小或存储空间不足

在主数据库实例上执行的并行查询

同步到副本数据库实例上的磁盘的二进制日志

副本上的 Binlog_format 设置为 ROW

副本创建滞后

主实例上长时间运行的查询

在主数据库实例上长时间运行的查询需要花费相同的时间在副本数据库实例上运行,这会增加 seconds_behind_master。例如,如果您在主数据库实例上启动了更改,该更改的运行时间为一个小时,那么在副本开始运行更改时,滞后时间将为一小时。由于更改可能还需要一个小时才能在副本上完成,因此在更改完成时,总滞后大约为两小时。这种延迟在预料之中,但您可以通过监控主实例上的缓慢查询日志来尽可能减少这种滞后。您还可以通过识别长时间运行的语句来减少滞后。然后,将长时间运行的语句分解为多个较小的语句或事务。有关更多信息,请参阅访问 MySQL 慢速查询日志和常规日志。

数据库实例类大小或存储空间不足

如果副本数据库实例类或存储配置小于主实例,则副本将受到限制,无法与主实例上的更改保持同步。确保副本的数据库实例类型与主数据库实例相同或级别更高。为保证复制有效运行,每个只读副本需要与源数据库实例相同数量的计算和存储资源。有关更多信息,请参阅数据库实例类。

在主数据库实例上执行的并行查询

如果您在主实例上执行并行查询,则它们将以串行顺序在副本上提交。这是因为默认情况下,MySQL 复制是单线程 (SQL_THREAD)。如果并行执行对源数据库实例的大量写入,则应使用单个 SQL_THREAD 序列化对只读副本的写入。这可能会导致源数据库实例和只读副本之间的滞后。

多线程(并行)复制适用于 MySQL 5.6、MySQL 5.7 及更高版本。有关多线程复制的更多信息,请参阅 二进制日志记录选项和变量的MySQL 文档部分。

多线程复制会导致复制中出现差距。例如,在跳过复制错误时,因为很难识别跳过了哪些事务,所以多线程复制并非最佳实践。这可能会导致主数据库实例和副本数据库实例之间的数据一致性存在差距。

同步到副本数据库实例上的磁盘的二进制日志

如果在副本上启用自动备份,则可能需要执行额外操作才能将二进制日志同步到副本上的磁盘。sync_binlog 参数的默认值设置为 1。如果将此值更改为0,则您将禁用 MySQL 服务器将二进制日志同步到磁盘的功能。操作系统 (OS) 偶尔会将二进制日志刷入磁盘,而非直接将日志记录到磁盘。

如果禁用二进制日志同步,这可以减少在每次提交时将二进制日志同步到磁盘所需的性能开销。然而,如果出现电源故障或操作系统崩溃,则某些提交可能无法同步到二进制日志。这可能会影响时间点恢复 (PITR) 功能。有关更多信息,请参阅 sync_binlog的 MySQL 文档部分。

副本上的 Binlog_format 设置为 ROW

如果将副本上的 binlog_format 设置为 ROW,并且执行更新的表缺少主键,则默认情况下,slave-rows-search-algorithms = TABLE_SCAN,INDEX_SCAN运行。此参数还会在副本上执行全表扫描。在这种情况下,短期解决方案是将搜索算法更改为 INDEX_SCAN,HASH_SCAN,以减少全表扫描的开销。对于永久解决方案,请向每个表添加显式主键。

有关 slave-rows-search-algorithms 参数的更多信息,请参阅slave-rows-search-algorithms的 MySQL 文档部分。

副本创建滞后

Amazon RDS 通过生成主实例的数据库快照来创建 MySQL 主实例的只读副本。然后,Amazon RDS 会恢复快照以创建新的数据库实例(副本)并在两者之间建立复制关系。

Amazon RDS 需要花时间来创建新的只读副本。建立复制关系后,会出现相当于创建主实例备份所需时长的滞后。要尽可能减少此滞后,请在调用副本创建之前创建手动备份。然后,副本创建过程生成的快照属于增量备份,速度更快。

从快照恢复只读副本时,副本不会等待所有数据从 Amazon Simple Storage Service (Amazon S3) 全部传输到与副本数据库实例关联的 Amazon Elastic Block Store (Amazon EBS) 卷。副本数据库实例可用于执行数据库操作,并且通过现有 Amazon EBS 快照创建的新卷会在后台加载(延迟加载)。

对于 Amazon RDS for MySQL 副本(基于 EBS 的卷),最初副本滞后可能会增加,因为加载效应可能会影响复制性能。有关更多信息,请参阅初始化 Amazon EBS 卷。

考虑启用 InnoDB 缓存预热功能,该功能可通过保存主数据库实例缓存池的当前状态,然后在还原的只读副本上重新加载缓存池来提高性能。有关 InnoDB 缓存预热的更多信息,请参阅 Amazon RDS 上的 MySQL。



推荐阅读
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • 解决MySQL 5.1服务器无法正确识别中文字符的问题
    在使用MySQL 5.1服务器时,可能会遇到无法正确识别中文字符的问题。由于相关资料较少且不够全面,本文将详细阐述解决方案。首先,需要检查MySQL的配置文件,确保字符集设置正确,并通过命令行工具验证当前的字符编码配置。此外,建议更新到最新版本以避免此类问题。 ... [详细]
author-avatar
ET
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有