论坛2014年7月11日故障的一些问题

2014年7月14日,我接到站务部长的通知,说有人反应论坛登录不上。我就去登陆了一下。现象主要如下:

  1. 论坛首页可以访问。
  2. 进入校内门户,再进入论坛登录界面,可以读取到用户信息
  3. 登录,提示成功登录。
  4. 返回到论坛首页,发现问题了,没有读到用户。这个时候还可以访问,时间大概是13点。

接着我去找原因。

我先试了下进网站的后台,发现没有问题,可以进入。也可以审核用户。顺手就审核了用户。用大号在后台看了下管理员后台登录和操作,10号的时候lwcjjpw这个用户登录了后台。奇怪了,这个不是以前的老人的号么?大概到了14点的时候。主页访问不了了。

SELECT p.*, m.uid, m.username, m.groupid, m.adminid, m.regdate, m.lastactivity, m.posts, m.threads, m.digestposts, m.oltime,

m.pageviews, m.credits, m.extcredits1, m.extcredits2, m.extcredits3, m.extcredits4, m.extcredits5, m.extcredits6,

m.extcredits7, m.extcredits8, m.email, m.gender, m.showemail, m.invisible, mf.nickname, mf.site,

mf.icq, mf.qq, mf.yahoo, mf.msn, mf.taobao, mf.alipay, mf.location, mf.medals,

mf.sightml AS signature, mf.customstatus, mf.spacename , mf.field_2

FROM [Table]posts p

LEFT JOIN [Table]members m ON m.uid=p.authorid

LEFT JOIN [Table]memberfields mf ON mf.uid=m.uid

WHERE p.tid=’344231’ AND p.invisible=’0’ ORDER BY dateline LIMIT 0, 20

这个是提示信息。

数据库中少了张表。

好好的不可能少张表啊,没有人闲着没事去删除你的表啊。于是我就去数据库服务器上看了下现存的表有没有members,找到了一张site_members这个是网站的用户表,还有张uc_members这个是ucenter的吧。论坛的数据库中表前缀是bbs,找了一圈,没有找到应该有的bbs_members。问题很严重了。用户表没有了。

难道是db的连接文件上写错了?上ftp看个究竟。找了半天,汗。都写的是members。说明不是文件上有人改了,而是真的数据库出问题了。

找了下以前写论坛的师兄帮忙,说明了下情况。

         师兄说,后台日志看到10号的时候,服务器上有文件修改记录。但是引发这个错误的原因,他也不清楚。

         当时我的猜想是论坛和网站用的用户表是一张表,然后论坛的用记表是动态的,会在服务器启动时触发事务,然后创建已经登录用户的表,然后把他们的数据加进来。所以我就向老师申请了重启服务器。

         最后就是一天时间的漫长等待。

         师兄最后给的结论是:由于管理员误操作,导致论坛数据库中用户表被误删除。

         由于和网站用的是同一个用户群体,他对数据做了最大程度上的恢复。

 

image

 

这是对此次故障的处理办法。丢失了数据,真是不应该。作为线上最高管理,居然发生了这种事。我很难想象开学来了用户看到自己数据全没有的心情。

         可是这次事件致使我写下这篇文档的原因不只是这个。更是让我难以理解的,是怎么会丢失表。以下几点比较难以理解:

  1. 现在留下的几个人里,知道ftp密码的人就我和站务部长,其他人都不知道论坛的ftp的密码的。也就是说,能通过ftp来看到网站源文件的,进而看到数据库密码和地址的人,也就我和他。而他怎么会懂数据库的东西。而我在10号到14号的时候因为自己有事,一直没有看论坛,一个连前台都没有登录的人,不可能是我误操作了吧。
  2. 如果是站务部的人在后台操作的时候不小心删除的。但是站务部的只能做到删除用户,不能删除表。你就算是全部把用户删除了,表还是在的吧。这就是可疑的第二点。
  3. Lwcjjpw以前主席干的?我去查了下他的账号,普通用户组,奇怪,普通用户组没有后台登录的权限,他是怎么登录的?再说,他是以前的主席,站务部长,怎么可能会去删除论坛的表?
  4. 知道服务器ftp的除了我们,应该还有网站的人了,这么多年都没有事,也不会是他们做的吧。
  5. 还有一点,就是注入了。有人注入,然后删除表,破坏数据。可是这个要怎么去证明呢?要查数据库的日志,可是我没有办法去查。暂且留意下这个。
  6. 最后一点就是我最疑惑的地方。

记住这个时间,是6月,6月的运行记录里就出现了有表不存在的错误。

 

image

 

而第一次出现members这张表不存在的记录在7月2号就发生了。

 

image

 

 

7月11号的时候就可以正常登录,7月2号表不存在的错误就已经有了。这是为什么?而且,在7月出现了一个实体重复的错误。这个错误是怎么引起的?

同时在我写日志的今天。也就是2014年7月18日星期五也出现了这个表不存在的错误。不是在15号的时候就已经修复了吗?为什么到现在还是有这个错误存在?

 

image

 

难以琢磨。我的推测是写论坛的时候,师兄还是个学生,开发的时候做的不是很严谨,存在逻辑上的错误。虽然在以前没有体现出来,但是由于去年换了登录方式,结果现在的错误就体现出来了。这里的问题是:为什么一年以后才会体现出来?奇怪。我问了下师兄,他在工作,也没有时间回我,他估计是觉得能运行就可以了,但是我不能这样,下次要是还出现这种情况怎么办?

至于原因,我暂时没有想明白。要想知道是怎么发生的,只能查数据库的日志,但是这个真的不现实。我只能现在记录下最近发生的这些,以备后来故障时做参考。

                                                               Mdcici.Yan  2014年7月18日

原文地址:https://www.cnblogs.com/mediciyan/p/3854386.html