MySQL 常见故障处理

【错误过程】:MySQL从5.1升级至5.5后在调用存储过程时报出“Cannot load from mysql.proc. The table is probably corrupted。

【造成原因】:MySQL升级完成后未对相关数据库执行升级.

【解决办法】:在命令行中执行mysql_upgrade -uroot -p 即可~


【错误过程】:多实例调用sp生成临时表的时候导致从断开

【造成原因】:生成临时表会在/tmp下产生临时文件,多个同时调用会出现冲突的情况

【解决办法】:应按实例区分开

MySQL 常见故障处理_第1张图片


【错误过程】:MySQL 主从中断,1236报错

【造成原因】:

sync_binlog=0时 ,master binlog文件的flush log buffer(这个buffer是由于binlog文件的os buffer)  disk是依赖于OS本身的,但Slave IO 线程在读取master dump 线程的位置,一般是直接读取log buffer这个位置,可能远远大于binlog文件实际大小。所以当主机宕机后,binlog buffer未刷盘,当Master主机再次启动后,此时从库的binlog pos已经比实际的binlog文件大小还大了。

【解决办法】:

如果innodb_flush_log_at_trx_commint=1的话,这一般对主从不会有影响的,直接做change master to到当下一个binlog如果是其他值20,可能有点小差别。 



【错误过程】:MySQL 主从中断,1032报错

【造成原因】:

由于主上的binlog-format是mixed,这样在主从同步修改数据的时候会使用rowed模式,直接修改对应数据,如果此时主从数据不一致的话,就会出现找不到记录的1032的错误。

【解决办法】:

保持主从数据一致性


【错误过程】:MySQL 出现大量Too many connections

【造成原因】:

查询发现这算属MySQL的一个bug,不管连接是通过hosts还是ip的方式,MySQL都会对DNS做反查,IP到DNS,由于反查的接续速度过慢(不管是不是isp提供的dns服务器的问题或者其他原因),大量的查询就难以应付,线程不够用就使劲增加线程,但是却得不到释放,所以MySQL会“假死”。

【解决办法】:

在配置文件加上以下参数即可

--skip-name-resolve,不要解析正检查客户端连接的主机名。只使用IP号。如果你使用该项, 授权表中的所有Host列值必须为IP号或localhost。

MySQL 常见故障处理_第2张图片


你可能感兴趣的:(MySQL)