Mysql8的优化(DBA)

news2024/11/17 4:50:43

Mysql8的优化

  • 1、Mysql的安装优化
    • 1.1 修改配置参数(命令行、配件文件)
      • 1.1.1 命令行修改配置参数
      • 1.1.2 参数持久化
      • 1.1.3 Mysql多实例启动,以及配置密码文件
    • 1.2 查询表的相关参数,以及表空间管理
  • 2、Mysql高级优化(SQL)
    • 2.1 SQL慢查询监控
    • 2.2 performance_schema(引擎)
      • 2.2.1基本监控
    • 2.3mysql 用户管理和授权
      • 2.3.1 认证
      • 2.3.2 授权
      • 2.3.3 角色激活:
      • 2.3.3 授权表:
      • 2.3.4 创建用户授权:
    • 2.4 mysql 安全
      • 2.4.1 启用SSL连接
      • 2.4.2 操作数据库防火墙
    • 2.5 mysql 优化和监控
      • 2.5.1 数据库锁
      • 2.5.2 数据库索引优化
      • 2.5.3 数据库监控(待补充)
    • 2.5 mysql 备份和恢复
      • 2.5.1 mysqldump 和 mysqlpump
      • binlog 恢复(待补充)

1、Mysql的安装优化

1.1 修改配置参数(命令行、配件文件)

#   -----------------------修改配置参数-------------------------------------

# 配置 innodb 

show VARIABLES like  '%innodb_buffer%';

# 内存 修改
set global innodb_buffer_pool_size = 144217728;



show  DATABASES;

#  innodb_buffer_pool_instances =  2 ,innodb_buffer_pool_size必须大于1G;那样可以分为两个子池


# 连接池,max_connections默认151,mysqlx_max_connections最大默认100; 和内核参数有关

show  VARIABLES like '%max_connections%';  


show  VARIABLES like '%port%';  

1.1.1 命令行修改配置参数

# 命令行、或者配置文件;部分参数不能在内存中修改;

#   -----------------------修改配置文件--------------------------------------

# -----------------------动态修改参数(部分参数:set):重启就会恢复原样--------------------------------------

set GLOBAL max_connections = 100;
show VARIABLES like '%connections%';


show VARIABLES like '%autocommit%';

set global autocomm=off;
 
# global 必须新的会话才可以生效

1.1.2 参数持久化

# -------------------------如何设置参数持久化:,mysql8的特性------------------


# 持久化到数据库的目录下:mysqld-auto.conf

set persist max_connections = 101;

show VARIABLES like '%connections%';
show   databases;

# 变量表
use `performance_schema`;


select  * from  performance_schema.variables_info where variable_name = 'max_connections';


set  persist max_connections= default;

show VARIABLES like '%connections%';
 

1.1.3 Mysql多实例启动,以及配置密码文件

# -----------------------配置客户端启动命令:可以在mysqld文件中

# 密码放到一个加密文件:    mysql_config_editor set --login-path =用户名 --user=root --PASSWORD


#客户端可以配置提示符


#  mysql 实例初始化  mysqld  --no-defaults --initialize-insecure --user=mysql  --data = /mysql/data1

mysqld  --no-defaults --initialize-insecure --user=mysql  --data = /mysql/data1
mysqld  --no-defaults --initialize-insecure --user=mysql  --data = /mysql/data2
mysqld  --no-defaults --initialize-insecure --user=mysql  --data = /mysql/data3


#  mysql 启动实例;连接远程tcp ,本地 udp

1.2 查询表的相关参数,以及表空间管理

# 查询表的相关参数
show  variables like '%table%';
# 创建表空间
create TABLESPACE general add datafile 'general.ibd';

create  table  t_demo(b int) TABLespace = general;


insert into t_demo  values(1);
insert into t_demo  values(2);
insert into t_demo  values(3);

select  * from t_demo;
#  查询表对应的表空间 :CREATE TABLE `t_demo` ( `b` int DEFAULT NULL) /*!50100 TABLESPACE `general` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
show  create table  t_demo;

# 外部文件通用表空间

show   VARIABLES like '%innodb_direct%';
#  删除表空间

