【MySQL】服务器管理与配置

news2024/10/3 18:40:01

MySQL服务器

服务器默认配置

查看服务器默认选项和系统变量

 mysqld --verbose --help

查看运行时的系统变量,可以通过like去指定自己要查询的内容

状态变量的查看 

系统变量和状态变量的作用域

  • 全局作用域: 对于每个会话都会生效
  • 当前会话:只在当前会话连接中生效

系统变量与选项

数据库服务器启动后配置参数以及区分选项和系统变量

  • MySQL启动数据库服务器:两种方式,一种直接通过命令行的方式启动,另一种是通过配置文件中指定参数(my.cnf / my.ini);推荐使用配置文件启动
  • 选项文件读取:在配置文件中,通过识别[ mysqld ] [ server ] 组来读取启动参数,也就是在配置文件中通过这两部分启动指定启动时的选项
  • 系统变量与选项区别
    • 系统变量是MySQL服务器运行的时候可以修改的参数,可以通过show variables 查看当前系统变量,然后通过set 去设置
    • 选型则是启动时候的指定参数,一旦MySQL启动后就无法修改,show variables 中不会显示这些选项

自我理解选项和系统变量

选项就是启动服务器后的配置,比如设置最大连接数端口号等,类似于启动汽车后,打开空调然后设置导航,启动的时候生效,但是过程中是无法更改的。

系统变量则像温度调节以及座椅调节,在运行过程中可以随时调整。

选项只可以启动的时候设置,而系统变量可以在MySQL运行期间动态调整。

常用选项分析

字符集相关

  • --character-set-server(系统变量:character_set_server):指定服务器的默认字符集,通常设置为utf8mb4来支持更多的字符
  • --collation-server:指定服务器的默认排序规则,通常是与utf8mb4结合使用,一般是utf8b4_0900_ai_ci

基础设置

  • --port:MySQL服务端监听端口号
  • --datadir:指定MySQL数据的存储目录
  • --default-storage-engine:设置默认的表存储索引引擎,一般是InnoDB

日志相关选项

  • --log-output:执行文件输出位置
  • --general-log:启动或者禁用一般查询日志,0关闭1开启
  • general-log-file:指定一般查询日志文件的名称
  • --slow-query-log-file:指定慢查询的文件名称

连接与缓存选项

  • --max-connections:设置允许客户端同时连接的最大数量。
  • --table-open-cache:设置同时可以打开表的最大数量。
  • --innodb-buffer-pool-size:指定 InnoDB 的缓冲池大小,用于缓存表和索引数据,默认 128MB。
  • --innodb-log-buffer-size:指定 InnoDB 的磁盘写入日志之前的缓冲区大小。

f服务器与性能调优

  • --server-id):用于指定 MySQL 服务器的唯一标识符,通常在主从复制时使用。
  • --flush-time:指定将所有表同步到磁盘的时间间隔,单位为秒。
  • --join-buffer-size:指定用于表关联操作的缓冲区大小,默认 256KB。
  • --sort-buffer-size:为排序操作分配的会话内存缓冲区大小。
  • --open-files-limit:设置操作系统可用的文件描述符数量,控制 MySQL 可同时打开的文件数量。

二进制日志和复制选项

  • --log-error:指定 MySQL 错误日志文件的位置,记录错误和警告信息。
  • --log-bin:指定用于二进制日志文件的基本名称,主要用于主从复制。
  • --binlog-row-event-max-size:设置二进制日志中一行记录的最大事件大小

系统变量的使用

MySQL系统配置变量主要有两种方式,一种是命令行,也就是在启动MySQL的时候通过命令行直接指定其参数;另外一种是配置文件的方式,也就是通过编辑MySQL配置文件来设置系统变量。

数值后缀使用

为某些系统变量设置数值的时候,可以使用带有后缀的数值单位,这些后缀可以表示不同的字节数,基本上是遵循其内存的数值大小设定

  • K/k:1024字节
  • M/m:1024^2字节

配置使用

命令行方式,设置排序缓冲区的大小为256KB,设定允许最大的数据包大小为1GB

mysqld --sort-buffer-size=256K --max-allowed-packet=1G

配置文件方式,配置含义如上

[mysqld]
sort_buffer_size=256k
max_allowed_packet=1g

动态修改系统变量

SET GLOBAL sort_buffer_size = 256000;  -- 全局修改
SET SESSION sort_buffer_size = 256000; -- 当前会话修改

系统变量的两个作用域(session 和 global) 

Global全局作用域

