mysql故障排查与环境优化

一、mysql运行原理
    mysql的运行分为三层
    客户端和连接服务
    
    核心服务功能(sql接口、缓存的查询、sql的分析和优化以及部分内置函数的执行等。)

    存储引擎层(负责mysql中数据的存储和提取。)
 

二、示例
1、实验环境单台mysql1主+1从
2、mysql单实例故障排查
现象1:ERROR 2002 (HY000):can't connect to local MySQL server through socket '/data/mysql/mysql.sock'(2)分析:一般是数据库未启动、mysql配置文件未指定socket文件或者数据库端口被防火墙拦截导致。解法:启动数据库或者防火墙开放数据库监听端口。现象2:ERROR 1045 (28000):Access denied for user 'root'@'localhost' (using password:NO)分析:密码不正确或没有权限访问。解法:修改my.cnf主配置文件,在[mysqld]下添加skip-grant-talbes=on,重启数据库,最后修改密码命令如下。	5.7版本
mysql> update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost';
mysql> flush privileges;8.0版本
mysql> update mysql.user set authentication_string='' where user='root' and Host='localhost';
mysql> flush privileges;
mysql> alter user 'root'@'localhost' identified by '123456';再删除刚添加的skip-grant-tables参数,重启数据库,使用新密码即可登录。重新授权,命令如下。5.7版本
mysql> grant all on *.* to 'root'@'mysql-server' identified by '123456';8.0版本
mysql> create user 'root'@'mysql-server' identified  by '123456';
mysql> grant all on *.* to 'root'@'mysql-server';现象3:在使用远程连接数据库时偶尔会发生远程连接数据库很慢的问题。分析:开启了dns解析功能。解法:修改my.cnf主配置文件,在[mysqld]下添加skip-name-resolve,重启数据库可以解决。注意在以后授权里面不能再使用主机名授权。现象4:Can't open file: 'xxx_forums.MYI'. (error:145)分析:服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了孙环。可能是操作系统下直接将数据库文件拷贝移动,会因为文件的属组问题而产生这个错误。解法:myisamchk -r 数据文件目录/数据表名.MYI;  # 仅适合独立主机用户。或修改文件的属组。复制数据库文件的过程中没有将数据库文件设置为MySQL运行的账号可读写。 # 仅适合独立主机用户。现象5:ERROR 1129 (HY000):Host 'xxx.xxx.xxx.xxx' is blocked because of many connection errors;unblock with 'mysqladmin flush-hosts'分析:超出了mysql的总连接请求数,新的连接会无法连接。解法:使用mysqladmin flush-hosts命令清除缓存即可。mysqladmin -uroot -p -h ip flush-hosts 或修改mysql配置文件,在[mysqld]下面添加max_connect_errors=1000,然后重启。现象6:客户端报 Too many connections.分析:连接数超出mysql的最大连接数限制。解法:在my.cnf配置文件中增大连接数,然后重启mysqlmax_connections=1000或临时修改最大连接数。set GLOBAL max_connections=1000;现象7:Warning:World-writable config file '/etc/my.cnf' is ignoredERROR! MySQL is running but PID file could not be found分析:mysql的配置文件/etc/my.cnf权限不对。解法:chmod 644 /etc/my.cnf现象8:InnoDB: Error: page 14178 log sequence number 29455369832InnoDB: is in the future! Current system log sequence number 29455369832分析:innodb数据文件损坏。解法:修改my.cnf配置文件,在[mysqld]下添加innodb_force_recovery=4,启动数据库后备份数据文件,然后去掉该参数,利用备份文件恢复数据。MySQL主从故障排查现象1从库的Slave_IO_Running 为 NOThe 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值一样。解法:修改从库的server-id值,与主库不一样,重启mysql后再同步即可。现象2从库的Slave_IO_Running 为 NO分析:原因很多,例如主键冲突、主库删除,从库找不到记录、数据被修改导致。通常状态码报错有1007、1032、1062、1452等。解法:
mysql> stop slave; 
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  # 设置全局sql从属计数器为1.
mysql> start slave;或mysql> set global read_only=true; # 设置用户权限,从库只读。现象3Error initializing relay log position: I/O error reading the header from the binary log分析:从库的中继日志relay-log损坏。解法:手工修复,重新找到同步的binlog和pos点,然后重新同步即可。mysql>chan gemaster to master_log_file='mysql-bin.xxxxxx',master_log_pos=xxx;mysql的sql语句优化创建测试表并插入数据
mysql> create database test;
Query OK, 1 row affected (0.02 sec)mysql> use test;
Database changed
mysql> create table users(-> id int primary key auto_increment,-> name varchar(50) not null,-> email varchar(100) not null,-> age int not null,-> created_at datetime default current_timestamp-> );
Query OK, 0 rows affected (0.04 sec)mysql> delimiter $$  # 设置分隔符,用$$来作为当前语句的终止符,以便后续存储过程使用它作为分隔符。
mysql> create procedure ii_users()  # 创建存储程序-> begin  # 开始存储程序。-> declare i int default 0;  # 声明变量。-> while i < 100000 do  # 执行循环插入数据。当i小于10万时,进入循环,name列由concat('user',i)生成,如user1、user2等,email列由concat('user',i,'@example.com')生成,如'user1@example.com',age列通过floor(rand() * 100) 随机生成0到99之间的整数值。 通过 i = i + 1 来更新变量的值。-> insert into users(name,email,age) -> values (concat('user',i),concat('user',i,'@example.com'),-> floor(rand() * 100));-> set i = i + 1;-> end while;  # 结束循环-> end$$  #结束存储程序,使用之前的$$作为终止符。
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;  # 恢复语句分隔符,将默认的语句分隔符恢复为; 避免后续查询出错。
mysql> call ii_users();   # 执行存储过程。
Query OK, 1 row affected (6 min 34.95 sec)mysql> explain select * from users where name = 'user123';
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | users | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 99909 |    10.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+-------+----------+-------------+
1 row in set, 1 warning (0.00 sec)mysql> alter table users add index idx_name(name);  # 优化,创建索引。
Query OK, 0 rows affected (0.68 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> explain select * from users where name = 'user123';  # 查询使用了索引,大大提高了查询效率。
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key      | key_len | ref   | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | users | NULL       | ref  | idx_name      | idx_name | 152     | const |    1 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+----------+---------+-------+------+----------+-------+explian用于显示mysql如何执行一条sql语句,关键字段解释:
字段 说明 优化关注点
id 查询序列号,相同id为同一执行层,不同id按序执行。select_type 查询类型(simple、primary、subquery、derived等) 识别子查询或临时表操作。table  访问的表名或别名。  确认查询涉及的表。type  访问类型 性能从优到劣:system > const > eq_ref > ref > range > index > ALL 避免ALL(全表扫描),优先优化为ref或range。possible_keys 可能使用的索引    检查是否有合适索引未被使用。key  实际使用的索引    确认是否命中最佳索引rows 预估扫描的行数	行数越少,查询效率越高。extra	附加信息(如 using where 、using index、using temporary等) 发现潜在性能问题(如临时表、文件排序)。

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

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

相关文章

Codex与LangChain结合的智能代理架构:重塑软件开发的未来

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:当代码生成遇见智能决策 想象以下场景: 凌晨三点:你需要紧急修复一个遗留系统的内存泄漏漏洞,但代码注释缺失且逻辑复杂; 产品经理需求变更:要求在24小时内将现有…

【开源Agent框架】CAMEL:角色扮演+任务分解

一、项目概览:重新定义智能体协作范式 CAMEL(Communicative Agents for “Mind” Exploration of Large Language Model Society)是由camel-ai社区开发的开源多智能体框架,致力于探索智能体的规模法则(Scaling Laws)。该项目通过构建包含百万级智能体的复杂社会系统,研…

第32节:基于ImageNet预训练模型的迁移学习与微调

1. 引言 在深度学习领域,迁移学习(Transfer Learning)已经成为解决计算机视觉任务的重要方法,特别是在数据量有限的情况下。其中,基于ImageNet数据集预训练的模型因其强大的特征提取能力而被广泛应用于各种视觉任务。本文将详细介绍迁移学习的概念、ImageNet预训练模型的特…

celery独立部署接入数据库配置

目录结构&#xff1a; config下配置&#xff1a; __init__: import os import sys sys.path.append(os.getcwd()) from celery import CeleryappCelery(celeryTester) # 创建一个Celery实例&#xff0c;名字自定义 app.config_from_object(config.celery_config) # 从celery_…

攻防世界-题目名称-文件包含

进入环境 看到 include()&#xff0c;想到文件包含&#xff0c;用php伪协议 /?filenamephp://filter/readconvert.base64-encode/resourceflag.php do not hack!猜测可能是黑名单检测的敏感字符 输入单个字符串/?filenamebase64 还是显示do not hack&#xff01; 构造payl…

MySQL高频面试八连问(附场景化解析)

文章目录 "为什么订单查询突然变慢了&#xff1f;"——从这个问题开始说起一、索引的生死时速&#xff08;必考题&#xff01;&#xff09;二、事务的"套娃"艺术三、锁机制的相爱相杀四、存储引擎的抉择五、慢查询的破案技巧六、分页的深度优化七、高可用架…

Android 中 自定义生成的 APK/AAR 文件名称

在 Kotlin DSL 中&#xff0c;可以通过配置 build.gradle.kts 文件来自定义生成的 APK 或 AAR 文件名称。 1、自定义 APK 名称 在模块的 build.gradle.kts 中通过修改 applicationVariants.all 配置来实现。 android {......applicationVariants.all {outputs.all {val df …

《从零开始:Spring Cloud Eureka 配置与服务注册全流程》​

关于Eureka的学习&#xff0c;主要学习如何搭建Eureka&#xff0c;将order-service和product-service都注册到Eureka。 1.为什么使用Eureka? 我在实现一个查询订单功能时&#xff0c;希望可以根据订单中productId去获取对应商品的详细信息&#xff0c;但是产品服务和订单服…

鸿蒙开发进阶:深入解析ArkTS语言特性与高性能编程实践

一、前言 在鸿蒙生态蓬勃发展的当下&#xff0c;开发者对于高效、优质的应用开发语言需求愈发迫切。ArkTS 作为鸿蒙应用开发的核心语言&#xff0c;在继承 TypeScript 优势的基础上&#xff0c;进行了诸多优化与扩展&#xff0c;为开发者带来了全新的编程体验。本文将深入剖析…

ARM-Linux 完全入门

1.准备部分 1.1 虚拟机安装 准备VMware软件、ubuntu系统镜像安装过程 VMware安装 破解&#xff08;自己百度破解码&#xff0c;多试几个网址&#xff0c;会有能用的&#xff09;Ubuntu安装 配置联网 桥接 虚拟机Ubuntu系统必须能连接到外网&#xff0c;不然不能更新软件安装…

深度学习驱动下的目标检测技术:原理、算法与应用创新(三)

五、基于深度学习的目标检测代码实现 5.1 开发环境搭建 开发基于深度学习的目标检测项目&#xff0c;首先需要搭建合适的开发环境&#xff0c;确保所需的工具和库能够正常运行。以下将详细介绍 Python、PyTorch 等关键开发工具和库的安装与配置过程。 Python 是一种广泛应用于…

致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)