drop  TABLESPACE  general;

2、Mysql高级优化(SQL)

2.1 SQL慢查询监控

#设置慢查询的开启状态,默认是关闭状态
show   VARIABLES like "%slow%";
# 开启慢查询功能
set  GLOBAL slow_query_log = "ON";
# 查询慢查询的输出:默认是file
show   VARIABLES like "%log_output%";
# 设置慢查询记录到表中
set  GLOBAL log_output = "TABLE"
# 查询慢查询记录
select  * from mysql.slow_log;
# #设置慢查询的监控时间,默认是10秒
show   VARIABLES like "%long%";
#设置成0.5秒,注意这个重新开启会话才可以生效
set  GLOBAL long_query_time=0.5;

2.2 performance_schema(引擎)

MySQL的performance_schema是一个系统数据库,专门设计用于收集和展示服务器性能相关的数据。它的主要作用是:

 1. **资源监控:** performance_schema可以实时监控MySQL服务器内部的各种操作,包括但不限于内存、CPU、线程、文件系统I/O、表锁、阶段(stages)和事件(events)等资源的使用情况。
 2.  **性能分析:** 通过该库提供的视图,用户可以获取到详细的执行计划、查询时间、等待事件统计等信息,帮助开发人员和DBA分析应用程序或SQL语句的性能瓶颈。
 3.  **深度跟踪:** 它能够提供低级别的SQL执行细节,例如记录每个查询在MySQL内部各个组件中的执行时间和消耗资源情况,有助于进行更深入的诊断和优化工作。
 4.  **安全性监控:** 可以用来监视和控制诸如连接数、线程状态、账户活动等与安全性和稳定性相关的信息。
 5. **自定义监控:** 用户可以根据需要启用或禁用特定的监控点(instrument),并配置采样频率和其他参数,以便对特定的关注点进行定制化的性能监控。
总之,performance_schema为MySQL提供了丰富的内部运行时信息,是进行数据库性能调优的重要工具之一。通过它,DBA和开发者可以更好地理解数据库的工作方式,发现潜在问题,并采取相应措施提高系统的整体性能和效率。

2.2.1基本监控

#  ----------------------------------------------------`performance_schema`-------------------

show VARIABLES like  "performance_schema";

# `performance_schema`就是一个引擎

show  ENGINE `performance_schema` status;

  
use `performance_schema`;

# 查下看配置表

show TABLES like '%setup%';

# 查看自定义配置

select * from setup_consumers;

# 查看链接状态
select * from setup_actors;


# 查看每行的指标
select * from setup_instruments;


select * from setup_instruments  where  name like  "wait/io/table%";


# 查看I O的表
select  * from table_io_waits_summary_by_table;

#  记录每一张表的IO
select  * from table_io_waits_summary_by_table where object_schema="test_db" and  object_name ="t_demo";

2.3mysql 用户管理和授权

2.3.1 认证

在这里插入图片描述

1. username@localhost  等价于  ‘username’@‘localhost’  可以有单引号也可以没有
2. 主机名hostmane

在这里插入图片描述
3. 创建账户 5.7 和8之后不一样
在这里插入图片描述

不要创建没有密码的账户,也不要创建用户和授权

  1. 角色权限
    在这里插入图片描述

用户的权限可以通过角色授权

  • 示例: 当前用户@客户端的名字 root@localhost 在这里插入图片描述5. 维护修改账户、角色- 修改账户在这里插入图片描述
  1. 配置账户密码
    在这里插入图片描述

  2. mysql8新特性: 一个账户两套密码:
    在这里插入图片描述

手动添加第二套密码,之前的密码作为老密码;执行 discard 就会抛弃老密码。

  1. 密码过期:手动过期
    在这里插入图片描述

注意:过期密码可以连接,但是不能操作

  • **默认过期:**default_password_lifetime 可以作为默认过期的,另外 never 是永不过期;expire interval 30 day:30天后过期;
    在这里插入图片描述

  • 密码过期修改密码
    在这里插入图片描述

  • 示例:
    在这里插入图片描述

