MySQL数据库优化和MySQL故障

一、MySQL数据库优化

硬件优化
CPU:推荐使用S.M.P.架构的多路对称CPU

内存:4GB以上的物理内存

磁盘:RAID-0+1磁盘阵列或固态硬盘

MySQL配置文件优化
调整配置项

SQL优化
尽量使用索引进行查询
优化分页
GROUP BY优化

MySQL架构优化

架构选择:主从、主主、一主多从、多主多从

1.1.使用索引

设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。

当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。

可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。

通过创建唯一(键)性索引,可以保证数据表中每一行数据的唯一性。

可以加快表与表之间的连接。

在使用分组和排序时,可大大减少分组和排序的时间。

索引的副作用

索引需要占用额外的磁盘空间。
   对于 MyISAM 引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。
而 InnoDB 引擎的表数据文件本身就是索引文件。

在插入和修改数据时要花费更多的时间,因为索引也要随之变动。

创建索引的原则依据

  1. 索引随可以提升数据库查询的速度,但并不是任何情况下都适合创建索引。

  2. 因为索引本身会消耗系统资源,在有索引的情况下,数据库会先进行索引查询,

  3. 然后定位到具体的数据行,如果索引使用不当,反而会增加数据库的负担。

1.2.事务

主要用于处理操作量大,复杂度高的数据。

1.事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。

2.事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。

3.事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。

4.事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。

1.3.创建临时表

使用临时表的两条或更多的select查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。

1.4.子查询

子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。

子语句可以与主语句所查询的表相同,也可以是不相同表

二、MySQL故障

故障现象1

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock'(2)

问题分析
数据库未启动或者数据库端口被防火墙拦劫

解决方法
启动数据库或者防火墙开放数据库监听端口

故障现象2

ERROR 1045 (28000): Access denied for user 'root'@"ocalhost'(using password:NO)

问题分析
密码不正确或者没有权限访问

解决方法
修改my.cnf主配置文件,在[mysqld]下添加skip-grant-tablesupdate更新user表authentication string字段口
重新授权D

故障现象3
在使用远程连接数据库时偶尔会发生远程连接数据库很慢的问题

问题分析
DNS解析慢、客户端连接过多

解决方法
修改my.cnf主配置文件(增加skip-name-resolve参数)
数据库授权禁止使用主机名

故障现象4
Can't open file:'xxx forums.MYl'.(errno; 145)

问题分析
服务器非正常关机,数据库所在空间已满,或一些其它未知的原因对数据库表造成了损坏
因拷贝数据库导致文件的属组发生变化

解决方法
修复数据表(myisamchk、phpMyAdmin)

修改文件的属组

故障现象5
ERROR 1129 (HY000): Host 'xxx.xxx.xxx.xxx'is blocked because of many

connection errors: unblock with 'mysgladmin flush-hosts'

问题分析
超出最大连接错误数量限制

解决方法
清除缓存(flush-hosts关键字)
修改mysql配置文件(maxconnecterrors=1000)

故障现象6
Too many connections

问题分析
连接数超出MySQL的最大连接限制

解决方法
修改MySQL配置文件(maxconnections=10000)
临时修改参数
set GLOBAL max connections=10000;

故障现象7
Warning: World-writable config file /etc/my.cnf is ignoredERROR! MySQL is running but PlD file could not be found

问题分析
MySQL的配置文件/etc/my.cnf权限问题

解决方法
chmod 644 /etc/my.cn

故障现象8
InnoDB:Error: page 14178 log sequence number 29455369832InnoDB: is in the future! Current system log sequence number 29455369832

问题分析
innodb数据文件损坏

解决方法
修改my.cnf配置文件(innodb force recovery=4)
启动数据库后备份数据文件
利用备份文件恢复数据

故障现象9
从库的Slave lO Running为NO

The slave l/0 thread stops because master and slave have equal MySQL serverids; 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 alwavs make sense.please check the manual before using it).

问题分析:

主库和从库的server-id值一样

解决方法
修改从库的server-id的值,修改为和主库不一样

重新启动数据库并再次同步。

故障现象:10