全局作用域于整个MySQL服务器的配置参数,其影响服务器的整体操作,也就是当修改一个全局变量的时候,改变就会立即生效,同时会影响所有的客户端连接和服务器行为。

  • 服务器启动时设置:通过命令行或者配置文件的方式进行设定,作为默认值,所有的全局变量都会初始化成默认值
  • 运行的时候修改:如下通过SQL语句动态修改
SET GLOBAL max_connections = 500;

Session会话变量

简单来说就是针对于该客户端设置的一个变量内容个,客户端在连接生命周期中,可以根据需要动态的修改会话的值,不会影响其他客户端的操作。 

SET SESSION sort_buffer_size = 256000;

使用set语句来设置系统变量

需要注意修改系统变量的范围在哪里

两种方式设置最大连接数

全局系统变量持久化到mysqld-auto.cnf文件中

mysqld_auto.cnf文件本身是不存在的,只有在SET PRESIST语句执行的时候,该文件才会存在

 文件存在验证

删除该文件

 设置session系统变量(更改时区)

 注意上述只是对当前操作生效,因为作用域是session,下面验证

数值性系统变量设置原则

  • 命令行选项方式:支持直接设置数值,允许带单位,不支持表达式
  • SET方式:运行时设置,允许表达式计算具体的数值,但是不可以带单位
# 启动 MySQL 服务时,使用命令行选项的方式
mysqld --max_allowed_packet=16M  # 允许,带单位

# 如果尝试使用表达式,则不允许
mysqld --max_allowed_packet=16*1024*1024  # 不允许,表达式形式


-- 尝试在 MySQL 运行时直接使用带单位的数值会报错
SET GLOBAL max_allowed_packet = 16M;  -- 不允许,带单位的数值形式

-- 正确的用法是使用表达式计算具体数值
SET GLOBAL max_allowed_packet = 16*1024*1024;  -- 允许,表达式形式

查看seesion和global作用域的变量

 部分系统变量只有安装了插件或者组件才可以使用

服务器常用配置

例如设置MySQL中的my.cnf文件

[mysqld]
# 基本设置
user = mysql                     # 指定 MySQL 服务的运行用户
port = 3306                      # MySQL 服务运行端口
datadir = /var/lib/mysql          # 数据库文件存储目录
socket = /var/lib/mysql/mysql.sock # 进程 socket 文件路径
log-error = /var/log/mysql/error.log  # 错误日志文件路径
pid-file = /var/run/mysqld/mysqld.pid # 进程 ID 文件路径

# 连接限制
max_connections = 500             # 最大连接数,适用于高并发应用
max_allowed_packet = 64M          # 允许的最大数据包大小,防止大型查询失败
connect_timeout = 10              # 客户端连接超时时间,单位为秒

# 内存和缓存优化
innodb_buffer_pool_size = 1G      # InnoDB 缓冲池大小,通常设置为服务器物理内存的 70-80%
innodb_log_file_size = 256M       # InnoDB 日志文件大小,有助于提高写入性能
innodb_log_buffer_size = 16M      # InnoDB 日志缓冲区大小
sort_buffer_size = 4M             # 排序缓存大小,影响复杂排序的效率
read_buffer_size = 2M             # 读取缓存区大小,影响全表扫描的效率

# 查询缓存
query_cache_size = 64M            # 查询缓存大小
query_cache_type = 1              # 启用查询缓存

# 日志设置
slow_query_log = 1                # 启用慢查询日志
slow_query_log_file = /var/log/mysql/slow.log  # 慢查询日志文件
long_query_time = 2               # 记录执行超过 2 秒的查询

# 临时文件存放路径,提升性能
tmpdir = /tmp

# 字符集和排序规则
character-set-server = utf8mb4    # 设置服务器的默认字符集为 utf8mb4
collation-server = utf8mb4_unicode_ci  # 设置默认的排序规则

# 安全性设置
skip-symbolic-links               # 禁用符号链接,提升安全性

 查看状态变量

基本语法使用

直接通过SHOW[GLOBAL | SESSION] STATUS命令

SHOW GLOBAL STATUS;
SHOW SESSION STATUS;

使用LIKE子句筛选出特定的状态变量

SHOW GLOBAL STATUS LIKE 'Aborted%';

借助状态变量进行优化MySQL性能

  • 优化连接管理
    • 可以通过监控Aborted_connects和Aborted_clients(已终止的客户端连接),可以发现连接问题,如连接过多或者连接的频繁
    • 如果Threads_created很高,那么就说明系统在频繁的创建爱和销毁线程,有可能会导致线程缓存不足,此时可以通过调整thread_cache_size来减少线程的创建和销毁,从而提高连接效率
  • 监控服务器传输量
    • 通过Bytes_received和Bytes_sent来查看服务器的网络传输量,如果数据传输量异常增大的话,就需要对查询进行优化
  • 监控临时表的使用
    • Created_tmp_tables和Created_tmp_disk_tables来监控服务器是否频繁创建临时表,过多的磁盘临时表创建也就以意味着查询语句不够优化

 