登入的用户username@(mysql所在的客户端机器)选 C
dbserver2: 这个是db服务器 用户名@主机

  1. mysql 认证插件
    在这里插入图片描述

**注意:**mysql 5.7 使用的 前两种; mysql 8 之后添加了第三种,将密码放到内存中,舍弃了第一种。

  1. 几种连接认证方式:客户端连接数据库
    在这里插入图片描述
    在这里插入图片描述
  • PAM认证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

不用登录、或者文本插件、或者企业级PAM

2.3.2 授权

1. 为什么授权:
在这里插入图片描述

2. 授权类型
在这里插入图片描述
在这里插入图片描述

3. 授权管理权限
在这里插入图片描述

4. 动态权限
在这里插入图片描述

5. 制定或者自定义权限:
在这里插入图片描述

usage:默认就是连接权限,创建好就有

6. 语句类的权限
在这里插入图片描述
在这里插入图片描述

7. 授权角色:
在这里插入图片描述

with admin option: 授权管理权限
8. 查询权限
在这里插入图片描述
在这里插入图片描述

9. 权限收回:revoke
在这里插入图片描述在这里插入图片描述
10. mysql8 新特性:收回部分权限,但是必须打开部分收回的权限,partial_revokes=on
在这里插入图片描述

  • 使用权限的限制
    在这里插入图片描述

. 所有库下面的所有表

  1. 示例:
    在这里插入图片描述

a :锁定 不能登录 ;b:过期可以登录; c:删除不可以登录;usage:可以登录

2.3.3 角色激活:

1. 几种类型:服务器、用户、会话层面
在这里插入图片描述
2. 设置激活角色:
在这里插入图片描述

3. 设置默认角色:
在这里插入图片描述

4. 会话级别:
在这里插入图片描述

5. 强制持久化
在这里插入图片描述

2.3.3 授权表:

1. 权限类型:
在这里插入图片描述
2. 用户表授权
在这里插入图片描述
在这里插入图片描述
3. 修改权限
在这里插入图片描述

注意:ddl 不需要刷新的: dml;在内存中需要刷新flush;不是所有的都需要刷新。
DDL和DML的区别:
DDL (Data Definition Language) 和 DML (Data Manipulation Language) 是 SQL 中两种不同类型的语句,它们在数据库操作中有明确的区别:
DDL (数据定义语言):
作用:用于创建、修改和删除数据库中的结构或模式对象。
功能:包括创建表(CREATE TABLE)、修改表结构(ALTER TABLE)、删除表(DROP TABLE)、创建索引(CREATE INDEX)、删除索引(DROP INDEX)以及创建视图(CREATE VIEW)、删除视图(DROP VIEW)等与数据库架构相关的操作。
特点:DDL 语句通常是自动提交的,并且一旦执行,对数据库结构的改变立即生效,无法通过事务回滚来撤销。
DML (数据操作语言):
作用:用于插入、更新、删除数据库表中的实际数据行,以及查询这些数据。
功能:主要包括插入数据(INSERT INTO)、更新数据(UPDATE)、删除数据(DELETE FROM)以及从表中选择数据(SELECT)的操作。
特点:DML 语句通常是在事务内执行的,可以控制事务的开始、提交和回滚。这意味着执行一系列 DML 操作后可以选择是否将更改永久保存到数据库中。
总结来说,DDL 主要关注数据库的物理结构设计,而 DML 则是针对已存在结构中的数据进行具体的操作和管理。

2.3.4 创建用户授权:

#  创建用户
create  user  jan@localhost IDENTIFIED by 'jan123';

#创建两个权限
create role r_mgr,r_emp;

# 把表的查询权限授权给角色
grant select  on test_db.t_demo to  r_emp;

# 把表的ddm权限付给角色
grant  insert,update,delete on test_db.* to r_emp;

# 把表的ddm权限付给角色
grant  insert,update,delete on test_db.* to r_mgr;


# 授权角色给用户
grant r_emp,r_mgr to jan@localhost;

# 查看用户
select  * from mysql.`user`;

# 查看角色
select  * from  mysql.role_edges;

