【mysql】重启的问题

今天把生产机搞宕机了,紧张了好一会儿。

 

事情是这样的:我这几天发现一卡通生产机数据库有死锁的现象,今天查到了原因,原来是有一种交易的事务执行时间太长(几十分钟,最后交易是成功的),导致其他事务无法拿到锁而失败。

 

我在测试环境上测试这种交易,没有问题;在生产环境的测试库上测试,可以重现,说明是生产的数据库问题(生产环境的mysql建了两个库,一个用于测试,一个用于生产)。但是重现了以后发现生产库也开始死锁了,难道是整个库的锁?为了让生产库不影响交易,我决定重启mysql(大错特错呀,后来发现生产库的死锁跟测试库木有关系,而是恰巧当时生产环境也有一笔死锁交易),先把数据库停掉:

/etc/init.d/mysql stop

再启动

/usr/bin/mysqld_safe &

妈妈呀,起不来了!!!

 

查看系统日志 /var/log/messages,有这样的记录:

Dec  1 13:25:19 xyykt last message repeated 6 times
Dec  1 13:27:05 xyykt setroubleshoot: SELinux is preventing mysqld (mysqld_t) "append" to /home/db/mysql/xyykt.err (var_lib_t). For complete SELinux messages. run sealert -l cc26f951-40ce-4250-aa7b-ed653eec324a
Dec  1 13:27:05 xyykt setroubleshoot: SELinux 正在阻止访问使用file_t标签的文件。 For complete SELinux messages. run sealert -l 45d58241-5f23-4688-a18d-d4545c9f88cf

问了好多人,知道是系统SELinux的限制(以后再研究)。

 

解决办法:

修改/etc/selinux/config配置文件,设置 SELINUX=disabled

然后重启SELinux:

    重启生效,如果不想重启,用命令
    [root@mail topic]# setenforce
    usage: setenforce [ Enforcing | Permissive | 1 | 0 ]

    [root@mail topic]# setenforce 0
    setenforce: SELinux is Permissive

    查看Selinux状态:
    [root@mail topic]# getenforce
    Permissive

 

 

再重启mysql就正常了。

 

 

此时服务已经停了2个小时!

 

为了不影响正常交易,将出现死锁的访问数据库的部分注释掉。

 

然后慢慢解决死锁的问题,还要研究一段时间。

 

死锁解决后还有把注释掉的代码恢复,然后将这段时间的异常交易处理掉。加油!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值