MySQL数据目录

基本认识

概念和存储位置

MySQL的数据目录就是一个文件系统的路径,MySQL中的所有数据都存储在这个文件中

 

数据库目录和文件 

 数据库目录重要文件夹分析

系统数据库:包含用户、权限等相关系统信息

 MySQL性能监控数据库:主要提供关于数据库性能的数据

 

常见文件类型

  •  .frm文件:表结构文件,其中存储的是表的元数据(例如列定义、索引等)
  • .ibd文件(InnoDb表):这个就是InnoDb存储引擎独有的表空间文件,其中包含表的数据和索引
  • .MYD文件:MyISAM表存储引擎的数据文件,存储表中的实际数据
  • .MYI文件:MyISAM表存储引擎索引文件,存储表的索引信息

全局系统文件

  • ibdata1:InnoDB的共享表空间文件,其中存储了InnoDB存储引擎的元数据、事务日志等,对于使用共享表空间的配置,InnoDB表的数据和索引也会存储在这个文件中
  • ib_logfile0:这个是InnoDB的重做日志文件,主要用于事务恢复,这些日志文件存储了事务处理时更改的信息,用于的崩溃恢复,大小和数量可以通过配置文件调整

配置文件和运行文件

  • my.cnf / my.ini:MySQL的主配置文件,里面存放着MySQL服务器的配置信息
  • auto.cnf:服务器的唯一标识文件,主要就是用于生成MySQL实例的UUID

备份和数据文件目录

可以直接备份MySQL的数据目录来备份数据库

cp -r /var/lib/mysql /backup/mysql_backup

 工具

  •  mysqldump:生成SQL文件,适合小数据库进行备份
  • XtraBackup:适合大数据库备份

具体使用再拓展

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

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

相关文章

通信工程学习:什么是SNMP简单网络管理协议

SNMP:简单网络管理协议 SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于在计算机网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。它属于OSI模型的应用层&#…

TIM的PWM模式

定时器的工作流程: 定时器对时钟传来的脉冲次数计数,并且在次数到达范围值时触发中断。如向下计数模式时为0,向上计数为达到自动重装载计时器的值时触发中断。 STM32里面的定时器有多个定时器。 如TIM1、TIM2、TIM3 定时器的输入捕获模式来测量输…

我为什么决定关闭ChatGPT的记忆功能?

你好,我是三桥君 几个月前,ChatGPT宣布即将推出一项名为“记忆功能”的新特性,英文名叫memory。 这个功能听起来相当吸引人,宣传口号是让GPT更加了解用户,仿佛是要为我们每个人量身打造一个专属的AI助手。 在记忆功…

【笔记】平面

一、平面及其方程(3个条件,4种表达) F ( x , y , z ) F(x,y,z) F(x,y,z)为平面方程: 在这个平面上的点满足 F ( x , y , z ) 0 F(x,y,z)0 F(x,y,z)0不在这个平面上的点不满足 F ( x , y , z ) 0 F(x,y,z)0 F(x,y,z)0 归根结底&…

Python 课程23-LibROSA

前言 LibROSA 是一个用于音频分析的 Python 库,特别擅长音乐信号处理和音频特征提取。它提供了广泛的工具来处理音频文件,包括加载、变换、特征提取、可视化等功能。LibROSA 在音乐信息检索(MIR)、机器学习中的音频预处理和音频信…

java发送邮件email实战

1.首先在项目中增加依赖&#xff0c;在pom文件中添加如下坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>2.发邮件工具类如下 package com.example.demo.…

安卓13默认使用大鼠标 与配置分析 andriod13默认使用大鼠标 与配置分析

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 android13里面的鼠标貌似比以前版本的鼠标小了,有些客户想要把这个鼠标改大。这个功能,android有现成的,就在这里,设置 =》无障碍 =》色彩和动画 =》 大号鼠标指针。 我们通过…

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求&#xff08;HttpServletRequest&#xff09;&#xff1a;获取请求数据 响应&#xff08;HttpServletResponse&#xff09;&#xff1a;设置响应数据 BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程…

【解决方案】关于 UART 接收数据时丢失数据的解决办法——环形缓冲存储区

