mysql性能调优开篇介绍、错误代码总结(处理方法)和参数文件详解(持续更新中ing)

news2024/11/15 8:23:35

前言

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。本文主要介绍当前MySQL性能优化+原理+实战已更新文章目录、收集当前使用mysql遇到的的错误及解决方法和参数文件配置详解。后续希望大家提出宝贵的建议。

在这里插入图片描述

MySQL性能优化+原理+实战

  • 一、已更新文章目录
    • MySQL安装和配置(保姆级别和全网最详细教程)
    • mysql的启动关闭原理和实战、及常见的错误排查
    • mysql字符集和校验规则(史上最全)
  • 二、参数文件详解汇总
    • basedir
    • datadir
    • user
    • socket
    • port
    • log_error
    • server_id
    • innodb_fast_shutdown (数据库关闭参数)
    • innodb_force_recovery(恢复参数)
    • innodb_data_file_path
    • binlog_cache_size
    • max_binlog_cache_size
    • max_binlog_size
    • skip-grant-tables
    • skip-networking
    • character_set_server
    • default_character_set
    • default_password_lifetime
  • 三、错误和解决方法汇总
    • ERROR 3118
    • ERROR 1820
    • [ERROR] Could not open file '/data/mysql/my3306/logs/error.log' for error logging: Permission denied
    • [ERROR] unknown variable 'basedi=/usr/local/mysql'
    • [ERROR] Do you already have another mysqld server running on port: 3306
    • [ERROR] Failed to open log (file '/data/mysql/my3306/logs/mysql-bin.000012', errno 2)
    • [ERROR] InnoDB: The Auto-extending innodb_system data file './ibdata1' is of a different size 768 pages (rounded down to MB) than specified in the .cnf file: initial 8192 pages, max 0 (relevant if non-zero) pages!
    • ERROR 1534
    • ERROR 1133
    • ERROR 1396

一、已更新文章目录

MySQL安装和配置(保姆级别和全网最详细教程)

点击此处进行跳转

一、版本介绍
	1.1 安装开发版本还是通用版本(GA)
	1.2 mysql命名方案
二、mysql安装方式和下载
	2.1 mysql安装方式
	2.2 mysql下载
		2.2.1 rpm安装mysql 安装包下载
		2.2.2 二进制安装mysql 安装包下载
		2.2.3 源码编译安装mysql 安装包下载
三、mysql安装
	3.1 前期准备工作
		3.1.1 操作系统配置
		3.1.2 修改主机名
		3.1.3 安装常用的软件
		3.1.4 关闭防火墙
	3.2 rpm包安装mysql
		3.2.1 解压上传服务器的rpm包
		3.2.2 安装mysql
		3.2.2 卸载mysql
	3.3 二进制安装mysql
		3.3.1 安装mysql规范
		3.3.2 解压上传到服务器的mysql二进制安装包
		3.3.3 安装mysql
		3.3.4 使用service控制mysql启动或关闭(了解)
		3.3.5 卸载mysql
	3.4 源码安装mysql(了解)
		3.4.1 安装依赖包
		3.4.2 生成源码包
		3.4.3 编译安装mysql
		3.4.4 卸载mysql
四、多实例部署
	4.1 多实例概念
	4.2 多实例安装(二进制)
	4.3 mysqld_multi(多实例第二种安装方式)
	4.4 使用service 控制实例的启停
	4.5 卸载mysql多实例

mysql的启动关闭原理和实战、及常见的错误排查

点击此处进行跳转

一、生产中mysqlq启动方式
	1.1 mysql的启动原理
	1.2 参数文件的优先级
	1.3 以server的方式启动mysql(实际启动mysql方式)
	1.4 mysqld_safe方式启动
	1.5 mysqld方式启动
	1.6 systemctl方式启动(CentOS 7)
二、关库
	2.1 相关参数innodb_fast_shutdown (数据库关闭参数)
	2.2 相关参数innodb_force_recovery(恢复参数)
	2.2 关闭mysql多种方式
三、常见的mysql启动失败案例
	3.1 目录权限
	3.2 参数问题
	3.3 配置文件
	3.4 端口占用
	3.5 误删二进制文件
	3.6 undo表空间异常
	3.7 binlog缓冲异常
四、mysql启动失败的排查方法
五、连接mysql的方式
	5.1 本地连接
	5.2 远程连接
六、mysql数据库用户安全策略
	6.1 数据库的初始化
	6.2 修改密码
	6.3 删除无用用户
	6.4 mysql_secure_installation(推荐使用该方式修改密码)
	6.5 找回丢失的用户密码

mysql字符集和校验规则(史上最全)

