MySQL生产问题实践总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL生产问题实践总结

【1】Error:MySQL server has gone away

背景:将外部sql文件导入数据库。

解决办法:

Linux下修改my.conf;Windows下修改my-default.ini。

添加(修改)如下配置:

wait_timeout=2880000 
interactive_timeout = 2880000 
max_allowed_packet = 256M


20180418102701842.png


如果使用命令方式,只在当前会话有效,建议修改配置:

show global variables like 'max_allowed_packet';
set global max_allowed_packet=268435456;
set global max_allowed_packet=1024*1024*256;

使用set global命令修改 max_allowed_packet 的值,重启mysql后会失效,还原为默认值。

如果不知道如何修改MySQL配置文件,在运行sql文件时,可以使用命令方式。


【2】Packet for query is too large

异常如下所示:

Packet for query is too large (1238 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3683) ~[mysql-connector-java-5.1.47.jar:5.1.47]


解决方案

Linux下修改my.cnf文件在[mysqld]下添加如下配置:

max_allowed_packet = 100M


如果是windows下则修改my.ini文件。

【3】sql_mode为ONLY_FULL_GROUP_BY的问题

 In aggregated query without GROUP BY, expression #32 of SELECT list contains nonaggregated columnXXXXX ' this is incompatible with sql_mode=only_full_group_by

这种模式的官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode, 通过这个 sql_mode 来保证, SQL语句 “分组求最值” 合法性的检查. 这种模式采用了与 Oracle、DB2 等数据库的处理方式。即不允许 select target list 中出现语义不明确的列。


对于用到 GROUP BY 的 select 语句, 查出来的列必须是 group by 后面声明的列, 或者是聚合函数里面的列有这样一个数据库的表。


临时方案-会话有效

set @@GLOBAL.sql_mode='';
set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

永久方案

mysql的配置文件中[mysqld]下添加如下配置

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"


【4】数据迁移自动去除转义问题

默认情况下,MySQL会自动给你去除转义的,这在有些情况下会出错。此时我们就可以给sql_mode添加上NO_BACKSLASH_ESCAPES 来避免。如果SQL是通过导入执行脚本的,那么设置全局级别。

-- 查询sql_mode配置
SELECT @@sql_mode;
-- 修改会话级别的sql_mode
SET SESSION sql_mode = '...,NO_BACKSLASH_ESCAPES';
-- 修改全局级别的sql_mode
SET GLOBAL sql_mode = '...,NO_BACKSLASH_ESCAPES';


【8】Windows下MySQL8.0.31突然启动不了 1053错误


一直在正常使用,早上打开电脑突然发现MySQL服务启动不了,一直提示1053错误。因为没有任何异常操作,故而推测可能与电脑系统更新有关。

这里给出自己实践的解决方案。服务-找到MySQL服务0右键属性-登录:




我这边是Janus(本机管理员)可以正常启动。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
缓存 网络协议 关系型数据库
[玩转MySQL之二]MySQL连接机制浅析及运维
使用MySQL数据库的第一步必然是建立连接登录,无论是通过mysql的客户端。无论是通过mysql的客户端,还是通过C-API,JDBC标准接口连接数据库,这个过程一定少不了。那么它的内部机制是怎样的?有哪些参数配置以及会出现哪些问题?
3104 0
|
SQL 存储 关系型数据库
|
SQL 存储 监控
MySQL 优化实施方案
1.1 前言      在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。更多关于MySQL查询相关参照:http://www.cnblogs.com/clsn/p/8038964.html#_label6 系列文章。
1780 0
|
关系型数据库 MySQL 数据库
|
存储 SQL Cloud Native
三高Mysql - Mysql特性和未来发展(下)
三高Mysql - Mysql特性和未来发展(下)
329 0
|
SQL 存储 NoSQL
三高Mysql - Mysql特性和未来发展(上)
三高Mysql - Mysql特性和未来发展(上)
252 0
|
10月前
|
存储 SQL 关系型数据库
三高Mysql - Mysql特性和未来发展
三高Mysql - Mysql特性和未来发展
95 0
|
SQL 关系型数据库 MySQL
|
监控 关系型数据库 MySQL
MySQL MTOP - 开源 MySQL 企业监控系统
MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。最重要是MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息 功能非常强大: 可对上百台MySQL数据库的状态、连接数、Q...
1454 0