mysql故障_【MySQL】故障恢复一例

今天早上查看zabbix的时候报错,错误截图如下:

d9b183876dbc

zabbix报错

一看就是数据库有问题,登陆数据库服务器一看,mysqld进程已经没有了,接着查看系统日志,截图如下:

d9b183876dbc

系统日志

可以很清楚地看到,OOM,mysqld进程被kill。

找到问题了,我们调小innodb_buffer_pool_size跟tokudb_cache_size,然后启动数据库。数据库正常启动,但是,前台依旧报错。

我们登录数据库手动查一条数据测试一下看看。

select * from history limit 1;

1033 Incorrect information in file: ‘./mysql/zabbix/history.frm

很可能就是mysqld被意外kill以后造成表损坏,我们手动删除ibdata1跟logfile,然后启动数据库。

启动过程报错,错误大概是这样的:

2014-DD-MM 02:15:16 16414 [Note] Found 1 prepared transaction(s) in TokuDB

2014-DD-MM 02:15:16 16414 [ERROR] Found 1 prepared transactions! It means that mysqld was not shut down properly last time and critical recovery information (last binlog or tc.log file) was manually deleted after a crash. You have to start mysqld with --tc-heuristic-recover switch to commit or rollback pending transactions.

2014-DD-MM 02:15:16 16414 [ERROR] Aborting

那么,我们在配置文件mysqld下增加参数

#innodb_force_recovery = 1

启动时增加参数:

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --tc-heuristic-recover=rollback &

ok,数据库正常启动,事务也回滚了。

我们再次修改参数

#innodb_force_recovery = 0

这时,数据库即可正常操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值