点击此处进行跳转

一、mysql 字符集和校验规则
二、查看字符集方法
	2.1 查询字符集方法
	2.2 查看字符集的校对规则
	2.3 查询当前数据库设置的字符集
	2.4 查看当前数据库的校对规则
三、mysql字符设置
	3.1 字符集设置的层级关系
	3.2 设置mysql服务器级别的字符集
		3.2.1 永久设置
		3.2.2 临时设置
	3.3 设置对象字符集
四、字符集案例
	4.1 常用的字符集汉字占多少字节
	4.2 大小案例
五、插入中文乱码解决
六、数据库常见的字符集及如何选择字符集
七、生产坏境中,如何避免乱码

二、参数文件详解汇总

basedir

mysql软件跟位置

basedir=/usr/local/mysql

datadir

mysql数据目录位置

datadir=/data/mysql/my3306/data

user

数据初始化后,所属的用户

user=mysql

socket

socket = /data/mysql/my3306/mysql.sock

对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用
启动mysql时显示:/tmp/mysql.sock 不存在的解决方法
Can’t connect to local MySQL server through socket '/tmp/mysql.sock’上述提示可能在启动mysql时遇到,即在/tmp/mysql.sock位置找不到所需要的mysql.sock文件,主要是由于my.cnf文件里对mysql.sock的位置设定导致。我们创建一个软链接到/tmp/mysql.sock即可。

[root@mysql2 ~]# ln -sf /data/mysql/my3306/mysql.sock /tmp/mysql.sock

port

端口号,默认3306

port = 3306

log_error

mysql日志位置

log_error=/data/mysql/my3306/logs/error.log

server_id

给mysql服务指定一个id

server_id = 1

innodb_fast_shutdown (数据库关闭参数)

在关闭时,参数innodb_fast_shutdown影响着表的存储引擎为InnoDB的行为。该参数可取值为0、1、2,默认值为1

  • 0表示在MySQL数据库关闭时,InnoDB需要完成所有的full purge(回收页)和merge insert buffer(合并插入缓冲区),并且将所有的脏页刷新回磁盘。这需要一些时间,有时甚至需要几个小时来完成。如果在进行InnoDB升级时,必须将这个参数调为0,然后再关闭数据库。
  • 1是参数innodb_fast_shutdown的默认值,表示不需要完成上述的full purge和merge insert buffer操作,但是在缓冲池中的一些数据脏页还是会刷新回磁盘。生产环境推荐的参数
  • 2表示不完成full purge和merge insert buffer操作,也不将缓冲池中的数据脏页写回磁盘,而是将日志都写入日志文件。这样不会有任何事务的丢失,但是下次mysql数据库启动时,会进行恢复操作(recovery)。如果写入日志文件出现异常,可能导致数据启动不了。
mysql> select @@innodb_fast_shutdown ;
+------------------------+
| @@innodb_fast_shutdown |
+------------------------+
|                      1 |
+------------------------+
1 row in set (0.00 sec)

innodb_force_recovery(恢复参数)

mysql> select @@innodb_force_recovery ;
+-------------------------+
| @@innodb_force_recovery |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.00 sec)

当正常关闭mysql数据库时,下次的启动应该是非常“正常”。但是如果没有正常地关闭数据库,如用kill命令关闭数据库,在mysql数据库运行中重启了服务器,或者在关闭数据库时,将参数innodb_fast_shutdown设为2,下次mysql数据库启动时都会对InnoDB存储引擎的表进行恢复操作.

参数innodb_force_recovery影响了整个InnoDB存储引擎恢复的状况。该参数值默认为0,代表当发生需要恢复时,进行所有的恢复操作,当不能进行有效恢复时,如数据页发生了corruption(坏块),mysqL数据库可能发生宕机(crash),并把错误写入错误日志中去。
但是,在某些情况下,可能并不需要进行完整的恢复操作,比如在对一个表进行alter table操作时发生意外了,数据库重启时会对InnoDB表进行回滚操作,对于一个大表来说这需要很长时间,可能是几个小时。这时用户可以自行进行恢复,例如把表删除,从备份中重新导入数据到表,可能这些操作的速度要远远快于回滚操作。

