mysql错误集锦

1.无法启动,ERROR日志报如下错误:
 131230  9:23:27 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
  131230  9:23:27 [ERROR] Do you already have another mysqld server running on port: 3306 ?
  131230  9:23:27 [ERROR] Aborting
 在网上搜了很多办法,均无法启动,最终解决办法为:
 1)使用“netstat -anp | grep 3306”命令查看是否有网络连接。
 2)找到相应的程序,关闭之。我这里是zabbix。
 3)顺利启动mysql成功。

2.lvs切换故障:
 使用的是lvs+keepalived做的高可用,mysql是M--M架构,其中A机器是主库,B机器是备库。

 故障现象:重启网卡后应用程序无法连接。

 故障描述:A机器路由发生故障,此时从别的机器telnet A 3306不通,lvs自动切换到了B机器。
 然后A机器重启网卡,此时telnet A 3306已通,应用程序却无法连接进来。

 故障处理:检查中发现,重启网卡后,在A机器lo接口上的VIP不见了踪影。启动VIP后故障解决。

 故障分析:lvs不会去检测VIP是否存在,仍然正常转发数据包到A服务器,但A服务器不认为这些数据包是自己的,直接丢弃之。
 所以在数据库服务器上的VIP要使用监控工具监控其是否存活。

3.从库上mysql.proc报错
ERROR信息:
 Last_Errno: 1548
  Last_Error: Error 'Cannot load from mysql.proc. The table is probably corrupted' on query. Default database: 'ticket'. Query: 'DROP PROCEDURE IF EXISTS                                ticket.P_PREPARE_TICKET_ORDERS_FC'
修复办法:mysql_upgrade -uroot
故障原因:主库是5.1版本,备库是5.5版本。proc同步报错后,将5.1版本的proc表导入到从库后不识别,升级下就好了

4.创建索引报1071错误
ERROR信息:ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
错误原因:该问题是由键值字段长度过长导致。mysql支持数据库表单一键值的最大长度不能超过767字节,超出这个长度即报错(摘自网络)
问题描述:在创建索引时(UTF8格式),无论是主键还是非主键列,创建索引的长度只要超过varchar(256),都报此ERROR信息,并修改索引长度为255。此问题暂时无解。无法创建更长的索引。
多列索引同理,不能超过1024.
参考链接:http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html
http://dinglin.iteye.com/blog/1681332
http://www.oschina.net/question/54100_70589

5.使用my.cnf创建服务器时遇到的报错
Warning: World-writable config is ignored
原因:777或666的权限有很大安全隐患,mysql不允许这么做
解决:将my.cnf的权限设置为644

6.大查询导致磁盘空间撑爆的问题
故障现象:磁盘空间突然报警
原因:开发人员执行这个sql"select * from xx_log order by create_time desc;",查看此表的ibd文件发现有27G之多。执行sql时产生的临时文件导致mysql的tmp目录撑爆。
解决:kill sql,加上limt执行,并且把此tmp目录转移到一个更大的磁盘上面去。


上一篇:时序数据库连载系列:Berkeley 的黑科技 BTrDB


下一篇:时序数据库连载系列:当SQL遇到时序 TimescaleDB