MySQL无主键表导致的复制延迟问题

云数据库 RDS

  • 相关协议
    • 云数据库RDS服务等级协议SLA
    • 百度智能云数据库可信云
    • 云数据库RDS服务条款
  • 知识库
    • utf8mb4字符集在云上的使用
    • MySQL无主键表导致的复制延迟问题
    • MySQL之interactive_timeout和wait_timeout
    • REFERENCES-command-denied-to-user错误详解
    • MySQL5.7新特性之在线调整innodb_buffer_pool_size
    • sql_mode参数使用详解之NO_ENGINE_SUBSTITUTION
    • mysqldump工具使用详解
    • 为什么mysql的ibdata1文件会不断增大
    • MySQL5.7ibtmp暴涨导致磁盘打满问题
    • disabled_storage_engines参数实现表引擎自动转换
    • lower_case_table_names参数使用详解
    • innodb_strict_mode参数使用详解
    • innodb_large_prefix参数使用详解
    • explicit_defaults_for_timestamp参数使用详解
    • MySQL5.7新特性之GeneratedColumn
    • 使用mysqldump导入GeneratedColumn报错问题
    • 知识库概览
    • time_zone参数使用详解
    • log_timestamps参数使用详解
  • 产品计费
    • 到期和欠费说明
    • 计费概述
    • 查看账单
    • 最新活动与价格调整
    • 退款说明
    • 计费说明
      • 变配计费说明
      • 计费项
      • 计费方式变更
      • 续费说明
  • 性能测试白皮书
    • 基准测试
    • 概述
  • 快速入门
    • 创建MySQL实例
    • 数据迁移
    • 创建数据库
    • 连接实例
    • 使用流程
    • 创建账号
    • RDS安全说明
  • 典型实践
    • 代理实例使用限制
    • 使用RDS代理和只读解决负载过高的问题
    • 数据安全典型实践
    • PostgreSQL通过auto_explain分析查询性能
    • 克隆实例恢复数据典型实践
    • 物理备份本地恢复实践
    • MySQL实例配置典型实践
    • MySQL慢日志典型实践
    • 典型实践概览
    • 数据迁移典型实践
      • PostgreSQL数据库上云迁移
      • SQLServer数据库上云迁移
      • MySQL数据库上云迁移
    • RDS监控和报警处理
      • CPU报警处理方法
      • MySQL慢查询报警处理最佳实践
      • 大事务报警处理方法
      • RDS监控报警配置
      • 慢查询报警处理方法
  • 视频指南
    • 备份及克隆实例
    • 连接实例
    • 日志管理
    • 查看监控及设置报警策略
    • 设置读写分离
    • 管理实例及账号
    • 创建实例
  • API参考
    • 备份管理接口说明
    • 调用说明
    • 对象说明
    • API概览
    • 慢日志下载任务相关接口说明
    • 实例管理接口说明
    • 账号管理接口说明
    • 附录
    • 其它接口说明
    • 目录
    • 白名单管理接口说明
    • Sample-Code
    • 参数管理接口说明
    • 表粒度账号管理
      • 查询账户详情
    • 慢查询管理
      • 查询慢查询任务列表
      • 获取慢查询下载任务详情
      • 创建慢查询下载任务
    • 回收站管理
      • 实例开机
      • 查询回收站实例列表
      • 删除单个实例
    • 任务管理
      • 查询任务列表
    • 只读组管理
      • 只读组重新负载均衡
      • 开启或关闭公网
      • 删除只读组
      • 批量修改只读组名称、延迟剔除开关、延迟阈值、重新负载均衡开关、组内只读实例权重
      • 创建只读组
      • 查询只读组详情
      • 修改连接信息
      • 只读实例加入只读组
      • 只读实例离开只读组
      • 展示主实例关联的只读组列表
    • 日志管理
      • 慢日志列表
      • 错误日志列表
      • 获取慢日志详情
      • 获取错误日志详情
      • 获取pg日志列表
      • 获取pg日志详情
      • 错误日志下载详情
      • 慢日志下载详情
    • 其它
      • 获取可用区列表
      • 获取订单状态
      • 获取子网列表
      • 更新白名单
      • 热活实例组强切
      • 查看白名单
    • 慢日志下载任务
      • 慢日志下载任务列表
      • 慢日志下载详情
    • 实例管理(已弃用)
      • 重启实例
      • 修改实例名称
      • 已创建实例自动续费
      • 开关公网访问
      • 修改同步模式
      • 创建代理实例(已弃用)
      • 修改连接信息
      • 实例扩缩容
      • 创建只读实例(已弃用)
      • 创建主实例(已弃用)
    • 安全管理
      • 查询白名单
      • 获取SSL加密信息
      • 获取SSL加密证书
      • 更新白名单
    • 账号管理
      • 创建账号(放弃版)
      • 修改账号密码
      • 查询账号列表(放弃版)
      • 查询特定账号信息(放弃版)
      • 修改账号权限
      • 修改账号备注
      • 删除账号
      • 查询账号列表
      • 创建账号
      • 查询账号详情
    • 实例管理
      • 重启实例
      • 变配实例
      • 获取预付费的变配差价
      • 续费实例
      • 更新实例名称
      • 创建代理实例
      • 实例是否支持启用自动扩容
      • 实例开启自动续费
      • 更新实例连接信息
      • 获取新购价格
      • 查询实例列表1
      • 获取指定实例的自动扩容配置信息
      • 可用区迁移
      • 更新实例同步模式
      • 实例批量变配
      • 集群状态检查
      • 创建主实例
      • 释放实例
      • 绑定标签
      • 更新存储自动扩容配置
      • 查询实例列表
      • 查询子网列表
      • 更新实例公网访问状态
      • 拨测接口
      • 检查实例是否支持热变配
      • 查询指定实例详情
      • 查询可用区列表
      • 删除实例
      • 查询实例详情
      • 创建只读实例
      • 更新时间窗口
    • 数据库管理
      • 删除数据库
      • 修改描述信息
      • 创建数据库
      • 修改数据库端口
      • 获取数据库列表
    • 热活实例组
      • 创建实例组
      • 实例组详情
      • 实例组前置检查(实例连通性检查)
      • 实例组列表
      • 主角色变更
      • 修改热活实例组的名称
      • 加入某个实例组
      • 强制切换热活实例组
      • 退出热活实例组
      • 小版本前置检查
      • 实例组前置检查(数据检查)
      • 批量加入热活实例组
      • 实例组前置检查(GTID检查)
      • 删除热活实例组
    • 版本管理
      • 查看实例允许升级的小版本列表
      • 实例升级小版本
    • 备份管理
      • 获取binlog列表
      • 修改备份策略
      • 手动发起全量的物理备份
      • 获取binlog信息
      • 按时间点进行库表恢复
      • 按备份集进行库表恢复
      • 查询备份列表
      • 删除指定的备份集
      • 查询备份详情
    • Performance
      • 查询innodbstatus快照数据
      • 查询事务列表
      • 查询processlist快照数据
      • Kill会话
      • 查询连接列表
    • 参数管理
      • 获取参数模板列表
      • 复制参数模板
      • 修改配置参数
      • 获取参数模板详情
      • 查询修改历史
      • 查询参数列表
    • 故障切换
      • 将实例加入故障注入白名单
      • 将实例从故障注入功能白名单移除
      • 查看用户的故障注入白名单
      • 发起故障注入操作
    • SmartDBA
      • 会话诊断
        • 根据传入的kill类型及类型所对应的值执行kill会话的操作
        • 获取指定实例的会话概览
        • 获取指定会话kill类型的相关参数
        • 获取指定实例的实时会话
        • 获取指定实例的会话kill记录
        • 获取指定实例的会话统计
        • 校验执行kill操作的数据库用户及密码是否正确
      • 空间诊断
        • 获取数据空间表的详情
        • 获取库表空间概况
        • 获取数据空间的数据库列表
      • 错误日志
        • 关闭错误日志服务
        • 开启错误日志服务
        • 查询错误日志服务是否开启
        • 获取错误日志列表
      • SQL限流
        • 开启关闭某个限流规则
        • 添加一条限流规则
        • 更新一条限流规则
        • 实例是否支持限流
        • 获取实例限流规则列表
        • 删除某个限流规则
        • 获取某个限流规则详情
      • 慢SQL诊断
        • 获取慢SQL调优建议
        • 关闭慢SQL诊断
        • 查询慢SQL诊断开通状态
        • 获取慢SQL来源IP分布
        • 获取慢SQL表中的列
        • 开通慢SQL诊断
        • 获取慢SQL说明
        • 获取慢SQL趋势
        • 获取慢SQL表中的索引
        • 根据SQLID获取慢SQL
        • 获取SQL模板维度的统计信息
        • 获取慢SQL诊断列表
        • 获取慢SQL中的表
        • 获取慢SQL耗时分布
  • 常见问题
    • 常见问题总览
    • RDS-for-MySQL常见问题
      • SQL-开发类问题
      • 计费类问题
      • 使用类问题
      • 迁移类问题
      • 运维类问题
      • 专属实例问题
      • 性能类问题
      • 安全类问题
      • 配置类问题
    • RDS-for-PostgreSQL常见问题
      • 运维类问题
    • RDS-for-SQLServer常见问题
      • 运维类问题
  • 产品简介
    • 功能概览
    • 标准与认证
    • 什么是云数据库RDS
    • 应用场景
      • 异地容灾
      • 读写分离
    • 实例规格
      • 实例类型
      • 实例版本及规格
        • PostgreSQL
          • 主实例
        • MySQL
          • 代理实例
          • 主实例
          • 只读实例
        • SQLServer
          • 主实例
    • 产品优势
      • 高安全
      • 灵活易用
      • 高可用及容灾
      • 高性能
      • RDS与自建数据库对比
    • 产品系列
      • 产品系列概述
      • 代理实例
      • 边缘数据库RDS
      • 单机基础版
      • Raft金融版
      • 双机高可用版
      • 只读实例
  • 动态与公告
    • 功能发布记录
    • 重要通知
      • 云数据库 RDS for MySQL 单机基础版云磁盘全面升级
      • 品牌升级
      • RDS备份商业化通知
      • 云数据库 RDS 磁盘规则全面升级
      • 云数据库 RDS for MySQL 8.0 重磅发布
    • 产品公告
      • 2024年3月15日起RDS MySQL 5.5和5.6 停止内核更新维护
      • phpMyAdmin将于2024年12月5日下线
  • 操作指南
    • RDS-for-MySQL操作指南
      • 多用户访问控制
      • 数据迁移
      • 全局概览
      • 控制台介绍
      • MySQL功能概览
      • 使用须知
      • 只读实例
        • 管理只读实例组
        • 只读实例简介
        • 创建只读实例
        • 管理只读实例
      • 日志管理
        • 慢SQL统计
        • 慢日志管理
        • 错误日志明细
        • 慢日志明细
        • 错误日志下载
      • SmartDBA
        • SQL诊断
        • 简介
        • SQL 限流
        • 空间诊断
        • 性能诊断
        • 集群拓扑
        • 会话诊断
      • 监控报警
        • 报警策略
        • 监控指标搜索
        • 查看监控信息
      • 数据管理(DMS)
        • 简介
        • 开发与设计
        • 服务管理
        • 权限中心
        • 审批管理
      • 实例管理
        • 重启实例
        • 创建专属实例
        • 创建MySQL实例
        • 实例回收站
        • 创建代理实例
        • 释放实例
        • 暂停实例
        • 创建只读实例
        • 续费实例
          • 自动续费
          • 手动续费
      • 升级实例
        • MySQL内核小版本发布记录
        • 单机版升级为双机高可用版
        • 升级内核小版本
      • 数据库管理
        • 删除数据库
        • 创建数据库
        • 修改数据库备注
      • 变更实例
        • 修改实例名称
        • 克隆实例
        • 迁移可用区
        • 预付费转后付费
        • 变更配置
        • 设置存储空间自动扩容
        • 后付费转预付费
        • 主备切换
        • 修改数据复制方式
        • 设置可维护时间段
        • 修改实例域名
      • 连接数据库
        • 查看和管理实例连接地址和入口
        • 连接实例
        • 申请或释放外网地址
        • 连接检查
      • 备份
        • 备份概述
        • 备份费用
        • 管理备份
          • 下载备份
          • 管理本地日志(Binlog)
        • 执行备份
          • 手动备份
          • 跨地域备份
          • 高频备份
          • 自动备份
          • 稀疏备份
        • 热活实例组
          • 创建热活实例组
          • 变更为主角色
          • 简介
          • 监控管理
          • 加入热活实例组
          • 退出热活实例组
          • 账号管理
          • 删除热活实例组
          • 数据库管理
      • 账号与权限管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
        • 账号权限列表
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 查看参数修改历史
        • 设置实例参数
        • 使用参数模板
          • 删除参数模板
          • 简介
          • 管理参数模板
          • 新建自定义参数模板
          • 参数模板应用到实例
      • 恢复
        • 物理备份恢复到自建数据库
        • SQL闪回
        • 库表恢复
        • 实例级别恢复(克隆实例)
        • 数据恢复方案概览
        • 实例级别恢复(原地覆盖)
      • 安全管理与加密
        • 配置安全组
        • 设置透明数据加密TDE
        • 云盘加密
        • 设置SSL加密
        • 设置DB防火墙
        • 设置白名单
      • 数据库代理
        • 管理代理实例
        • 创建代理实例
        • 代理实例简介
        • 数据库代理费用说明
    • RDS-for-PostgreSQL操作指南
      • 多用户访问控制
      • 数据迁移
      • 资源账单
      • 全局概览
      • 控制台介绍
      • PostgreSQL功能概览
      • 使用须知
      • 概述
      • 日志管理
        • 运行日志下载
      • 插件管理
        • 支持的插件列表
        • 管理插件
      • 安全管理
        • 安全组管理
        • SSL加密
        • 白名单管理
      • 账号管理
        • 修改账号密码
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 查看监控资源
      • 数据库管理
        • 管理数据库
      • 变更实例
        • 修改实例名称
        • 迁移可用区
        • 预付费转后付费
        • 变更配置
        • 后付费转预付费
        • 修改实例域名
      • 备份
        • 备份概述
        • 下载备份
        • 手动备份
        • 自动备份
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 使用参数模版
        • 设置参数
      • 恢复
        • 恢复到原实例
        • 数据恢复方案概览
      • 数据库连接
        • 连接实例
      • 实例生命周期
        • 重启实例
        • 释放实例
        • 创建实例
        • 暂停实例
        • 续费实例
          • 自动续费
          • 手动续费
    • RDS-for-SQLServer操作指南
      • 多用户访问控制
      • 数据迁移
      • 功能限制
      • SQLServer功能概览
      • 资源账单
      • 全局概览
      • 控制台介绍
      • 使用须知
      • 日志管理
        • SLOWLOG管理
      • 安全管理
        • 白名单
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 查看资源监控
      • 数据库管理
        • 删除数据库
        • 创建数据库
        • 修改数据库备注
      • 变更实例
        • 修改实例名称
        • 预付费转后付费
        • 变更配置
        • 后付费转预付费
        • 修改实例域名
      • 备份
        • 备份概述
        • 下载备份
        • 手动备份
        • 自动备份
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 参数修改历史
        • 设置实例参数
      • 恢复
        • 恢复到原实例
      • 数据库连接
        • 连接实例
      • 实例生命周期
        • 重启实例
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
  • SDK
    • Python-SDK
      • 初始化
      • 实例管理
      • 安装SDK工具包
      • 概述
    • JAVA-SDK
      • 其他接口
      • RdsClient
      • 参数管理
      • 日志管理
      • 备份管理(新)
      • 账号管理
      • 实例管理
      • 备份管理
      • 安装SDK工具包
      • 数据库管理
      • 概述
    • GO-SDK
      • 版本管理
      • 异常处理
      • 其他接口
      • 回收站管理
      • Performance
      • 参数管理
      • 白名单管理
      • 初始化
      • 热活实例组管理
      • 账号管理
      • 实例管理
      • 备份管理
      • 任务管理
      • 主要接口
      • 安装SDK工具包
      • 数据库管理
      • SmartDBA
      • 概述
