MySQL常见问题及解决方法有哪些?
摘要:一、连接问题 1、MySQL连接错误 ERROR 1129 (00000): Host ” is blocked because of many connection errors 连接MySQL 报错&a
一、连接问题
1、MySQL连接错误 ERROR 1129 (00000): Host ” is blocked because of many connection errors
连接MySQL报错ERROR 1129 (00000): Host ” is blocked because of many connection errors
同一个IP在短时间内产生太多终端的数据库连接(超过mysql数据库max_connection_errors设置),导致被阻塞。
在系统变量:max_connect_errors设置了允许中断的次数,超过了这个次数(或者超过了默认的次数),mysql就会报如上错误,并拒绝新的连接(相当于拉黑了),直到执行 mysqladmin flush-hosts 命令或者 FLUSH_HOSTS 命令。
方法一:执行mysqladmin flush-hosts命令或者 FLUSH HOSTS 命令
mysqladmin flush-host
/* FLUSH HOSTS*/
方法二:直接重启Mysql服务
方法三:临时解决命令行登录mysql执行set global max_connect_errors = 1000;,并通过 show variables like '%max_connection_errors%' ;命令检查一下是否修改成功。
set global max_connect_errors = 1000;
show variables like '%max_connection_errors%'
问题复现方法:
#telnet ip port
telnet 192.168.1.1 3306
2、Navicat 进入 MySQL 提示错误:Table 'performance_schema.session_variables' doesn't exist
以为是MySQL服务启动有问题,重新启动了下服务,仍然没有解决
找到MySQL安装目录,进入bin文件夹下,在bin文件夹下运行命令行窗口,输入以下命令:
mysql_upgrade -u root -p --force
根据提示输入密码:
回车后会出现以下信息:
如果出现的是以下信息,则需要额外多输入一行命令:
mysql_upgrade -u root -p --force --skip-version-check
此时在navicat里再次连接,已经可以正常使用了。
3、MySql数据库启动服务提示1067错误启动失败
mysql数据库所在的主机重启了,主机启动后mysql服务并没有自动启动,在服务管理里手动启动mysql服务时报了一个错,提示mysql启动失败错误1067.
然后问了查了度娘好多人的经验分享都是没啥用的,然后自己排查时发现主机本地进程里有mysql残留的进程没有关闭 ,在任务管理器中关闭和mysql相关的进程,然后重启服务即可。
二、主从问题
1、MySQL 从库同步数据报错: Can't find record in '表名', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000111, end_log_pos 26598
由于两边数据不一致,主库host表的某条数据在从库不存在,导致同步时执行update报错。
修复的原理很简单,找到主从不一致的这条数据,在从库补上,让update能执行就好。由于需要从binlog里找数据,需要确保中断之后的binlog没被删除,否则就只能重搭了。
导出日志:
mysqlbinlog -v --stop-position=265980893 /binlog_path/mysql-bin.000641 > /tmpbinlog.log
查询记录end_log_pos=537973695所在位置,找到对应update语句;
找到对应的数据再从库中手动添加进去,然后重启slave。