1. 前言 不知道有多少同学正在自学C/C, 无论你是一个在校学生, 还是已经是上班族. 如果你想从事或即将从事软件开发这个行业, C/C都是一个几乎必须要接触的系统级程序开发语言. 虽然现在有Rust更安全的系统级编程语言作为C/C的替代, 但作为入门, C应该还是要好好学的. C最早由B…

【Leetcode 每日一题】3355. 零数组变换 I

问题背景 给定一个长度为 n n n 的整数数组 n u m s nums nums 和一个二维数组 q u e r i e s queries queries&#xff0c;其中 q u e r i e s [ i ] [ l i , r i ] queries[i] [l_i, r_i] queries[i][li​,ri​]。 对于每个查询 q u e r i e s [ i ] queries[i] quer…

[java八股文][Java虚拟机面试篇]垃圾回收

什么是Java里的垃圾回收&#xff1f;如何触发垃圾回收&#xff1f; 垃圾回收&#xff08;Garbage Collection, GC&#xff09;是自动管理内存的一种机制&#xff0c;它负责自动释放不再被程序引用的对象所占用的内存&#xff0c;这种机制减少了内存泄漏和内存管理错误的可能性…

ubuntu服务器版启动卡在start job is running for wait for...to be Configured

目录 前言 一、原因分析 二、解决方法 总结 前言 当 Ubuntu 服务器启动时&#xff0c;系统会显示类似 “start job is running for wait for Network to be Configured” 或 “start job is running for wait for Plymouth Boot Screen Service” 等提示信息&#xff0c;并且…

