Mysql8的优化(DBA)

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.confset 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/data1mysqld  --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和ipshow  VARIABLES like  "%have_ssl%";# --ssl-modle = disable 加这个参数可以不使用sslshow  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.mzph.cn/news/736989.shtml

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

相关文章

Android中显式Intent和隐式Intent的区别

1、intent的中文名 称是意图,Intent是各个组件之间信息沟通的桥梁, 既能在Activity之间沟通,又能在Activity与Service之间沟通,也能在Activity与Broadcast之间沟通 **intent组成元素的列表说明**2、显式Intent,直接指定…

编译支持国密的抓包工具 WireShark

目录 前言WireShark支持国密的 WireShark小结前言 在上一篇文章支持国密的 Web 服务器中,我们搭建了支持国密的 Web 服务器,但是,我们使用 360 安全浏览器去访问,却出现了错误: 是我们的 Web 服务器没有配置好?在这里插入图片描述还是 360 安全浏览器不支持国密?还是两…

C++面试宝典一部分

今天整理书籍资料时,发现多年前打印的面试资料,拍照分享给大家。

基于网络爬虫的购物平台价格监测系统的设计与实现

通过对网络爬虫的购物平台价格监测系统的业务流程进行梳理可知,网络爬虫的购物平台价格监测系统主要由前台买家模块、后台卖家模块以及管理员模块构成。前台功能包含登录功能、注册功能、系统首页功能、唯品会商品详情浏览、唯品会商品收藏、唯品会商品点赞、唯品会…

【Python】科研代码学习:八 FineTune PretrainedModel (用 trainer,用 script);LLM文本生成

【Python】科研代码学习:八 FineTune PretrainedModel [用 trainer,用 script] LLM文本生成 自己整理的 HF 库的核心关系图用 trainer 来微调一个预训练模型用 script 来做训练任务使用 LLM 做生成任务可能犯的错误,以及解决措施 自己整理的 …

ZYNQ实验--PDM波形生成

一、PDM简介 将信号的振幅变化按比例地变换成脉冲宽度的变化,得到脉冲宽度调制(PDM)。详细的原理理论可以参考该文:文献阅读–Pulse-Width Modulation,本文主要介绍PDM的FPGA实现,PDM的生成方式很多具体形式根据需求会有所不同 二…

【Stable Diffusion】入门:原理简介+应用安装(Windows)+生成步骤

【Stable Diffusion】入门:原理简介应用安装(Windows)生成步骤 原理简介应用安装 原理简介 稳定扩散生成模型(Stable Diffusion)是一种潜在的文本到图像扩散模型,能够在给定任何文本输入的情况下生成照片般逼真的图像。 应用安…

中国广电的独特优势:与三大运营商相比的亮点

2023年,中国广电正式上市了,发出了第一批号段192的号码,然而值得大家了解的是:在中国的通信市场中,中国移动、中国联通和中国电信长期以来占据主导地位。然而,随着中国广电的加入,市场格局正在发…

了解转义字符

了解转义字符 也许在前面的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义字符顾名思义:转变原来的意思的字符。 比如:我们有字符 n ,在字符串中打印的时候自然能打印出这个字符,如下…

鸿蒙操作系统 HarmonyOS 3.2 API 9 Stage模型通过ArkTS接入高德地图

用鸿蒙ArkTS语言开发地图APP应用时&#xff0c;很多地图厂商只接入了鸿蒙Java&#xff0c;ArkTS版本陆续接入中&#xff0c;等一段时间才能面世&#xff0c;当前使用地图只能通过鸿蒙的Web组件&#xff0c;将HTML页面嵌入到鸿蒙APP中。具体方法如下&#xff1a;编写HTML <!…

C++容器适配器stack、queue、priority_queue

文章目录 C容器适配器stack、queue、priority_queue1、stack1.1、stack的介绍1.2、stack的使用1.3、stack的模拟实现 2、queue2.1、queue的介绍2.2、queue的使用2.3、queue的模拟实现 3、priority_queue3.1、priority_queue的介绍3.2、priority_queue的使用3.3、仿函数3.4、pri…

IAR全面支持小华全系芯片,强化工控及汽车MCU生态圈

IAR Embedded Workbench for Arm已全面支持小华半导体系列芯片&#xff0c;加速高端工控MCU和车用MCU应用的安全开发 嵌入式开发软件和服务的全球领导者IAR与小华半导体有限公司&#xff08;以下简称“小华半导体”&#xff09;联合宣布&#xff0c;IAR Embedded Workbench fo…

C语言——递归题

对于递归问题&#xff0c;我们一定要想清楚递归的结束条件&#xff0c;每个递归的结束条件&#xff0c;就是思考这个问题的起始点。 题目1&#xff1a; 思路&#xff1a;当k1时&#xff0c;任何数的1次方都是原数&#xff0c;此时返回n&#xff0c;这就是递归的结束条件&#…

基于FPGA加速的bird-oid object算法实现

导语 今天继续康奈尔大学FPGA 课程ECE 5760的典型案例分享——基于FPGA加速的bird-oid object算法实现。 &#xff08;更多其他案例请参考网站&#xff1a; Final Projects ECE 5760&#xff09; 1. 项目概述 项目网址 ECE 5760 Final Project 模型说明 Bird-oid object …

企业计算机服务器中了mkp勒索病毒如何解密,mkp勒索病毒解密流程

网络技术的应用与发展&#xff0c;为企业的生产运营提高了效率&#xff0c;越来越多的企业利用网络开展多项工作业务&#xff0c;利用网络的优势&#xff0c;可以为企业更好的服务&#xff0c;但是稍不注意就会被网络威胁所盯上。近日&#xff0c;云天数据恢复中心接到多家企业…

CAP告诉你系统没法做到完美,只能做到权衡和适当

一、CAP介绍 CAP原理&#xff0c;全称为Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;和Partition tolerance&#xff08;分区容错性&#xff09;&#xff0c;是分布式系统设计中的基本原理。它强调了在设计分布式系统时&#xff0c…

面试题:分布式锁用了 Redis 的什么数据结构

在使用 Redis 实现分布式锁时&#xff0c;通常使用 Redis 的字符串&#xff08;String&#xff09;。Redis 的字符串是最基本的数据类型&#xff0c;一个键对应一个值&#xff0c;它能够存储任何形式的字符串&#xff0c;包括二进制数据。字符串类型的值最多可以是 512MB。 Re…

二次供水无人值守解决方案

二次供水无人值守解决方案 二次供水系统存在一定的管理难题和技术瓶颈&#xff0c;如设备老化、维护不及时导致的水质安全隐患&#xff0c;以及如何实现高效运行和智能化管理等问题。在一些地区&#xff0c;特别是老旧小区或农村地区&#xff0c;二次供水设施建设和改造滞后&a…

grpc的metadata机制

引言 gRPC让我们可以像本地调用一样实现远程调用&#xff0c;对于每一次的RPC调用中&#xff0c;都可能会有一些有用的数据&#xff0c;而这些数据就可以通过metadata来传递。metadata是以key-value的形式存储数据的&#xff0c;其中key是 string类型&#xff0c;而value是[]s…

mysql日常优化的总结

文章目录 一、数据表结构相关优化建字段类型注意事项1. int类型的选择2.varchar、char、text类型3.date、datetime、timestamp类型 表规划1. 垂直分表2. 水平分表 二、查询语句优化1.对于字段多的表&#xff0c;避免使用SELECT *2.避免使用!操作符3.避免使用null做条件4.like查…