案例一:

Too many connections (连接数过多,导致数据库连接不上)

解决思路:

  1. 首先考虑Mysql数据库参数文件里面,max_connections参数值是否太小,导致客户端链接超过了最大值
  2. 限制InnoDB的并发处理数量,innodb_thread_concurrency = 0(代表不受限制),改为16或64看服务器压力。(16左右即可)
  3. 监控程序会读取information_schema下面的表,可以考虑关闭下面的参数:
    innodb_stats_on_metadata=0
    set global innodb_stats_on_metadata=0

案例二:

Last_SQL_Errno:1062(从库与主库数据冲突)
 Last_Errno: 1062 

 Last_Error: Could not execute Write_rows event on table test.t; 

 Duplicate entry ‘4’ for key ‘PRIMARY’, 

 Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; 

 the event’s master log mysql-bin.000014, end_log_pos 1505 

解决方法:

在确保主从数据库一致的情况下,可以在从库进行错误跳过,使用percona-toolkit中的pt-slave-restart进行。

在从库完成如下操作

[root@slj]./pt-slave-restart -uroot -p123456
2017-07-20T14:05:30 p=…,u=root node4-relay-bin.000002 1506 1062

之后最好在从库开启read_only,禁止从库写入

Last_IO_Errno:1593(Server-id冲突)

Last_IO_Error:

Fatal error: 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) 

解决方法:更改其中一台的server-id使其不一样

Last_SQL_Errno:1032(从库少数据,主库更新时候,从库报错)

Last_SQL_Error:

Could not execute Update_rows event on table test.t; Can’t find record 

in ‘t’, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the 

event’s master log mysql-bin.000014, end_log_pos 1708 
解决办法:根据报错信息,我们可以获取到报错日志和position号,然后就能找到主库执行的哪条sql,导致的主从报错。
在主库执行:
/usr/local/mysql/bin/mysqlbinlog –no-defaults -v -v –base64-output=decode-rows /data/mysql/mysql-bin.000014 |grep -A 10 1708 > 1.log

案例三:

数据库忘记密码

解决方法:

编辑配置文件/etc/my.conf
vim /etc/my.cnf
[mysqld]
skip-grant-tables
wq!

systemctl restart mariadb

mysql   进入数据库(不需要输入账号密码)
use user
MariaDB [mysql]> UPDATE user SET Password = password ( '123456 ) WHERE User = 'root' ; 
MariaDB [mysql]> flush privileges;

systemctl restart mariadb

案例四:

Mysql数据库连接超时的报错

org.hibernate.util.JDBCExceptionReporter – SQL Error:0, SQLState: 08S01 

解决方法:

这个问题是由两个参数引起,wait_timeout和interactive_timeout
这两个参数必须同时设置,而且必须保证值一致才行

案例五:

can’t open file (errno:24)

因数据库的最大连接数导致的文件无法打开

解决方法:

修改数据库配置open_files_limit
vim /usr/lib/systemd/system/mariadb.service
[Service]
       LimitNOFILE=10000

文章来源于互联网:Mysql数据库相关错误

发表评论