文章目录 UART 通信丢失数据的常见原因总结串口&#xff08;UART&#xff09;数据丢失 Bug 的复现引入环形队列解决数据丢失问题总结 在嵌入式系统和物联网&#xff08;IoT&#xff09;设备中&#xff0c;串行通信是一种非常普遍且重要的数据传输方式。无论是通过 UART、RS-232…

【Godot4.3】基于中心点连线的矩形重叠检测

概述 这个方法是我自己想到的&#xff0c;经典的矩形重叠&#xff08;碰撞&#xff09;检测&#xff0c;是一段很复杂的逻辑判断&#xff0c;而根据两个矩形中点连线&#xff0c;与两个矩形宽度和高度之和一半的比较&#xff0c;就可以判断两个矩形是否重叠&#xff0c;并且能…

SQL进阶技巧:统计各时段观看直播的人数

目录 0 需求描述 1 数据准备 2 问题分析 3 小结 如果觉得本文对你有帮助&#xff0c;那么不妨也可以选择去看看我的博客专栏 &#xff0c;部分内容如下&#xff1a; 数字化建设通关指南 专栏 原价99&#xff0c;现在活动价39.9&#xff0c;十一国庆后将上升至59.9&#…

TransFormer 视频笔记

TransFormer BasicsAttention单头注意力 single head attentionQ&#xff1a; query 查寻矩阵 128*12288K key matrix 128*12288SoftMax 归一 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/19e3cf1ea28442eca60d5fc1303921f4.png)Value matrix 12288*12288 MLP Bas…

边缘概率 | 条件概率

关于什么是边缘概率分布和条件概率分布&#xff0c;在理论上&#xff0c;我自己也还没有理解&#xff0c;那么现在就根据我学习到的理解方式来记录一下&#xff0c;有错误指出&#xff0c;请大家指正&#xff01;&#xff01;&#xff01; 例如&#xff0c;一个箱子里有十个乒乓…

YOLO11改进|上采样篇|引入CARAFE上采样模块

目录 一、CARAFE上采样模块1.1CARAFE上采样模块介绍1.2CARAFE核心代码 五、添加MLCA注意力机制5.1STEP15.2STEP25.3STEP35.4STEP4 六、yaml文件与运行6.1yaml文件6.2运行成功截图 一、CARAFE上采样模块 1.1CARAFE上采样模块介绍 CARAFE 的主要思想&#xff1a; 将特征图的上采…

C# (.net6)实现Redis发布和订阅简单案例

概念&#xff1a; 在 .NET 6 中使用 Redis 的/订发布阅模式。发布/订阅&#xff08;Pub/Sub&#xff09;是 Redis 支持的一种消息传递模式&#xff0c;其中一个或多个发布者向一个或多个订阅者发送消息,Redis 客户端可以订阅任意数量的频道。 多个客户端可以订阅一个相同的频道…

【Java】—— 集合框架:Collection接口中的方法与迭代器(Iterator)

目录 1. 集合框架概述 1.1 生活中的容器 1.2 数组的特点与弊端 1.3 Java集合框架体系 1.4 集合的使用场景 2. Collection接口及方法 2.1 添加 2.2 判断 2.3 删除 2.4 其它 3. Iterator(迭代器)接口 3.1 Iterator接口 3.2 迭代器的执行原理 3.3 foreach循环 1. 集…

【rust/egui/android】在android中使用egui库

文章目录 说在前面AndroidStudio安装编译安装运行问题 说在前面 操作系统&#xff1a;windows11java版本&#xff1a;23android sdk版本&#xff1a;35android ndk版本&#xff1a;22rust版本&#xff1a; AndroidStudio安装 安装AndroidStudio是为了安装sdk、ndk&#xff0c;…

【Matlab绘图】从Excel导入表格并进行三维绘图

前言 今天手头上拿到一份论文的xlsx数据&#xff0c;要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示&#xff0c;数据是一个30行25列的数据&#xff0c;数据的内容是论文某项模型模拟的结果&#xff0c;我们希望把横坐标x取…

【ADC】ADC 系统失调和增益误差的校准方法

概述 本文学习于TI 高精度实验室课程&#xff0c;讨论如何计算增益和偏移误差并通过校准消除。首先对数据转换器系统进行偏移和增益误差计算&#xff0c;然后讨论几种校准此误差的方法。最后介绍一些难以校准的误差源。 文章目录 概述一、误差校准原理与方法二、实际应用问题举…

Linux进程概念二

我们利用fork函数来辅助我们讲解进程 首先认识两个调用进程地址的函数&#xff1a;getpid(),和getppid()&#xff0c;他们分别可以调用自己的pid和父进程的pid fork()可以在代码层面来创建子进程&#xff0c;一般而言&#xff0c;父进程fork出来的子进程与父进程代码和数据相…