# 授权:把表的查询权限授给用户
grant select  on test_db.t_demo to jan@localhost;
#  查看当前用户角色
select  current_role();
#  查看授权
show grants;

# 把角色授权给所有用户 
set role all;

# 查看当前用户
select  current_user();

select  current_role();

show grants;

2.4 mysql 安全

2.4.1 启用SSL连接

# SSL 默认是开启的,可以关闭 skip_ssl ;本地tcp和ip

show  VARIABLES like  "%have_ssl%";

# --ssl-modle = disable 加这个参数可以不使用ssl


show  global VARIABLES like  "%tls%";


show  session VARIABLES like  "%ssl%";
#  证书连接  --ssl-cert =?  --ssl-key=? ssl_type = X509
show  create table test_db.t_demo;

2.4.2 操作数据库防火墙

show  create  table  mall.cms_help;



SHOW   global status like "%firewall%";

2.5 mysql 优化和监控

2.5.1 数据库锁

#  排他锁;

prompt 1;

# 设置锁
SET  innodb_lock_wait_timeout = 3600;

begin;

# 启动事务
start transaction;
# 自动提交
show  variables like "%autocommit%";


select * from mall.cms_help for update;


show processlist;

use  sys;

select  * from sys.innodb_lock_waits;


show  create table sys.innodb_lock_waits;

# 阻塞,KILL 到pid

2.5.2 数据库索引优化

select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100;

explain select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100;

# 创建索引

create index idx_price on pms_product_full_reduction(full_price);

explain select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100;



select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100 and reduce_price >100;

explain select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100 and reduce_price >100;

# 创建复合索引  ,单个字段不要在多个索引中出现,容易出现死锁问题

create index idx_price_2 on pms_product_full_reduction(full_price,reduce_price);

explain select  id,product_id,full_price,reduce_price from mall.pms_product_full_reduction where full_price >100 and reduce_price >100;

# 查询索引
show  index FROM mall.pms_product_full_reduction

# 删除索引
drop index idx_price_3 on mall.pms_product_full_reduction;



show  tables;

# 设计索引一定要考虑组合索引;需要尝试和调试;调试完成后删除多余的索引
create index idx_price_3 on pms_product_full_reduction(full_price,reduce_price);


#  mysql  查询分析器

END;

2.5.3 数据库监控(待补充)

2.5 mysql 备份和恢复

2.5.1 mysqldump 和 mysqlpump

#   secure_file_priv
show  variables  like "%secure%";

# mysqldump
# mysqlpump
# binlog  日志恢复数据库

binlog 恢复(待补充)

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

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

相关文章

使用Opencv库直接进行人脸检测

import cv2abs_path cv2.__file__ xml_path abs_path.rsplit("/",1)[0] "/data/haarcascade_frontalface_default.xml"# 加载人脸检测器 face_cascade cv2.CascadeClassifier(xml_path)# 加载图像 img cv2.imread(/media/datasets/face/liuyigei_duo.…

逆向分析 FSViewer 并写出注册机

逆向分析 FSViewer 并写出注册机 FSViewer是一款老牌的图片管理查看编辑软件, 个人使用免费, 商用收费 本文将逆向分析FSViewer 7.5版本的注册算法并编写注册机 0. 前言 最近在整理之前的资料, 发现了一篇几年前刚学逆向那会儿写的文章, 是跟着看雪一位大牛的文章做的, 但逆向…

三井住友保险中国区信息技术部负责人陈婧,将出席“ISIG-RPA超级自动化产业发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

Linux:预备

计算机结构基础 操作系统: 内核 (管理软硬件) shell(给用户使用操作系统的方式) 操作系统的目标 对硬件抽象 原因:操作系统是对软硬件资源管理的应用软件抽象:内存管理, 进程管理, 文件管理, 驱动管理软件:驱动程序(给软件提供访问硬件的软件)硬件:磁盘(对应文件), 网卡等隔离…

【C++】什么是类与对象?

🦄个人主页:修修修也 🎏所属专栏:C ⚙️操作环境:Visual Studio 2022 面向对象概述 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(四)——前后端数据交互

