ITPub博客

首页 > 数据库 > 数据库开发技术 > MySQL case几例

MySQL case几例

原创 数据库开发技术 作者:DBA札记 时间:2022-03-21 00:28:01 0 删除 编辑

一、修改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.1yum -y install numactl.x86_64

六、统计信息不准

问题:datacenter中的某个查询,从原来的2s多到700s以上,导致页面无法显示数据。

原因:统计信息不准导致

解决方案:1、在线调参数

set global information_schema_stats_expiry=10;

2、整理表

ANALYZE NO_WRITE_TO_BINLOG table xxx;

原文作者:DBA札记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-01-18

  • 博文量
    90
  • 访问量
    40026