所有文档
menu
没有找到结果,请重新输入

云数据库 RDS

  • 相关协议
    • 云数据库RDS服务等级协议SLA
    • 百度智能云数据库可信云
    • 云数据库RDS服务条款
  • 知识库
    • utf8mb4字符集在云上的使用
    • MySQL无主键表导致的复制延迟问题
    • MySQL之interactive_timeout和wait_timeout
    • REFERENCES-command-denied-to-user错误详解
    • MySQL5.7新特性之在线调整innodb_buffer_pool_size
    • sql_mode参数使用详解之NO_ENGINE_SUBSTITUTION
    • mysqldump工具使用详解
    • 为什么mysql的ibdata1文件会不断增大
    • MySQL5.7ibtmp暴涨导致磁盘打满问题
    • disabled_storage_engines参数实现表引擎自动转换
    • lower_case_table_names参数使用详解
    • innodb_strict_mode参数使用详解
    • innodb_large_prefix参数使用详解
    • explicit_defaults_for_timestamp参数使用详解
    • MySQL5.7新特性之GeneratedColumn
    • 使用mysqldump导入GeneratedColumn报错问题
    • 知识库概览
    • time_zone参数使用详解
    • log_timestamps参数使用详解
  • 产品计费
    • 到期和欠费说明
    • 计费概述
    • 查看账单
    • 最新活动与价格调整
    • 退款说明
    • 计费说明
      • 变配计费说明
      • 计费项
      • 计费方式变更
      • 续费说明
  • 性能测试白皮书
    • 基准测试
    • 概述
  • 快速入门
    • 创建MySQL实例
    • 数据迁移
    • 创建数据库
    • 连接实例
    • 使用流程
    • 创建账号
    • RDS安全说明
  • 典型实践
    • 代理实例使用限制
    • 使用RDS代理和只读解决负载过高的问题
    • 数据安全典型实践
    • PostgreSQL通过auto_explain分析查询性能
    • 克隆实例恢复数据典型实践
    • 物理备份本地恢复实践
    • MySQL实例配置典型实践
    • MySQL慢日志典型实践
    • 典型实践概览
    • 数据迁移典型实践
      • PostgreSQL数据库上云迁移
      • SQLServer数据库上云迁移
      • MySQL数据库上云迁移
    • RDS监控和报警处理
      • CPU报警处理方法
      • MySQL慢查询报警处理最佳实践
      • 大事务报警处理方法
      • RDS监控报警配置
      • 慢查询报警处理方法
  • 视频指南
    • 备份及克隆实例
    • 连接实例
    • 日志管理
    • 查看监控及设置报警策略
    • 设置读写分离
    • 管理实例及账号
    • 创建实例
  • API参考
    • 备份管理接口说明
    • 调用说明
    • 对象说明
    • API概览
    • 慢日志下载任务相关接口说明
    • 实例管理接口说明
    • 账号管理接口说明
    • 附录
    • 其它接口说明
    • 目录
    • 白名单管理接口说明
    • Sample-Code
    • 参数管理接口说明
    • 表粒度账号管理
      • 查询账户详情
    • 慢查询管理
      • 查询慢查询任务列表
      • 获取慢查询下载任务详情
      • 创建慢查询下载任务
    • 回收站管理
      • 实例开机
      • 查询回收站实例列表
      • 删除单个实例
    • 任务管理
      • 查询任务列表
    • 只读组管理
      • 只读组重新负载均衡
      • 开启或关闭公网
      • 删除只读组
      • 批量修改只读组名称、延迟剔除开关、延迟阈值、重新负载均衡开关、组内只读实例权重
      • 创建只读组
      • 查询只读组详情
      • 修改连接信息
      • 只读实例加入只读组
      • 只读实例离开只读组
      • 展示主实例关联的只读组列表
    • 日志管理
      • 慢日志列表
      • 错误日志列表
      • 获取慢日志详情
      • 获取错误日志详情
      • 获取pg日志列表
      • 获取pg日志详情
      • 错误日志下载详情
      • 慢日志下载详情
    • 其它
      • 获取可用区列表
      • 获取订单状态
      • 获取子网列表
      • 更新白名单
      • 热活实例组强切
      • 查看白名单
    • 慢日志下载任务
      • 慢日志下载任务列表
      • 慢日志下载详情
    • 实例管理(已弃用)
      • 重启实例
      • 修改实例名称
      • 已创建实例自动续费
      • 开关公网访问
      • 修改同步模式
      • 创建代理实例(已弃用)
      • 修改连接信息
      • 实例扩缩容
      • 创建只读实例(已弃用)
      • 创建主实例(已弃用)
    • 安全管理
      • 查询白名单
      • 获取SSL加密信息
      • 获取SSL加密证书
      • 更新白名单
    • 账号管理
      • 创建账号(放弃版)
      • 修改账号密码
      • 查询账号列表(放弃版)
      • 查询特定账号信息(放弃版)
      • 修改账号权限
      • 修改账号备注
      • 删除账号
      • 查询账号列表
      • 创建账号
      • 查询账号详情
    • 实例管理
      • 重启实例
      • 变配实例
      • 获取预付费的变配差价
      • 续费实例
      • 更新实例名称
      • 创建代理实例
      • 实例是否支持启用自动扩容
      • 实例开启自动续费
      • 更新实例连接信息
      • 获取新购价格
      • 查询实例列表1
      • 获取指定实例的自动扩容配置信息
      • 可用区迁移
      • 更新实例同步模式
      • 实例批量变配
      • 集群状态检查
      • 创建主实例
      • 释放实例
      • 绑定标签
      • 更新存储自动扩容配置
      • 查询实例列表
      • 查询子网列表
      • 更新实例公网访问状态
      • 拨测接口
      • 检查实例是否支持热变配
      • 查询指定实例详情
      • 查询可用区列表
      • 删除实例
      • 查询实例详情
      • 创建只读实例
      • 更新时间窗口
    • 数据库管理
      • 删除数据库
      • 修改描述信息
      • 创建数据库
      • 修改数据库端口
      • 获取数据库列表
    • 热活实例组
      • 创建实例组
      • 实例组详情
      • 实例组前置检查(实例连通性检查)
      • 实例组列表
      • 主角色变更
      • 修改热活实例组的名称
      • 加入某个实例组
      • 强制切换热活实例组
      • 退出热活实例组
      • 小版本前置检查
      • 实例组前置检查(数据检查)
      • 批量加入热活实例组
      • 实例组前置检查(GTID检查)
      • 删除热活实例组
    • 版本管理
      • 查看实例允许升级的小版本列表
      • 实例升级小版本
    • 备份管理
      • 获取binlog列表
      • 修改备份策略
      • 手动发起全量的物理备份
      • 获取binlog信息
      • 按时间点进行库表恢复
      • 按备份集进行库表恢复
      • 查询备份列表
      • 删除指定的备份集
      • 查询备份详情
    • Performance
      • 查询innodbstatus快照数据
      • 查询事务列表
      • 查询processlist快照数据
      • Kill会话
      • 查询连接列表
    • 参数管理
      • 获取参数模板列表
      • 复制参数模板
      • 修改配置参数
      • 获取参数模板详情
      • 查询修改历史
      • 查询参数列表
    • 故障切换
      • 将实例加入故障注入白名单
      • 将实例从故障注入功能白名单移除
      • 查看用户的故障注入白名单
      • 发起故障注入操作
    • SmartDBA
      • 会话诊断
        • 根据传入的kill类型及类型所对应的值执行kill会话的操作
        • 获取指定实例的会话概览
        • 获取指定会话kill类型的相关参数
        • 获取指定实例的实时会话
        • 获取指定实例的会话kill记录
        • 获取指定实例的会话统计
        • 校验执行kill操作的数据库用户及密码是否正确
      • 空间诊断
        • 获取数据空间表的详情
        • 获取库表空间概况
        • 获取数据空间的数据库列表
      • 错误日志
        • 关闭错误日志服务
        • 开启错误日志服务
        • 查询错误日志服务是否开启
        • 获取错误日志列表
      • SQL限流
        • 开启关闭某个限流规则
        • 添加一条限流规则
        • 更新一条限流规则
        • 实例是否支持限流
        • 获取实例限流规则列表
        • 删除某个限流规则
        • 获取某个限流规则详情
      • 慢SQL诊断
        • 获取慢SQL调优建议
        • 关闭慢SQL诊断
        • 查询慢SQL诊断开通状态
        • 获取慢SQL来源IP分布
        • 获取慢SQL表中的列
        • 开通慢SQL诊断
        • 获取慢SQL说明
        • 获取慢SQL趋势
        • 获取慢SQL表中的索引
        • 根据SQLID获取慢SQL
        • 获取SQL模板维度的统计信息
        • 获取慢SQL诊断列表
        • 获取慢SQL中的表
        • 获取慢SQL耗时分布
  • 常见问题
    • 常见问题总览
    • RDS-for-MySQL常见问题
      • SQL-开发类问题
      • 计费类问题
      • 使用类问题
      • 迁移类问题
      • 运维类问题
      • 专属实例问题
      • 性能类问题
      • 安全类问题
      • 配置类问题
    • RDS-for-PostgreSQL常见问题
      • 运维类问题
    • RDS-for-SQLServer常见问题
      • 运维类问题
  • 产品简介
    • 功能概览
    • 标准与认证
    • 什么是云数据库RDS
    • 应用场景
      • 异地容灾
      • 读写分离
    • 实例规格
      • 实例类型
      • 实例版本及规格
        • PostgreSQL
          • 主实例
        • MySQL
          • 代理实例
          • 主实例
          • 只读实例
        • SQLServer
          • 主实例
    • 产品优势
      • 高安全
      • 灵活易用
      • 高可用及容灾
      • 高性能
      • RDS与自建数据库对比
    • 产品系列
      • 产品系列概述
      • 代理实例
      • 边缘数据库RDS
      • 单机基础版
      • Raft金融版
      • 双机高可用版
      • 只读实例
  • 动态与公告
    • 功能发布记录
    • 重要通知
      • 云数据库 RDS for MySQL 单机基础版云磁盘全面升级
      • 品牌升级
      • RDS备份商业化通知
      • 云数据库 RDS 磁盘规则全面升级
      • 云数据库 RDS for MySQL 8.0 重磅发布
    • 产品公告
      • 2024年3月15日起RDS MySQL 5.5和5.6 停止内核更新维护
      • phpMyAdmin将于2024年12月5日下线
  • 操作指南
    • RDS-for-MySQL操作指南
      • 多用户访问控制
      • 数据迁移
      • 全局概览
      • 控制台介绍
      • MySQL功能概览
      • 使用须知
      • 只读实例
        • 管理只读实例组
        • 只读实例简介
        • 创建只读实例
        • 管理只读实例
      • 日志管理
        • 慢SQL统计
        • 慢日志管理
        • 错误日志明细
        • 慢日志明细
        • 错误日志下载
      • SmartDBA
        • SQL诊断
        • 简介
        • SQL 限流
        • 空间诊断
        • 性能诊断
        • 集群拓扑
        • 会话诊断
      • 监控报警
        • 报警策略
        • 监控指标搜索
        • 查看监控信息
      • 数据管理(DMS)
        • 简介
        • 开发与设计
        • 服务管理
        • 权限中心
        • 审批管理
      • 实例管理
        • 重启实例
        • 创建专属实例
        • 创建MySQL实例
        • 实例回收站
        • 创建代理实例
        • 释放实例
        • 暂停实例
        • 创建只读实例
        • 续费实例
          • 自动续费
          • 手动续费
      • 升级实例
        • MySQL内核小版本发布记录
        • 单机版升级为双机高可用版
        • 升级内核小版本
      • 数据库管理
        • 删除数据库
        • 创建数据库
        • 修改数据库备注
      • 变更实例
        • 修改实例名称
        • 克隆实例
        • 迁移可用区
        • 预付费转后付费
        • 变更配置
        • 设置存储空间自动扩容
        • 后付费转预付费
        • 主备切换
        • 修改数据复制方式
        • 设置可维护时间段
        • 修改实例域名
      • 连接数据库
        • 查看和管理实例连接地址和入口
        • 连接实例
        • 申请或释放外网地址
        • 连接检查
      • 备份
        • 备份概述
        • 备份费用
        • 管理备份
          • 下载备份
          • 管理本地日志(Binlog)
        • 执行备份
          • 手动备份
          • 跨地域备份
          • 高频备份
          • 自动备份
          • 稀疏备份
        • 热活实例组
          • 创建热活实例组
          • 变更为主角色
          • 简介
          • 监控管理
          • 加入热活实例组
          • 退出热活实例组
          • 账号管理
          • 删除热活实例组
          • 数据库管理
      • 账号与权限管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
        • 账号权限列表
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 查看参数修改历史
        • 设置实例参数
        • 使用参数模板
          • 删除参数模板
          • 简介
          • 管理参数模板
          • 新建自定义参数模板
          • 参数模板应用到实例
      • 恢复
        • 物理备份恢复到自建数据库
        • SQL闪回
        • 库表恢复
        • 实例级别恢复(克隆实例)
        • 数据恢复方案概览
        • 实例级别恢复(原地覆盖)
      • 安全管理与加密
        • 配置安全组
        • 设置透明数据加密TDE
        • 云盘加密
        • 设置SSL加密
        • 设置DB防火墙
        • 设置白名单
      • 数据库代理
        • 管理代理实例
        • 创建代理实例
        • 代理实例简介
        • 数据库代理费用说明
    • RDS-for-PostgreSQL操作指南
      • 多用户访问控制
      • 数据迁移
      • 资源账单
      • 全局概览
      • 控制台介绍
      • PostgreSQL功能概览
      • 使用须知
      • 概述
      • 日志管理
        • 运行日志下载
      • 插件管理
        • 支持的插件列表
        • 管理插件
      • 安全管理
        • 安全组管理
        • SSL加密
        • 白名单管理
      • 账号管理
        • 修改账号密码
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 查看监控资源
      • 数据库管理
        • 管理数据库
      • 变更实例
        • 修改实例名称
        • 迁移可用区
        • 预付费转后付费
        • 变更配置
        • 后付费转预付费
        • 修改实例域名
      • 备份
        • 备份概述
        • 下载备份
        • 手动备份
        • 自动备份
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 使用参数模版
        • 设置参数
      • 恢复
        • 恢复到原实例
        • 数据恢复方案概览
      • 数据库连接
        • 连接实例
      • 实例生命周期
        • 重启实例
        • 释放实例
        • 创建实例
        • 暂停实例
        • 续费实例
          • 自动续费
          • 手动续费
    • RDS-for-SQLServer操作指南
      • 多用户访问控制
      • 数据迁移
      • 功能限制
      • SQLServer功能概览
      • 资源账单
      • 全局概览
      • 控制台介绍
      • 使用须知
      • 日志管理
        • SLOWLOG管理
      • 安全管理
        • 白名单
      • 账号管理
        • 修改账号密码
        • 修改账号权限
        • 修改账号备注
        • 删除账号
        • 创建账号
      • 监控报警
        • 设置报警规则
        • 查看资源监控
      • 数据库管理
        • 删除数据库
        • 创建数据库
        • 修改数据库备注
      • 变更实例
        • 修改实例名称
        • 预付费转后付费
        • 变更配置
        • 后付费转预付费
        • 修改实例域名
      • 备份
        • 备份概述
        • 下载备份
        • 手动备份
        • 自动备份
      • 标签管理
        • 创建标签
        • 删除标签
        • 根据标签筛选实例
      • 参数管理
        • 参数修改历史
        • 设置实例参数
      • 恢复
        • 恢复到原实例
      • 数据库连接
        • 连接实例
      • 实例生命周期
        • 重启实例
        • 释放实例
        • 创建实例
        • 续费实例
          • 自动续费
          • 手动续费
  • SDK
    • Python-SDK
      • 初始化
      • 实例管理
      • 安装SDK工具包
      • 概述
    • JAVA-SDK
      • 其他接口
      • RdsClient
      • 参数管理
      • 日志管理
      • 备份管理(新)
      • 账号管理
      • 实例管理
      • 备份管理
      • 安装SDK工具包
      • 数据库管理
      • 概述
    • GO-SDK
      • 版本管理
      • 异常处理
      • 其他接口
      • 回收站管理
      • Performance
      • 参数管理
      • 白名单管理
      • 初始化
      • 热活实例组管理
      • 账号管理
      • 实例管理
      • 备份管理
      • 任务管理
      • 主要接口
      • 安装SDK工具包
      • 数据库管理
      • SmartDBA
      • 概述
  • 文档中心
  • arrow
  • 云数据库RDS
  • arrow
  • 知识库
  • arrow
  • MySQL无主键表导致的复制延迟问题