Android 手写签名功能详解:从原理到实践

Android 手写签名功能详解 1. 引言2. 手写签名核心实现&#xff1a;SignatureView 类3. 交互层实现&#xff1a;MainActivity 类4. 布局与配置5. 性能优化与扩展方向 1. 引言 在电子政务、金融服务等移动应用场景中&#xff0c;手写签名功能已成为提升用户体验与业务合规性的关…

【nRF9160 常用prj.conf配置与AT指令介绍】

参考资料&#xff1a; 技术讨论&#xff1a;Q群&#xff1a;542294007 nRF91 NCS SDK安装工具与SDK安装包等常用软件下载地址 云盘下载&#xff1a;pan.olib.cn 一、nRF9160 常用prj.conf配置介绍 nRF9160通过prj.conf配置网络模式为&#xff1a;CAT-M模式 CONFIG_LTE_NETWOR…

小型化边缘计算设备

以下是关于小型化边缘计算设备的核心技术与应用特点的综合分析&#xff1a; 一、核心硬件平台与算力表现‌ NVIDIA Jetson Orin系列‌ Jetson Orin Nano‌&#xff1a;配备1024个CUDA核心和32个Tensor核心&#xff0c;支持高达100 TOPS的AI算力&#xff0c;适用于机器人、无…

css使用clip-path属性切割显示可见内容

1. 需求 想要实现一个渐变的箭头Dom&#xff0c;不想使用svg、canvas去画&#xff0c;可以考虑使用css的clip-path属性切割显示内容。 2. 实现 <div class"arrow">箭头 </div>.arrow{width: 200px;height: 60px;background-image: linear-gradient(45…

Kotlin与物联网(IoT):Android Things开发探索

在物联网&#xff08;IoT&#xff09;领域&#xff0c;Kotlin 凭借其简洁性、安全性和与 Java 生态的无缝兼容性&#xff0c;逐渐成为 Android Things 开发的有力工具。尽管 Google 已于 2022 年宣布停止对 Android Things 的官方支持&#xff0c;但其技术思想仍值得探索&#…