从库的Slavel0 Running为NO主键冲突或者主库删除或更新数据,从库内找问题分析:不到记录,数据被修改导致
解决方法
方法一mysql> stop slave; mysql> start slave; mysqI> set GLOBAL SQL SLAVE SKIP COUNTER=1;

     
方法二set alobal read only=true:

故障现象11
Error initializing relay log position: l/O error reading the header from the binarylog

问题分析
从库的中继日志relay-bin损坏

解决方法
手工修复,重新找到同步的binlog和pos点,然后重新同步即可
mysqI> CHANGE MASTER TO MASTER LOG FE='mysql-bin.xxx',MASTER LOG POS=xxx;

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

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

相关文章

多尺度变换(Multidimensional Scaling ,MDS)详解

一、基本思想 MDS(Multidimensional Scaling ,MDS多维尺度变换)是一种经典的降维算法,其基本思想是通过保持数据点之间的距离关系,将高维数据映射到低维空间中。 具体来说,MDS算法的基本步骤如下&#xff…

栈————顺序栈和链式栈

目录 栈 顺序栈 1、初始化顺序栈 2、判栈空 3、进栈 4、出栈 5、读栈顶元素 6、遍历 链式栈 1、初始化链式栈 2、断链式栈是否为空判 3、入栈(插入) ​编辑​编辑 4、出栈(删除) 5、读取栈顶元素 6、输出链式栈中各个节点的值(遍历) 栈 …

Express.js项目实战(1)—— 我的藏书馆

首先新建文件夹——myLibrary 在vscode中点击文件>点击 Duplicate Workspace(以工作区的方式打开文件夹myLibrary) 点击duplicate Workspace(打开工作区) 之后,会出现以下界面 点击打开文件夹,选择新建的文件夹,会出…

Vscode + PlatformIO + Arduino 搭建EPS32开发环境

Vscode PlatformIO Arduino 搭建EPS32开发环境 文章目录 Vscode PlatformIO Arduino 搭建EPS32开发环境1. Vscode插件安装2. 使用PlatformIO新建工程3.工程文件的基本结构4.一个基本的测试用例Reference 1. Vscode插件安装 如何下载vscode这里不再赘述,完成基本…

超低代码智能音频开发来了:XMOS宣布与DSP Concepts建立合作伙伴关系推动AIoT音频应用

人工智能和芯片供应商 XMOS 宣布与嵌入式音频软件专家 DSP Concepts 建立合作伙伴关系。该合作协议将允许音频开发人员将 XMOS 的高度确定性、低延迟的 xcore.ai 平台与 DSP Concepts 的 Audio Weaver 软件结合起来。该软件使用户能够利用多核算力以图形方式设计和调试音频和语…

EXCEL VBA与CSV的结合使用,提高多个CSV的处

EXCEL VBA与CSV的结合使用,提高多CSV的处理 1、首先创建一个文本文件,然后将copy *.csv 合并.csv粘贴,并重命名后缀未bat 2、将bat和多个CSV放一个路径下 3、双击运行合并.bat,运行完成会后生成合并.csv 4、将csv用Excel打开&…

ALPHA开发板上PHY网络芯片LAN8720

一. 简介 正点原子的开发板 ALPHA开发板,有线网络硬件方案所使用的也是最常用的一种方案,IMX6ULL芯片内部是自带 MAC网络芯片的,所以,也就是采用 "SOC内部集成网络MAC外设 PHY网络芯片方案"。 ALPHA开发板使用的PHY网…

算法第三十七天-旋转链表

旋转链表 题目要求 解题思路 题意:将链表中每个元素向后移动k个位置,相当于把链表的后面k%len节点移到链表的最前面。 所以本题步骤为: 1.求出链表长度; 2.找出倒数第k1个节点 3.链表重整:将连败哦的倒数第k1个节点和…

讲解pwngdb的用法,以csapp的bomb lab phase_1为例

参考资料 Guide to Faster, Less Frustrating Debugging 什么情况下会使用gbd 需要逆向ELF文件时(掌握gdb的使用,是二进制安全的基本功)开发程序时,程序执行结果不符合预期 动态调试ELF文件可以使用另外一种方法:IDA的远程linux动态调试。个…

java引入下载的依赖包配置

