MYSQL故障排除与生产环境优化

MySQL故障排除与生产环境优化

一、案例实施:MySQL单实例常见故障

故障1

1、故障现象

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket "/data/mysq/mysql.sock’ (2)

2、问题分析

数据库未启动或者数据库端口被防火墙拦截

3、解决方法

启动数据库或者防火墙开放数据库监听端口

故障二

1、故障现象

ERROR 1045 (28000): Access denied for user 'root @'localhost (using password:NO)

2、问题分析

密码不正确或者没有权限访问

3、解决方法

修改my.cnf主配置文件,在[mysqld] 下添加skip-grant tables

  • update更新user表authentication_ string字段
  • 重新授权.

故障三

1、故障现象

在使用远程连接数据库时偶尔会发生远程连接数据库很慢的问题

2、问题分析

DNS解析慢、客户端连接过多

3、解决方法

  • 修改my.cnf主配置文件(增加skip-name-resolve参数)
  • 数据库授权禁止使用主机名

故障四

1、故障现象

Can’t open file: ‘xxX_ forums.MYI’. (errmno: 145)

2、问题分析

  • 服务器非正常关机,数据库所在空间已满,或一一些其它未知的原因,对数据库表造成了损坏
  • 因拷贝数据库导致文件的属组发生变化

3、解决方法

  • 修复数据表(myisamchk、 phpMyAdmin)
  • 修改文件的属组

故障五

1、故障现象

ERROR 1129 (HY000): Host xxx.oxx.xxx.xxx is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

2、问题分析

超出最大连接错误数量限制

3、解决方法

  • 清除缓存(flush-hosts关键字)
  • 修改mysq|配置文件(max_ connect_ errors=1000)

故障六

1、故障现象

Too many connections

2、问题分析

连接数超出MySQL的最大连接限制

3、解决方法

  • 修改MySQL配置文件(max_ connections = 10000)
  • 临时修改参数:set GLOBAL max_ connections= 10000;

故障七

1、故障现象

Warning: World-writable config file /etc/my.cnf is ignored ERROR! MySQL is running but PID file could not be found

2、问题分析

MySQL的配置文件/etc/my.cn权限问题

3、解决方法

chmod 644 /etc/my.cnf

故障八

1、故障现象

InnoDB: Error: page 14178 log sequence number 29455369832
InnoDB: is in the future! Current system log sequence number 29455369832

2、问题分析

innodb数据文件损坏

3、解决方法

修改my.cnf配置文件(innodb_ force_recovery=4)

启动数据库后备份数据文件

利用备份文件恢复数据

二、案例实施:MySQL主从环境常见故障

故障一

1、故障现象

从库的Slave_ I0_ Running为NO

The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense;please check the manual before using it).

2、问题分析:

主库和从库的server-id值一样

3、解决方法

  • 修改从库的server-id的值, 修改为和主库不一样
  • 重新启动数据库并再次同步

故障二

1、故障现象:

从库的Slave_ I0_ Running为NO

2、问题分析:

主键冲突或者主库删除或更新数据,从库内找不到记录,数据被修改导致

3、解决方法

  • 方法一
    mysql> stop slave;
    mysql> set GLOBAL SQL_SLAVE_ SKIP_COUNTER=1;
    mysql> start slave;
  • 方法二
    set global read_ only=true;

故障三

1、故障现象

Error initializing relay log position: 1/0 error reading the header from the binary log

2、问题分析

从库的中继日志relay-bin损坏

3、解决方法

手工修复,重新找到同步的binlog和pos点,然后重新同步即可
mysql> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.xx’,MASTER_LOG_POS=xxx;

三、案例实施:MySQL优化

1、硬件优化

  • CPU:推荐使用S.M.P.架构的多路对称CPU
  • 内存: 4GB以上的物理内存
  • 磁盘: RAID-0+1磁盘阵列或固态硬盘

2、MySQL配置文件优化

  • 调整配置项

3、SQL优化

  • 尽量使用索弓|进行查询
  • 优化分页
  • GROUP BY优化

4、MySQL架构优化

  • 架构选择:主从、主主、一主多从、多主多从

猜你喜欢

转载自blog.csdn.net/weixin_39608791/article/details/108444813
今日推荐