参数innodb_force_recovery还可以设置为6个非零值:1到6。大的数字表示包含了前面所有小数字表示的影响。具体情况如下:

  • 1(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。
  • 2(SRV_FORCE_NO_BACKGROUND):阻止Master Thread线程的运行,如MasterThread线程需要进行full purge(完整清理)操作,而这会导致crash。
  • 3(SRV_FORCE_NO_TRX_UNDO):不进行事务的回滚操作。
  • 4(SRV_FORCE_NO_IBUF_MERGE):不进行插入缓冲的合并操作。
  • 5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看撤销日志(Undo Log),InnoDB存储引擎会将未提交的事务视为已提交。
  • 6(SRV_FORCE_NO_LOG_REDO):不进行前滚的操作。

建议:生产环境只能设置为0。即遇到故障,系统就要自动进行所有恢复操作。如果启动不了,就调整该参数进行数据库的调整。

innodb_data_file_path

innodb_data_file_path=ibdata1:12M:autoextend

共享表空间ibdata1里保存元数据信息、insert buffer、double write、undo、回滚指针,在初始化数据库之前设置innodb_data_file_path的大小。重新修改配置文件中innodb_data_file_path的大小,必须是小于默认的大小(12M)或者等于默认的大小

binlog_cache_size

binlog缓存根据实际情况调大

 binlog_cache_size = 128M

max_binlog_cache_size

最大binlog缓存根据实际情况调大

max_binlog_cache_size = 512M

max_binlog_size

最大max_binlog日志根据实际情况调大

max_binlog_size=512M

skip-grant-tables

跳过密码验证,忘记root密码,可使用该参数,一般配合skip-networking参数一起使用

skip-grant-tables

skip-networking

禁止远程连接

skip-networking

character_set_server

服务端字符集设置,需要重启才能生效,影响的是character_set_server character_set_database 以及表的字符集

character_set_server=utf8 

default_character_set

客户端字符集设置,不需要重启,就能影响。它影响的参数是:character_set_client character_set_connection character_set_results ,如果有别的客户端没有配置,也是根据别的客服端的设置

[client]
default_character_set=utf8 

default_password_lifetime

设置密码过期的全局参数,最大值65535天,当创建用户或者修改用户密码策略为非默认过期时间,该参数失效

default_password_lifetime=180

三、错误和解决方法汇总

ERROR 3118

ERROR 3118 (HY000): Access denied for user ‘test’@‘localhost’. Account is locked.

错误原因:用户账号状态为锁定,登陆该账号,显示账户锁定
解决方法:修改账户状态为解锁

mysql> select user,host,account_locked from mysql.user;
+---------+-----------+----------------+
| user    | host      | account_locked |
+---------+-----------+----------------+
| root    | localhost | N              |
| jeffrey | localhost | N              |
| test    | localhost | Y              |
+---------+-----------+----------------+
3 rows in set (0.00 sec)

mysql> alter user 'test'@'localhost' account unlock;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host,account_locked from mysql.user;
+---------+-----------+----------------+
| user    | host      | account_locked |
+---------+-----------+----------------+
| root    | localhost | N              |
| jeffrey | localhost | N              |
| test    | localhost | N              |
+---------+-----------+----------------+
3 rows in set (0.00 sec)

ERROR 1820

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement

错误原因:用户策略问题,可能用户名到期导致
解决方法:修改密码,重新登陆即可

mysql> show create user 'test'@'localhost' \g;
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER for test@localhost                                                                                                                                    |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CREATE USER 'test'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' REQUIRE NONE PASSWORD EXPIRE ACCOUNT UNLOCK |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> alter user 'test'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

[ERROR] Could not open file ‘/data/mysql/my3306/logs/error.log’ for error logging: Permission denied

[ERROR] Could not open file ‘/data/mysql/my3306/logs/error.log’ for error logging: Permission denied
原因:数据目录的用户和用户组不是我们设置的用户
解决:

[root@mysql2 ~]# chown -R mysql:mysql /data/*
[root@mysql2 ~]# chmod -R 750 /data/mysql/

[ERROR] unknown variable ‘basedi=/usr/local/mysql’

[ERROR] unknown variable ‘basedi=/usr/local/mysql’
在修改配置文件参数时,可能因为参数拼写错误或者参数因版本不再支持,在错误日志会记录内容,在mysql启动关闭及在运行时的错误
解决:在配置文件将错误的参数修改

[ERROR] Do you already have another mysqld server running on port: 3306

[ERROR] Do you already have another mysqld server running on port: 3306
端口被占用导致MySQL启动失败
在多实例的环境下,因为某几个实例的端口是一样的,导致启动时造成端口的冲突,而无法启动,我们需要在my.cnf参数文件中修改端口

[ERROR] Failed to open log (file ‘/data/mysql/my3306/logs/mysql-bin.000012’, errno 2)

[ERROR] Failed to open log (file ‘/data/mysql/my3306/logs/mysql-bin.000012’, errno 2)
二进制日志文件保的记录已提交的dml、ddl、dcl,主要用来主从复制、增量备份,而我们手工删除二进制文件导致mysql启动失败
解决:vim mysql-bin.index 将对应的二进制日志文件记录删除即可

[ERROR] InnoDB: The Auto-extending innodb_system data file ‘./ibdata1’ is of a different size 768 pages (rounded down to MB) than specified in the .cnf file: initial 8192 pages, max 0 (relevant if non-zero) pages!

[ERROR] InnoDB: The Auto-extending innodb_system data file ‘./ibdata1’ is of a different size 768 pages (rounded down to MB) than specified in the .cnf file: initial 8192 pages, max 0 (relevant if non-zero) pages!
修改共享表空间参数大小导致MySQL启动失败,而共享表空间ibdata1里保存元数据信息、insert buffer、double write、undo、回滚指针

innodb_data_file_path=ibdata1:12M:autoextend

解决:在初始化数据库之前设置innodb_data_file_path的大小。重新修改配置文件中innodb_data_file_path的大小,必须是小于默认的大小(12M)或者等于默认的大小

ERROR 1534

ERROR 1534 (HY000): Writing one row to the row-based binary log failed
报错

mysql> call insert_emp(1,4000000);

ERROR 1534 (HY000): Writing one row to the row-based binary log failed

+---------------------+
| @@binlog_cache_size |
+---------------------+
| 2097152 			  |
+---------------------+

1 row in set (0.00 sec)

因为内存不足导致的binlog cache size不够不能写入binlog,导致语句无法执行 在配置文件中调整binlog_cache_size和max_binlog_cache_size参数的值,改大一点

binlog_cache_size = 128M(binlog缓存根据实际情况调大)
max_binlog_cache_size = 512M (binlog日志根据实际情况调大)

ERROR 1133

ERROR 1133 (42000): Can’t find any matching row in the user table
原因:没有该用户
解决方法:确认该用户是否存在

ERROR 1396

ERROR 1396 (HY000): Operation CREATE USER failed for ‘test’@‘localhost’
原因:创建用户时,用户存在
解决方法:删除用户重新创建或者创建用户名不存在的用户

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

园区路线地图指引图怎么画?园区地图三维图怎么画?

目前在园区信息化应用形式中,广泛缺乏专业电子地图的使用,因此,使这种高效的信息化工具的应用受到了很大限制。有些仅以图片代替,但图片没有空间计算、检索、路径设计的能力,在地图应用形式中,使用价值很低…

一文!解决恒定磁场的基本方程(有介质)

目录 引言 磁化过程 磁偶极矩 磁化强度 方程的化简 磁场强度 磁化率 磁导率 相对磁导率 现实生活中的应用 引言 为什么介质在磁场中会被磁化呢? 首先因为电子绕着原子核转动,所以就可以形成一个环形电流,,环形电流就可以产生磁场。…

SAR型ADC结构原理

SAR型 ADC,即逐次渐进逼近型 ADC,采用的是多次比较的方式来获得最终的输出结果,具有简单易用,功耗低的特点。下图这个结构可以帮助我们容易地理解SAR型 ADC的工作过程: 如上图,假设输入信号的伪代码为 45&…

YOLOv5+单目测距(python)

YOLOv5单目测距(python) 1. 相关配置2. 测距原理3. 相机标定3.1:标定方法13.2:标定方法2 4. 相机测距4.1 测距添加4.2 细节修改(可忽略)4.3 主代码 5. 实验效果 相关链接 1. YOLOV7 单目测距(p…

今晚直播 | 思码逸陆春蕊:面对研发效能度量落地难点,如何让数据说话?

本期分享 本期 DevData Talks 邀请到了思码逸高级咨询专家陆春蕊老师。陆春蕊老师曾就职于 Oracle 美国,在软件质量、项目管理方面有着丰富的经验。在研发效能领域为上百家客户提供了技术、数据分析、实践落地等方面的咨询,协助客户提升研发效能10%-30%…

Revit问题:墙体被楼板剪切及材质库被锁定问题

一、Revit 墙体被楼板剪切怎么办? 建模的时候画的墙总是到楼板就停了,这是为什么?明明顶部约束到标高2了,这种情况如何解决? 首先来分析问题产生的原因是,我们在绘制楼板的时候选择了用楼板剪切重复部分的墙体。 解决…

junit的基本使用

1 依赖引入&#xff1a; 只需要在maven项目中引入&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> 2 常用注解 Test Before after BeforeClass…

BUG——DM -3217: 第1 行附近出现错误: 列[***]未编制全文索引或全文索引数据错误(全文索引、是否包含某些字符串)

文章目录 一、情景二、报错三、解决四、说明1、CONTAINS的使用前景2、全文索引2.1.全文索引定义语句2.2.全文索引修改语句2.3.全文索引删除语句 一、情景 统计某字段中&#xff0c;包含某些字符串的行数 # 使用CONTAINS select sum(case when CONTAINS(my_column,123) then 1…

12种优雅的接口优化方案

12种优雅的接口优化方案 一、背景二、接口优化方案总结1.批处理2.异步处理3.空间换时间4.预处理5.池化思想6.串行改并行7.索引8.避免大事务9.优化程序结构10.深分页问题11.SQL优化12.锁粒度避免过粗欲速则不达,欲达则欲速! —— 佚名 一、背景 针对老项目,做了许多降本增效…

4、Symbol-ES6新基础类型

symbol是 ES6 新增的一种基本数据类型&#xff0c;它和 number、string、boolean、undefined 和 null 是同类型的&#xff0c;object 是引用类型。它用来表示独一无二的值&#xff0c;通过 Symbol 函数生成。 本小节代码都是纯JavaScript代码&#xff0c;建议在非TypeScript环境…

Rasa实现百度UNIT智能客服教学机器人

背景 上一篇文章提到了百度UNIT智能客服教学机器人&#xff0c;下面用Rasa实现同样的效果。环境如下 Rasa Version : 3.1.0 Minimum Compatible Version: 3.0.0 Rasa SDK Version : 3.1.1 Rasa X Version : 1.1.0 Python Version : …

【LeetCode: 354. 俄罗斯套娃信封问题 | 暴力递归=>记忆化搜索=>动态规划+二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

2023年4月份上新的目标检测系列论文(附下载链接)

来源&#xff1a;投稿 作者&#xff1a;王老师 编辑&#xff1a;学姐 目标检测-预训练相关 论文标题&#xff1a;DetCLIPv2: Scalable Open-Vocabulary Object Detection Pre-training via Word-Region Alignment 论文链接&#xff1a; https://arxiv.org/abs/2304.04514代码链…

Auto-GPT免费尝鲜之初体验-使用攻略和总结

Auto-GPT免费尝鲜之初体验-使用攻略和总结 写在前面的废话一、部署 Auto-GPT二、试运行 Auto-GPT三、我踩过的坑四、后续探索 写在前面的废话 ChatGPT 的交互模式&#xff0c;是和一个 “人” 对话聊天。 如果你想了解更多ChatGPT和AI绘画的相关知识&#xff0c;请参考&#…

【代码调试】《Frustratingly Simple Few-Shot Object Detection》

更多问题可参考&#xff1a; https://blog.csdn.net/qiankendeNMY/article/details/128450196 论文地址&#xff1a;https://arxiv.org/abs/2003.06957 论文代码&#xff1a;https://github.com/ucbdrive/few-shot-object-detection 我的配置&#xff1a; Python &#xff1a…

从零开始,详解亚马逊店铺注册流程及技巧指南

近几年跨境电商的势头越来越猛&#xff0c;所以很多新手都想去闯荡一番。很多人的第一选择都是亚马逊&#xff0c;毕竟亚马逊是世界上最大的电商平台之一&#xff0c;因此今天东哥就跟大家分享亚马逊店铺的注册方法&#xff0c;想在亚马逊开店的朋友不要错过&#xff01; 亚马逊…

设计模式 -- 工厂方法模式以及抽象工厂模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

Mysql MVCC实现

文章目录 背景MVCC定义快照读和当前读当前读快照读 MVCC实现原理隐式字段undo log版本链1.插入一条记录2.修改记录3.修改记录 Read View读视图属性&#xff1a;Read View可见性算法 隔离级别长事务为什么要避免长事务 背景 并发事务可能产生的问题&#xff1a; 读读&#xff…

zk111111111111111111

Zookeeper 1 zookeeper(作为 dubbo 的注册中心): 概述: zookeper 是 一个分布式的、开源的分布式应用程序的协调服务,管理分布式应 用 作用: 配置管理,分布式锁,集群管理 2 zookeeper 的安装 (dubbo 的资料中已经整理) 3 zookeeper 的数据模型 zookeeper 是一个树形的服…

微信小程序php+vue 校园租房指南房屋租赁系统

本着诚信的原则&#xff0c;平台必须要掌握出租方必要的真实可信的信息&#xff0c;这样就可以防止欺诈事件的发生&#xff0c;事后也可以联系找到出租方。并且租金等各方面规范标准化&#xff0c;在这易租房诚信可信的平台让承租方与出租方充分有效对接&#xff0c;既方便了承…