一、问题背景

  接上级要求,某生产数据库需要实施备份;刚好漏洞扫描报告出来,mysql 版本需要升级到5.7.20,于是就未雨绸缪,先写脚本。脚本在mysql旧版本下完全可用(未升级前,mysql 为5.7.18)。升级完后,本着技术人员的一种严谨态度,绝对要sh -x 看看脚本在新环境下有没有出现异常啦~~~

 
二、现象(主要有两个)
  1、mysqldump只能备份表不能备份库(Z库和S库),刚好测试时用的是S库!(这个强调下面是有用的,观众慢慢欣赏)。开始非常纳闷,两个库才不到100M,mysqldump良久不出结果,总不能仅仅1~2天,生产库上数据量陡增的
   2、与此同时,测试人员反馈,项目页面一直转圈登不上(前一天刚升级完数据库,测试过,页面打开没问题)
  

三、排查及解决

  1、上头说,可能是因为升级后 tomcat 没有重启,导致应用出问题(ps:数据库跟应用分别在两台不同的机器上),于是就重启 tomcat ~~顺带观察实时日志:tail -f Catalina.out

(1)图一

(2)图二

  综上,可以发现,挺多preparing的。。。然当时其实看不出有什么异样(毕竟太年轻,囧)

  2、之后,开发人员拿到数据库账号密码,说S库的某个表,也就是上图的日志表:TB_ICT_SYS_LOG被锁了!这就是为什么mysqldump测试备份S库的时候一直备份不了,如果测试备份Z库的话,结果估计是可以出来的,因为Z库上的表并没有被锁

登陆数据库查线程运行情况,终于有眉目了!!!

(1)图一   (mysqldump不了S库的线程)

(2)图二    (页面登陆不上卡住报错的线程)

  3、解决:根据查到的进程号, kill 掉数据库锁进程

之后,数据库恢复正常,页面打开没问题

四、结论

  1、浏览器登陆项目页面,无论登陆是否成功,都有一个第三点 1(2)图二的插入S库日志表的操作

  2、mysqldump备份数据库会有锁表的问题,可能会和插入操作有冲突(开发人员:业务上并没有其他地方引起锁表操作),所以这次问题的产生好可能是因为在调试脚本的时候引起的。为了不影响业务,建议晚上备份(现在调度已改成凌晨 0 点备份

  3、确定Tomcat数据库连接池配置是否准确无误(.../WEB-INF/classes/jdbc.properties),虽然跟本次排错过程无关

这个日志是tomcat最早时候的信息(暂时不知道这里是不是暗藏问题发生的玄机)

记升级mysql后的一次故障的更多相关文章

  1. PHPSTUDY下升级mysql后无法启动

    说来也是搞笑,之前很早就想看Laravel了~其中,之前项目忙,还有就是自己也出了点事故!但是呢,我个人哭过,抱怨过,但是我还是很懂我自己的.也许没心没肺也是一种好事,但也是坏事~ 闲话说多了,来说正 ...

  2. centos下升级mysql后遇到的小问题

    记录今天遇到的一个小问题, 写一个app访问接口涉及到通过存储过程反馈多个结果集,但是反回多个结果集的存储过程,调用之后只能反回一个了,而且奇怪的是,即使直接在mysql上同时执行两条查询语句,第一条 ...

  3. Mysql 升级重装后连接出错 Table \'performance_schema.session_variables\' doesn\'t exist

    升级重装后  连接出错 报这个错误 Table 'performance_schema.session_variables' doesn't exist   使用这个命令即可 [root@localh ...

  4. centos升级mysql至5.7

    1.备份原数据库 [root@www ~] #mysqldump -u root –p -E –all-database > /home/db-backup.sql 加-E是因为mysqldum ...

  5. centOS 6.5下升级mysql,从5.1升级到5.7

    1.备份数据库,升级MySQL通常不会丢失数据,但保险起见,我们需要做这一步.输入命令: mysqldump -u xxx -h xxx -P 3306 -p --all-databases > ...

  6. CentOS6.x升级MySQL版本5.1到5.6

    CentOS6.x升级MySQL版本5.1到5.6 分类: Web MySQL 2014-08-04 11:22 2813人阅读 评论(1) 收藏 举报 mysql云服务器升级centos6 有一些虚 ...

  7. phpstudy升级mysql数据库

    因为MySQL支持全文索引的只有5.6以上,而我下的phpstudy只有5.5的版本,在导入数据库的时候因为该数据库的表内有使用全文索引,因此必须升级phpstudy的mysql版本,这里就把自己当升 ...

  8. ubuntu14.04 升级mysql到5.7版本

    Ubuntu14.04默认安装的是mysql5.5,由于开发需要支持utf8mb4,因此需要升级到mysql5.7 默认情况下,apt是无法直接升级到mysql5.7的,因此需要额外设置 首先,备份数 ...

  9. 59.phpstudy升级Mysql的正确姿势

    phpstudy升级Mysql的正确姿势 phpstudy很糟心,不能选择mysql的版本,所以就强制升级. 下载mysql 首先要到官网上去下载你想要的mysql版本. 下载网址:Mysql官网地址 ...

随机推荐

  1. 【Python之路】第二十四篇--爬虫

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...

  2. https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/

    w https://blog.newrelic.com/2014/05/02/25-php-developers-follow-online/ 1. Rob Allen. Zend Framework ...

  3. 删除Windows服务

    或者开始→运行 ,输入“regedit”,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下找到需要删除的服务名,直接删除即可.

  4. 转!!Java设置session超时(失效)的时间

    Java设置session超时(失效)的时间   在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1 ...

  5. 洛谷 P2331 [SCOI2005]最大子矩阵

    洛谷 这一题,乍一眼看上去只想到了最暴力的暴力--大概\(n^4\)吧. 仔细看看数据范围,发现\(1 \leq m \leq 2\),这就好办了,分两类讨论. 我先打了\(m=1\)的情况,拿了30 ...

  6. 使用from __future__ import unicode_literals时要注意的问题

    add by zhj: 在Python中有些库的接口要求参数必须是str类型字符串,有些接口要求参数必须是unicode类型字符串.对于str类型的字符串,调用len()和遍历时,其实都是以字节为单位 ...

  7. 我的Android进阶之旅------>解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.g

    错误描述 今天在Github上面下载了一份代码,然后导入到Android Studio中直接报了如下图所示的错误: 错误描述如下: Error: Unable to find method 'org. ...

  8. mysql多条更新

    最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共有以下四种办法 1..replace into 批量更新 ...

  9. springboot集成shiro和开涛的动态url问题

    我出现的问题就是一旦/**=authc不管放到前面还是后面都会把所有的资源全部拦截,css和js都访问不到,只需要把开涛的动态url代码改一下就行了(如上图)

  10. JetBrains ReSharper 8.2 Build 8.2.0.2160 && StyleCop

    先安装 StyleCop 再安装 JetBrains ReSharper 8.2 Build 8.2.0.2160