本页目录
  • 背景
  • 问题现象
  • 线上场景
  • slave_rows_search_algorithms参数的影响
  • 原因分析
  • 有主键或唯一索引
  • 无主键和唯一索引
  • 无索引的优化
  • 结论建议

MySQL无主键表导致的复制延迟问题

更新时间:2025-08-22

背景

在生产环境中,经常会遇到这样的情况:客户在主实例对一个没有索引的表执行大批量数据的update或delete操作。如果主从采用ROW模式复制,主库只需要全表扫描一次,从库却需要对主库影响的每一行数据都做一次全表扫描,往往会造成从库非常大的同步延迟,这种情况一般不能被业务所容忍。

MySQL 5.6.6开始引入参数slave_rows_search_algorithms,用于指示只读实例apply_binlog_event时使用的算法,在一定程度上可以解决(缓解)同步延迟问题。下面重点介绍该参数的原理及使用。

问题现象

线上场景

  1. 主实例配置:

    image.png

  2. 只读实例配置:

    image.png

  3. 主实例执行:

    image.png

    只读实例同步延迟,趋势图如下:

    image.png

slave_rows_search_algorithms参数的影响

  1. 主实例表结构:

    image.png

    其中表tb_001有400万条数据。

  2. 主实例执行SQL:

    update tb_001 set k=k+12345 limit {$LIMIT_NUM};

  3. 测试结果——只读实例的最大延迟时间:

    更新行数 TABLE_SCAN,INDEX_SCAN TABLE_SCAN,INDEX_SCAN,HASH_SCAN
    10000 28s 4s
    20000 144s 17s
    30000 325s 35s
    40000 576s 64s

    由测试结果可以看出,修改参数slave_rows_search_algorithms加入HASH_SCAN后,对于无主键且无其他索引的表,同步延迟有很大改善。

