mysql主从延迟问题(RBR的bug)

本文介绍了一种在MySQL中遇到的删除操作效率低下问题及其解决方案。通过对slave状态的检查及binlog的分析,发现了问题所在,并通过为问题表添加自增主键的方式成功解决了这一问题。
修改表结构:http://zhaoyun.blog.51cto.com/2090116/727252


通过检查slave状态:
show slave status\G;

分析binlog:
/usr/local/mysql/bin/mysqlbinlog -usystem -p'BK_root2010!' -vv -S /data/mysqldata/3306/mysql.sock --start-position='9450369'  
/data/mysqldata/3306/binlog/mysql-bin.000556 >/home/mysql/mysql-restore.sql


查看delete语句
DELETE FROM baike.bk_sham_attention where baike_id=507 limit 10000;(删除一万条数据)

发现slave会一条一条数据删除,放在一个特别大的事务里面(基于row的)


根源:这是一个RBR的bug

原因:这表上你看看是不是没有主键或者唯一索引

查看问题表:

CREATE TABLE `bk_sham_attention` (
  `baike_id` int(11) NOT NULL,
  `uid` bigint(12) NOT NULL,
  `addtime` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

确实没有索引和自增项。

修改表,加一个自增项

use baike;

set names gbk;

alter table bk_sham_attention add id bigint(12) not null auto_increment primary key not null first ;

修改表结构,50w的数据4秒钟。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值