一次删除mysql-binlog 日志后,所引发的mysql惨案

本来今天高高兴兴,你为什么要说这种话......

 

问题发生描述:

昨天,闲来无事登录了mysql 数据库查看。发现 数据目录中有太多 mysql-bin.日志,六七百份。没多想,遂执行了一波

rm -rf mysql-bin.0000*

第三天过后, 想着修改一下 my.cnf 配置文件。修改 一下 max_binlog_size 日志大小参数以及 日志过期参数 expire_logs_days

max_binlog_size = 200M
expire_logs_days = 60

一顿操作猛如虎过后,满心欢喜的执行 systemctl  restart  mysqld 

[root@test mysql]# systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

mmp...

于是乎   journalctl -f 

-- Unit mysqld.service has begun starting up.
Jul 16 10:15:32 test mysqld[29298]: Initialization of mysqld failed: 0
Jul 16 10:15:32 test systemd[1]: mysqld.service: control process exited, code=exited status=1
Jul 16 10:15:34 test systemd[1]: Failed to start MySQL Server.
-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has failed.

发现并没有得到什么有用的东西....   于是赶紧去  tailf    /var/log/mysqld.log  一波

发现,日志一直猛的刷啊刷,刷得我眼花缭乱。 看半天,貌似都是[Note] 和 [Warning] ,也没发现什么错误有效信息

心一凉... 赶紧 复制一些貌似是错误的信息,贴百度搜索一波。得到的都是些 感觉像但执行完还是不行的blog

 

唉...  ctrl +c 中断一下。 你妹的,恰好让我中断在了 看到 [ERROR] 的地方

[Note] InnoDB: 5.7.26 started; log sequence number 367582962432
2019-07-16T02:32:23.252451Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-07-16T02:32:23.252723Z 0 [Note] Plugin 'FEDERATED' is disabled.
2019-07-16T02:32:23.252786Z 0 [Note] InnoDB: Buffer pool(s) load completed at 190716 10:32:23
mysqld: File './mysql-bin.000623' not found (Errcode: 2 - No such file or directory)
2019-07-16T02:32:23.258434Z 0 [ERROR] Failed to open log (file './mysql-bin.000623', errno 2)
2019-07-16T02:32:23.258441Z 0 [ERROR] Could not open log file
2019-07-16T02:32:23.258448Z 0 [ERROR] Can't init tc log
2019-07-16T02:32:23.258452Z 0 [ERROR] Aborting

原来 是binlog日志的问题。。。

 

解决:

不考虑丢数据的情况,可以使用下面的方法启动数据库:将mysql-bin.index 内容清空,

启动数据库,这是数据库会重置日志文件,从01开始。

正确的删除binlog的姿势:

第一种方法:   

mysql> show binary logs; 查看mysql bin-log日志,除了这个以外的,其它都可以使用删除。   

mysql> purge binary logs to 'binlog.000058'; (删除mysql bin-log日志,不包括binlog.000058)   

第二种方法:   

进入数据库,查看一下当前使用的binlog日志是哪个,除了这个以外的,其它都可以使用rm -rf 删除!

rm后最好执行下 purge 或者 更改 mysql-bin.index,不然mysql重启可能会报错

 

总结:

因为是删除了binlog日志隔了几天过后,一开始也能猜得到是删除了binglog而导致出的错。但无奈慌张中没有仔细找到[ERROR] 日志。  一句话, 报错还是要多仔细看log。日志一直刷的情况下,还是使用 vim 或 more、less 查看吧。少偷懒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值