经过前面几个章节的学习我们掌握了: 1、如何使用Vue快速搭建前端工程化项目,并结合elementUI优化了界面; 基于SpringBootVueElementUIMybatis前后端分离管理系统超详细教程(一) 基于SpringBootVueElementUIMybatis前后…

软件测试入门

文章目录 一、入门1. 软件2. 软件基本组成3. 软件产生过程4. 软件测试5. 软件测试目的🏆 小结 二、测试主流技能1. 功能测试2. 自动化测试3. 接口测试4. 性能测试🏆 小结 三、测试分类1. 按测试阶段划分2. 按代码可见度划分🏆 小结 三、质量模…

信息系统项目管理师003:信息化(1信息化发展—1.1信息与信息化—1.1.3 信息化)

文章目录 1.1.3 信息化1.信息化内涵2.信息化体系3.信息化趋势 要点总结 1.1.3 信息化 信息化是一个过程,与工业化、现代化一样,是一个动态变化的过程。信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力,并使之造福于社会的历史…

通过sqoop把hive数据到mysql,脚本提示成功,mysql对应的表中没有数

1、脚本执行日志显示脚本执行成功,读写数量不为0 2、手动往Mysql对应表中写入数据十几秒后被自动删除了 问题原因: 建表时引擎用错了,如下图所示 正常情况下应该用InnoDB

7-4 哲哲打游戏(Python)

哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切! 为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另…

偶极子和环形天线的辐射机理仿真分析

目录 0 引言 1 偶极子天线的辐射因素分析 1.1 偶极子天线模型设计 1.2 谐振点的出现规律 1.3 天线尺寸对辐射的影响 1.4 天线角度对辐射的影响

浅显易懂:WinForms、WPF和Electron的区别和优缺点

在开发桌面应用的时候,WinForms、WPF和Electron是绕不过去的三个技术栈,本文就详细据介绍了三者的区别和优缺点,帮助老铁们做个抉择。 一、winform wpf Electron 三者区别 WinForms、WPF和Electron是三种不同的框架和技术,用于开…

计算机中丢失缺少mfc100.dll文件该如何解决?

当你打开某个应用程序时,有时候会遇到一个“mfc100.dll丢失”或找不到mfc100.dll的错误信息提示。这种情况表明你的计算机缺少一个名为mfc100.dll的动态链接库文件。这个文件是由Microsoft VC 2010 Redistributable Package提供的,它是一组可重用的组件&…

【校园导航小程序】2.0版本 静态/云开发项目 升级日志

演示视频 【校园导航小程序】2.0版本 静态/云开发项目 演示 首页 重做了首页,界面更加高效和美观 校园指南页 新增了 “校园指南” 功能,可以搜索和浏览校园生活指南 地图页 ①弃用路线规划插件,改用SDK开发包。可以无阻通过审核并发布…

Linux的top命令解析

Top命令是什么 TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系…

qml中toolbox控件、ComboBox控件、PlainText实现及美化

一. 内容简介 qml中toolbox控件、ComboBox控件、PlainText实现及美化 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.4QT 5.14.1 新版QT6.4,,6.5在线安装经常失败,而5.9版本…

相对于 Linux,Windows Server 存在的意义是什么?

相对于 Linux,Windows Server 存在的意义是什么? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Linux 的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给…

写作文的ai的软件有吗?分享4款热门的软件!

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面,包括写作领域。许多AI工具如今能够帮助我们快速、高效地创作文章,无论是新闻稿、广告文案还是博客文章,它们都能提供有力的支持。今天&#…

linux安装todesk

xunilToDesk远程桌面软件-免费安全流畅的远程连接电脑手机ToDesk远程控制软件是一款稳定流畅的远程控制电脑手机连接软件,可远程桌面办公,远程协助运维.采用端对端加密,让每一次远程访问都安全可靠。https://www.todesk.com/linux.htmlToDesk远程控制软件是一款稳定流畅的远程控…

20.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据分析工具数据类型编辑功能的实现

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易道云信息技术研究院VIP课 上一个内容:19.数据分析工具数据类型配置功能的实现 码云地址(master 分支&#…