一、修改innodb_log_file_size报错
5.5版本要求小于4G
5.5版本库 修改innodb_log_file_size 需要mv 走原来的iblogfile
二、1418错误
MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法 (转)
解决方法:
解决办法也有两种, 第一种是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个, 例如: CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`() DETERMINISTIC BEGIN #Routine body goes here... END;;
第二种是信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1。
设置方法有三种:
1.动态配置:SET GLOBAL log_bin_trust_function_creators = 1;
2.MySQL启动时,加上--log-bin-trust-function-creators选项,参数设置为1
3.在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1
三、问题:Specified key was too long; max key length is 767 bytes ErrorCode
业务反馈某建表sql语句执行报错:
报错信息:Specified key was too long; max key length is 767 bytes ErrorCode
解决方法:初步定位是innodb-large-prefix参数问题。查看数据库版本,生产版本为5.6.25,其参数默认是OFF的。是导致这个问题的原因。
根据官方文档,该参数是5.6.3引进,在5.7.7之前是默认OFF,之后是默认ON。
根据文档信息,动态修改线上从库→主库,即生效。然后修改主从配置文件。
修改命令:set global innodb_large_prefix=on;
四、操作系统文件数限制
1、调整系统open files:
vim /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576
验证是否生效:重新登录机器,然后执行:ulimit -n
文件数超出后mysql报错:
五、MySQL启动相关
1、mysqld 错误日志
2、journalctl -xe Systemd日志
3、/var/log/messages系统日志
4、/var/log/audit/audit.log 审计日志 selinux相关
5、/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
解决方案:
yum remove libnuma.so.1
yum -y install numactl.x86_64
六、统计信息不准
问题:datacenter中的某个查询,从原来的2s多到700s以上,导致页面无法显示数据。
原因:统计信息不准导致
解决方案:1、在线调参数
set global information_schema_stats_expiry=10;
2、整理表
ANALYZE NO_WRITE_TO_BINLOG table xxx;