原因分析

首先,假定binlog_format_image采用默认值FULL,这样可以将所有操作的before_image和after_image全都记在event中。slave_rows_search_algorithms

默认值为TABLE_SCAN,INDEX_SCAN。下面我们进行详细分析。

有主键或唯一索引

测试的表结构和执行的update语句:

image.png

对于这个update语句:主库执行时会首先利用主键,只需要一次索引定位,然后顺序扫描接下来的数据进行更新就可以了。大致流程如图:

image.png

这条SQL更新的20条数据的before_image都会记录到Update_rows_event里,从库应用的时候会重新评估应该使用哪个索引,优先使用主键和唯一键。因为测试的表含有主键,从库执行的时候对于Event中的每条数据都需要通过主键进行定位到具体的行,然后进行相应行的更新即可。大致流程如图:

image.png

对于主库来说,只需要一次数据定位即可;从库需要对影响的所有行都做一次数据定位,因为表有主键(唯一索引也可以),将从库数据定位的代价降到了最低。

无主键和唯一索引

测试的表结构和update语句:

image.png

对于这个update语句,更新20条数据,主库会首先利用索引key进行一次性定位,然后顺序更新接下来的数据行即可。大致流程如图:

image.png

这条SQL更新的20条数据的before_image都会记录到Update_rows_event里,从库应用的时候会重新评估应该使用哪个索引,优先使用主键和唯一键。因为表只有一个普通索引key,对于Event中的每条数据都需要进行索引定位操作,并且对于非唯一索引来讲第一次返回的第一行数据可能并不是删除的数据,可能还需要继续扫描下一行。大致流程如图:

