案例一:
Too many connections (连接数过多,导致数据库连接不上)
解决思路:
- 首先考虑Mysql数据库参数文件里面,max_connections参数值是否太小,导致客户端链接超过了最大值
- 限制InnoDB的并发处理数量,innodb_thread_concurrency = 0(代表不受限制),改为16或64看服务器压力。(16左右即可)
- 监控程序会读取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
网友评论