mysql做数据库的风险_[数据库]MySQL案例08:MySQL Events带来的风险

[数据库]MySQL案例08:MySQL Events带来的风险

0

2018-07-26 22:01:34

定时任务是我们开发、运维人员经常用到的,比如cron,job,schedule,events scheduler等都是为了方便我们重复执行某项工作而无需人工参与而设计,这里我要说的是MySQL数据库本身的定时任务,即events scheduler的风险案例。

一、现象描述

这里有一个从库出现数据不同步现象,具体报错如下:Slave_IO_Running: Yes Slave_SQL_Running: No Last_SQL_Errno: 1032 Last_SQL_Error: Could not execute Delete_rows event on table bs.dg_sale; Can't find record in 'dg_sale', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000079, end_log_pos 159513315

这个现象出现是由于主键问题导致数据删除失败,进而引发数据同步错误。

二、原因分析

出现上述错误比较常见的是从库做了一些删除操作,然后数据同步的时候通过主键寻找条件删除的时候无法执行删除操作,进而导致主从错误。

通过对比主库数据和从库数据发现表数据记录数都是0,然后自增值不同,从库始终没有外部账户访问,这里就有点懵逼了吧?没错,还有一种情况可能导致从库被操作,那就是定时任务。通过排查发现,果然主库设有几个events事件,其中有个定时任务就设计到这个表的多次查询、删除、插入等操作。

三、处理过程

1.查看从库状态和错误代码信息。

2.检查主库、从库表数据信息、表结构信息。

show slave status \G

show create table  bs.dg_sale \G

select count(1) from bs.dg_sale;

3.分析产生错误的binlog信息。

主库:

show binlog events  in 'mysql-bin.000079' from 159512534 limit 10;

mysqlbinlog  --base64-output='decode-rows' --start-position=159512534 --stop-position=159512838 -vv  mysql-bin.000079 >binlog.txt

4.查看主库/从库events scheduler信息

show variables like 'event_scheduler';

bc91bb04e6e9c61e24c974e4440db8f2.gif

show events;

select EVENT_SCHEMA,EVENT_NAME,STATUS ,EXECUTE_AT,INTERVAL_VALUE from events;

bc91bb04e6e9c61e24c974e4440db8f2.gif

这里看到events scheduler

5.禁用从库的events scheduler

set global event_scheduler=0;

在从库my.cnf配置文件中加入set global event_scheduler=0

6.重新完成数据同步

四、知识扩展

1.创建mysql events scheduler

2.删除mysql events scheduler

3.更改mysql events scheduler

本文网址:http://www.shaoqun.com/a/363829.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

MYSQL

0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值