image.png

如果表上一个索引都没有的话,从库执行的每个event都要进行全表扫描,代价非常大,这也是表上没有索引从库会有比较大同步延迟的关键原因。大致流程如图:

image.png

无索引的优化

slave_rows_search_algorithms有以下4种组合:

  • TABLE_SCAN,INDEX_SCAN(默认值)。
  • INDEX_SCAN,HASH_SCAN。
  • TABLE_SCAN,HASH_SCAN。
  • TABLE_SCAN,INDEX_SCAN,HASH_SCAN(同INDEX_SCAN,HASH_SCAN)。

参数组合,Decision table:

  • I --> Index scan / search 。
  • T --> Table scan 。
  • Hi --> Hash over index 。
  • Ht --> Hash over the entire table。

image.png

  • 默认值 TABLE_SCAN,INDEX_SCAN ,意味着如果有可用的索引则使用索引搜索,否则使用全表扫描。INDEX_SCAN,如果有可用的索引,则使用索引进行搜索。TABLE_SCAN,没有索引,也没有配置HASH_SCAN的情况下,采用全表扫描。
  • 只读实例定位数据可选项INDEX_SCAN、HASH_SCAN、TABLE_SCAN,优先级是依次递减的。如果有主键或索引,走INDEX_SCAN,没主键则根据设置走 HASH_SCAN 或者 TABLE_SCAN(而且如果两者都配了,则优先HASH_SCAN)。