maven中央仓库没有依赖包&#xff0c;但是个别网站有可以下载的依赖包下载依赖包并引入的配置在maven工程目录下建立lib目录&#xff0c;并将下载的jar包放入在pom.xml文件中配置本地依赖 <dependency><groupId>org.ejml</groupId><artifactId>…

10.循环位移

问题描述 给定一个正好六位的正整数t&#xff0c;请将循环左移一位后输出。 所谓循环左移一位&#xff0c;是指将原来的十万位变为个位&#xff0c;原来的万位到个位向左移动依次变为十万位到十位。 例如:194910左移一位变为949101 又如:987123左移一位变为871239 输入格式 输入…

Java基础学习: hutool之CollUtil集合操作工具类

文章目录 一、介绍二、Hutool集合操作示例1、判断是否为空&#xff1a;2、判断是否非空3、集合是否包含某个元素4、集合是否包含某些元素5、集合是否不包含某些元素6、两个集合的交集操作7、两个集合的并集操作8、两个集合的差集操作9、集合元素是否相等10、集合转换为字符串&a…

LeetCode——动态规划(Java)

动态规划 简介[简单] 509. 斐波那契数[简单] 70. 爬楼梯[简单] 746. 使用最小花费爬楼梯[中等] 62. 不同路径[中等] 63. 不同路径 II[中等] 343. 整数拆分[中等] 96. 不同的二叉搜索树背包问题01背包[中等] 416. 分割等和子集[中等] 1049. 最后一块石头的重量 II[中等] 494. 目…

Nginx: proxy_set_header 与 add_header 区别

proxy_set_header 1 &#xff09;概述 proxy_set_header 和 add_header 是 Nginx 配置中两个不同的指令, 它们各自有不同的用途proxy_set_header 指令用于修改转发到代理服务器&#xff08;通常是后端应用服务器&#xff09;的 HTTP 请求头它允许您设置或覆盖请求头中的字段&a…

【游戏分析】FPS游戏狩猎百发百中

某某游戏狩猎玩法及其类似于FPS游戏 即3D射击 所以同样拥有 自动瞄准功能和爆头功能 想达到百发百中我们就要精准的计算出3D朝向值 读取人物坐标 遍历怪物,读取怪物坐标比较简单,不过多陈诉 朝向自然而然一定是我们和敌人的坐标计算出来的 那么怎么计算的呢&#xff1f; 我…

JAVA学习笔记21(访问修饰符)

1.访问修饰符 ​ *基本介绍 ​ java提供四种访问控制修饰符号&#xff0c;用于控制方法和属性(成员变量)的访问权限(范围) 1.公开级别&#xff1a;用public修饰&#xff0c;对外公开 2.受保护级别&#xff1a;用protected修饰&#xff0c;对子类和同一个包中的类公开 3.默…

基础知识系列

文章目录 一、linux passwd文件 一、linux passwd文件 linux中&#xff0c;用户名存放在/etc/passwd中&#xff0c;密码存放在/etc/shadow中。/etc/passwd只允许root用户可读可写&#xff0c;root组的用户可读&#xff0c;其他用户不可读不可写不可执行。/etc/shadow只允许roo…

手写简易操作系统(二十)--实现堆内存管理

前情提要 前面我们实现了 0x80 中断&#xff0c;并实现了两个中断调用&#xff0c;getpid 和 write&#xff0c;其中 write 还由于没有实现文件系统&#xff0c;是个残血版&#xff0c;这一节我们实现堆内存管理。 一、arena 在计算机科学中&#xff0c;“arena” 内存管理通…

DC-9靶场

一.环境搭建 1.下载地址 靶机下载地址&#xff1a;https://download.vulnhub.com/dc/DC-9.zip 2.虚拟机配置 设置虚拟机为nat&#xff0c;遇到错误点重试和是 开启虚拟机如下图所示 二.开始渗透 1. 信息收集 查找靶机的ip地址 arp-scan -l 发现靶机的ip地址为192.168.11…

C++从入门到精通——auto的使用

auto 前言一、auto类型别名思考二、auto简介三、auto的使用细则auto与指针和引用结合起来使用在同一行定义多个变量auto不能推导的场景auto不能作为函数的参数auto不能直接用来声明数组 lambda表达式 前言 C的auto关键字用于自动推导变量的类型&#xff0c;让编译器根据变量的…