MySql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

最开始的时候,技术反应 mysql 连接成功,但是调用超时。然后老板知道了这事选择直接重启(这真是一个错误的决定)。重启之后 mysql 就起不来了。接着我便被老板叫来解决问题。首先是运行看了看:

service mysql start
# 启动 mysql,报错 启动失败

mysql
# ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

网上说这个错误的文章有很多,但是最最重要的一点都是要求查看 mysql 的错误日志(错误日志目录由 mysql 配置文件指定)。有的人在日志里面发现时启动的时候某个文件打不开,去查看发现没有打开权限,修改权限之后就顺利启动了。不过博主碰到有点不同,他的错误日志是这样的:

... 
140422  7:00:17 [Warning] Disk is full writing './cobub/razor_login_log.MYD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) 
140422  7:00:17 [Warning] Retry in 60 secs. Message reprinted in 600 secs
...

原来是服务器磁盘满了。。坑爹么这!!

df -ah     # 查看了一下发现硬盘已经 100% 了
cd /
du -sh *   # 从跟目录开始查看大小情况

# 反复根据上述命令来寻找异常大小的文件夹

最后发现居然是 nginx 的日志文件过大,访问+错误日志加起来约 14G。

但是删掉之后空间还是没有释放出来,当时不清楚是什么原因 reboot 重启服务器之后,空间就腾了出来 mysql 启动的问题就解决。

事后发现应该是被删除的文件还在被进程(nginx)访问,所以删除后并不会立即腾出空间。在碰到这个问题可以通过 lsof 命令来查看文件的占用,对应上述的情况为重启 nginx 来解决。

总结:

  • 出现异常第一时间要去看错误日志 啊,混蛋!!
  • 访问日志要定时清理 !!
  • 要注意监视服务器状态(内存、硬盘、CPU…)
Advertisements

mysql 导入excel数据

方法一、
1.在需要导入的数据最后一列,写入一个Excel公式(例子中是“SQL”下面的单元格,“SQL”是不必要的,仅仅是为了看起来方便)。
=CONCATENATE(“insert into employee(name,birthday,email,hobby)values(‘”,RC[-4],”‘,'”,RC[-3],”‘,'”,RC[-2],”‘,'”,RC[-1],”‘);”)
“)
  这样就会生成insert语句,正如你在例子Excel文件中看到的(当你单击SQL下面的单元格时,可以看到公式)。
如果有日期格式使用下面的方面
=CONCATENATE(“insert into employee(name,birthday,email,hobby)values(‘”,RC[-4],”‘,'”,TEXT(RC[-3],”yyyy-mm-dd hh:mm:ss”),”‘,'”,RC[-2],”‘,'”,RC[-1],”‘);”)
 
 这里用到了TEXT函数来将日期格式化成mysql能接受的日期字符串
 
方法二、
假如要把如图所示的Excel表格导入到MySql数据库中,如图:
 
步骤一:
选取要导入的数据快儿,另外要多出一列,如下图:
步骤二:
将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:data.txt”这个位置里。如图:
步骤三:
根据要导入的数据快儿建立MySql数据库和表,然后使用命令
load data local infile ‘D:data.txt’ into table exceltomysql fields terminated by ‘t’;
进行导入操作。如下图:
现在数据已经全部导入到MySql里了,
让我们来select一下吧,如图:
到此,数据由Excel到MySql的转换已经完成。
下面说下,数据从MySql到Excel的转化,其过程其实还是借助那个“制表符分割”的文本文件。
将如要将这个表中的男生信息导入到Excel中,可以这样。
select * into outfile ‘D:man.txt’ from exceltomysql where xingbie=”男”;
 
这样,表中所有男生的信息都被输出到以制表符分割,’n’结尾的文本文件D:man.txt文件中。
你可以打开Excel,然后选择“数据”->“导入外部数据”->“导入数据”,选中“D:man.txt”,一路确定就行了。
 
 
 
作者 xyaxlz