源码:sql/ log_event.cc 。

image.png

其中,我们只关注ROW_LOOKUP_HASH_SCAN,其包含两种数据查找的方法:

  • Hi -> Hash over index 。
  • Ht -> Hash over the entire table 。

只读实例在apply rows_log_event时,会将 log_event 中每一行数据读取出来更新缓存在两个结构中,分别是:m_hash和m_distinct_key_list 。

  • m_hash:用来缓存更新行记录起始位置的hash表。
  • m_distinct_key_list:如果有索引,则将索引的值push 到m_distinct_key_list,作为索引扫描依据,即Hi(每EVENT都会查询m_distinct_key_list进行定位)。

如果表没有索引,则不使用这个List结构,则直接使用全表扫描,即Ht(每个EVENT都会查询m_hash进行定位)。

需要注意的是:对于Hi --> Hash over index,每次update/delete的数据重复值很少的话,依然需要很多的索引定位,如果每次update/delete的数据重复值比较多,可大大减少索引定位的代价。

结论建议

  1. 建议每张表都有主键或唯一键。可以使用下面SQL确认您的库表是否都含有主键:

    select table_schema,table_name,engine from information_schema.tables where (table_schema,table_name) not in( select distinct table_schema,table_name from information_schema.columns where COLUMN_KEY='PRI' ) and table_schema in ('${dblist}');

说明:其中${dblist}为以逗号分割的数据库列表。

  1. 从库索引的利用是自行判断的,顺序为主键->唯一键->普通索引,建议每张表都设置主键或唯一键。
  2. 就算设置了HASH_SCAN也不一定就能提升性能,需要满足下面任一条件:

    (1) 表中没有任何索引。

    (2) 表中有索引,但是update/delete的数据key重复值较多。

  3. 每个update/delete语句只修改少量的数据(比如每个语句修改一行数据)并不能提高性能。
  4. 建议将线上环境slave_rows_search_algorithms的默认值设置INDEX_SCAN,HASH_SCAN(8.0.2以后改成了默认值)。
  5. 如果slave_rows_search_algorithms参数没有设置HASH_SCAN,并且没有主键/唯一键那么性能将会急剧下降造成延迟。如果连索引都没有那么这个情况更加严重,因为更改的每一行数据都会引发一次全表扫描。

上一篇
utf8mb4字符集在云上的使用
下一篇
MySQL之interactive_timeout和wait_timeout