萌百的运维日常

8月15日三次元的事情终于告一段落,开始回家有时间折腾萌百。发现可喜可贺的实时在线破千,日独立访客10万,PV400万。同时负载也涨得无法直视~_~是时候做一下分离了。预计半小时的活,花费4个小时……

23日晚上11点进行数据库搬迁,手贱下错MySQL版本于是编译大约耗掉1小时。

站长要求不停机搬迁,于是我作作死直接搬线上数据库文件。(全站已经锁写,好孩子不要学!)我的生产环境基本上都是MyISAM,以前经常搬没出过岔子,但是现在第一个问题来了,启动报数据库没有正常退出写PID文件。MySQL就是喜欢误导人,读错误日志得知问题在InnoDB引擎。

翻各种资料得知InnoDB的ibdata1只能在停机状态搬迁,没停机就不能动它。那挨个文件夹复制可以吧?也不行…InnoDB表空间全部存这文件里,不过去就丢失表。只好试试导出SQL文件了。

=3=开始尝试导出SQL,没什么问题,导入问题又来了。先是导入一半MySQL会中断连接,然后报环境变量错误无法导入。郁了个闷的T_T

以前也这样做过没问题,所以第一反应是oom,滚去看messages没报oom,重试导入盯着top,进程并没有退出,也没oom迹象。先后尝试单库搬迁、完整搬迁都存在这问题,并且问题就在中文萌百,英文、日文和其它没问题。搜索半天无解,遂放弃。

此时已经3点多了,人不多,申请停机搬迁整个数据库文件,几分钟完成_(:з」∠)_

 

 

 

 

 

 

 

 

 

 

 

 

 

你以为到这就结束了?往下拉的孩纸能得到干货!

在出错的时候,我把具体报错信息发给Hostker运维求助。在搬完数据库之后得到正解。

默认InnoDB单条SQL最大限制是4M,中文萌百有超过,导致客户端连接中断。MySQL客户端有自动重连机制自动连上继续导入,此时丢失了SQL文件头部的环境变量,报环境变量错误中断导入。正确修改my.cnf可解决。

MySQL的错误就是误导人!_(:з」∠)_嗯最近熬夜有点多,好像连着一周熬到3点后,太作死了…

萌百的运维日常 有 14 个评论

    1. 用Docker也一样啦,是因为数据库有超过4M的SQL语句存在导致导入失败的,以前没有所以一直没发现

发表评论

电子邮件地址不会被公开。 必填项已用*标注