RDS主备复制关系异常如何解决?

RDS主备复制关系异常如何解决?

有时候客户会遇到华为云关系型数据库主备复制关系异常的情况,可能原因是误删除默认安全组策略,下面主要针对这个场景进行分析,供您参考。

有时候客户会遇到华为云关系型数据库主备复制关系异常的情况,可能原因是误删除默认安全组策略,下面主要针对这个场景进行分析,供您参考。

  • 解决方案

    1、登录管理控制台。

    2、单击管理控制台左上角,选择区域和项目。

    3、单击页面左上角,选择“数据库 > 云数据库 RDS”。

    4、在“实例管理”页面,选择指定的实例,单击实例名称。

    5、在“基本信息”页面,单击目标安全组名称,进入实例安全组页面。

    在“入方向规则”页签,单击“添加规则”,选择Any协议,源地址为自身6、安全组,即安全组的源端要有安全组自己 。

    7、添加完策略之后,主备复制的关系便会恢复正常。

备份期间DDL操作导致备份失败

备份期间DDL操作导致备份失败

  • 场景描述

    实例连续两天备份失败,备份时间窗内有DDL操作。


  • 问题原因

    MySQL全量备份基于xtrabackup,为保证数据一致性,全量备份操作与DDL操作存在元数据锁冲突,会导致备份一直阻塞等待,超时失败。


    执行“show processlist”命令,排查业务侧在备份时间窗内是否有DDL操作。

  • 解决方案

    1、停止相应的DDL操作后,重试手动备份。

    2、建议此后的DDL业务变更操作应尽量避开备份窗口。


MySQL主备复制延迟场景及解决办法

MySQL主备复制延迟场景及解决办法

  • 场景1:主库执行了大事务

    大事务一般指一个事务中包含大量的数据更新操作,例如一个事务包含几万次DML(insert,update,delete)操作、一条SQL语句批量更新了上万行数据等,大事务往往本身的执行时间很长(分钟级)。当主实例执行了大事务后,会产生大量的Binlog日志,备机或只读节点拉取这些Binlog耗时比一般事务长,且至少需要花费与主实例相同的时间来回放这些事务的更新,从而导致备机或只读节点出现复制延迟。

    排查方法:

    1. 对于包含大量DML语句的大事务,使用如下命令,找到长时间执行的事务。
    2. select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G;
    3. 对于一条SQL语句执行大量数据的大事务,执行show full processlist,查找是否存在长时间执行的delete或update语句。
    4. 分析全量日志或慢日志,检查是否有大事务。

    解决方法:

    1. 为了保证主从数据的一致性,需要等待大事务执行完成,主备复制延迟才能恢复。
    2. 业务侧避免此类大事务,可以将大事务拆分为小事务,分批执行。例如,通过where条件或limit语句限制每次要更新的数据量。


  • 场景2:对无主键表更新

    RDS for MySQL的Binlog采用row格式,对每一行的数据更新,都会形成row格式Binlog event记录。例如:一个update语句更新100行数据,那么row格式的Binlog中会形成100行update记录,备机或只读回放时会执行100次单行update。

    只读节点和备机在回放主库的Binlog event时,会根据表的主键或者二级索引来检索需要更改的行。如果对应表未创建主键,则会产生大量的全表扫描,从而降低了Binlog日志的应用速度,产生复制延迟。

    排查方法:

    通过show create table xxx,分析执行慢的update和delete语句对应的表,分析是否有主键。

    解决方法:

    给无主键表增加主键,给缺少二级索引的表增加索引。

  • 场景3:DDL操作

    DDL操作往往执行时间很长,尤其是表数据量很大时。通常情况下,只读节点或备机回放一个DDL操作的时间和主库花费的时间基本一致。因此,当主机执行了大表的DDL操作后,备机和只读节点在回放该DDL期间,复制时间必然是一致增大的。

    解决方法:

    该场景为正常现象,等DDL执行完成后,主备复制延迟才能恢复。建议在业务低峰期执行DDL操作。

  • 场景4:只读实例等待MDL锁

    只读实例上往往有业务流量,如果存在只读长事务正在执行,会阻塞主实例同步过来的相应表的DDL操作,卡在了表MDL锁获取,进而阻塞所有同表的后续Binlog回放,导致复制延迟越来越大。

    排查方法:

    1. 登录只读节点,使用如下命令,观察是否有长时间执行的事务。
    2. select t.*,to_seconds(now())-to_seconds(t.trx_started) idle_time from INFORMATION_SCHEMA.INNODB_TRX t \G;
    3. 查看只读节点的MDL锁视图,观察是否有MDL锁冲突。
    4. select * from information_schema.metadata_lock_info;
    5. 根据MDL锁视图中的线程ID,找到阻塞的session。更多信息,请参见MDL锁视图。

    解决方法:

    kill只读节点上阻塞DDL操作的长事务,或者在业务侧提交该长事务。

  • 场景5:只读实例规格小于主实例

    只读实例、DRS灾备实例的规格小于主实例时,一旦主实例写负载升高到一定程度,只读实例或DRS灾备实例会因为自身资源不足,无法及时回放Binlog,导致复制延迟增加。

    解决方法:

    只读实例或DRS灾备实例扩大规格,与主实例规格匹配。

热销数据库类型

了解更多云数据库请前往云数据库产品总览,获取数据库优惠活动请前往云数据专场

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;

  • 云数据库 GaussDB

    华为新一代企业级分布式关系型数据库产品

    了解更多
  • 云数据库 GaussDB for MySQL

    华为新一代完全兼容MySQL的企业级数据库

    立即前往
  • 云数据库 RDS for MySQL

    全球最受欢迎的开源数据库之一

    立即下载
  • GeminiDB Cassandra 接口

    兼容Cassandra/DynamoDB协议,适用于社交场景对关注、发帖、点赞等操作存储

    立即加入
  • GeminiDB Mongo 接口

    兼容MongoDB协议,适用于对高并发场景,可以快速灵活添加计算节点

    立即前往
  • GeminiDB Redis 接口

    提供一键部署、快速备份恢复、计算存储独立扩容、监控告警等服务能力

    立即前往