【MySQL】服务器管理与配置

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.rhkb.cn/news/439228.html

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

相关文章

初识算法 · 滑动窗口(1)

目录 前言: 长度最小的子数组 题目解析 算法原理 算法编写 无重复长度的最小字符串 题目解析 算法原理 算法编写 前言: 本文开始,介绍的是滑动窗口算法类型的题目,滑动窗口本质上其实也是双指针,但是呢&#…

异常处理【C++提升】(基本思想,重要概念,异常处理的函数机制、异常机制,栈解旋......你想要的全都有)

更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: C系列语法知识_Stark、的博客-CSDN博客 座右铭:梦想是一盏明灯,照亮我们前行的路,无论风雨多大,我们都要坚持不懈。 异…

828华为云征文|华为云Flexus云服务器X实例搭建部署H5美妆护肤分销商城、前端uniapp

准备国庆之际,客户要搭个 H5 商城系统,这系统好不容易开发好啦,就差选个合适的服务器上线。那可真是挑花了眼,不知道哪款性价比高呀!就像在琳琅满目的选择前。最终慧眼识珠,选择了华为云 Flexus X。至于为什…

redis高级篇 抢红包案例的设计以及分布式锁

一 抢红包案例 1.1 抢红包 二倍均值算法: M为剩余金额;N为剩余人数,公式如下: 每次抢到金额随机区间(0,(M/N)*2) 这个公式,保证了每次获取的金额平均值…

TX-LCN框架 分布式事务

一、三种事务模式 1)LCN 基于XA协议,事务提交或回滚的操作由事务管理服务器统一告诉它管理的多个项目,也就是说在A事务,B事务的事务提交操作或回滚操作都是在同一时刻发生,并且要么都提交,要么都回滚。 LCN…

低代码可视化-UniApp二维码可视化-代码生成器

市面上提供了各种各样的二维码组件,做了一简单的uniapp二维码组件,二维码实现依赖davidshimjs/qrcodejs。 组件特点 跨浏览器支持:利用Canvas元素实现二维码的跨浏览器兼容性,兼容微信小程序、h5、app。 无依赖性:QR…

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表

一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 :“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令命令解释SHOW DATABASES;展示所有的数据库CREATE DATABASE 数据库名称; 创…

震动传感器介绍及实战

目录 前言 震动传感器 1.震动传感器配图 2.震动传感器原理图 3.震动传感器使用 1-震动传感器的意义 2-震动传感器的应用场景 3- SW-18010P震动传感器使用方法 震动传感器控制灯 操作 增加延时 使用SPC-ISP生成演示函数 总结 前言 我们上节已经简单了解了LED的使用…

【机器学习】音乐生成——AI如何创作个性化音乐与配乐

我的主页:2的n次方_ 音乐是人类文化的重要组成部分,它具有极强的情感表达和艺术价值。近年来,随着人工智能技术的飞速发展,AI已经能够自动生成音乐,甚至根据用户需求创作个性化配乐。AI生成音乐的应用场景广泛&…

redis中的数据类型(Set与ZSet)

(一)set set在我们目前有两个意思,首先就是这里使用的集合,第二个是我们的set和get方法 因为set是一个集合,所以他具有集合的一些特点: 1.集合中的元素无序 2.集合中的元素是不可重复的 3.集合间是可…

5G NR物理信号

文章目录 NR 物理信号与LTE的区别上行参考信号DMRS (UL)SRSPT-RS(UL) 下行参考信号DMRS(DL)PT-RS(DL)CSI-RSPSSSSS NR 物理信号与LTE的区别 用SSS、CSI-RS和DMRS 取代了CRS信号。下行业务信道采用TM1波束赋形传输模式。基于SSB 或者CSI-RS进行RSRP和SINR测量。基于DMRS 进行共…

【Mybatis篇】Mybatis的关联映射详细代码带练 (多对多查询、Mybatis缓存机制)

🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎯一.关联映射概述 &#x1f6a…

2024.9.29 问卷数据分析

最近拿到了一份受众回访的问卷数据,排到的任务是对它进行数据探索。 其实对于问卷数据的处理我只在参加正大杯那次做过(正大杯拿了校三),可见这个处理水平还有待提高(当然是各种原因促成的结果)&#xff0…

17 链表——21. 合并两个有序链表 ★

17 链表 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] 算法设计: 合并两个有序链表,并保持有序性,可以采用迭代法和递归法两种…

卸载WSL(Ubuntu),卸载linux

禁用 WSL 功能 打开 Windows 功能: 按下 Windows R 打开运行对话框,输入 optionalfeatures,然后按回车。 禁用 WSL: 在弹出的 Windows 功能窗口中,找到 适用于 Linux 的 Windows 子系统(Windows Subsystem…

Windows环境 源码编译 FFmpeg

记录一下windows环境纯代码编译ffmeg的过程! 目录 一、安装MSYS2 1.下载安装 2.配置 3.修改源 4.测试与更新 二、安装其他必要工具 1.安装MinGW-w64 2.安装git 3..安装make等工具 4.编译前的其他准备工作 ①.重命名link.exe ②.下载和安装YASM ③.安装…

Docker 从安装到实战

Docker 是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它利用操作系统级别的虚拟化,将应用程序及其依赖项封装在称为容器的轻量级、可移植的单元中。以下是 Docker 的一些关键特点: 容器化:Docker 容器可以在任何支持 …

用CSS创造三角形案例

6.3.2 用CSS创造三角形 用div来创建,角上是平分的,所以要是内部宽高为0,其他边透明,正好是三角形。 代码 div {border: 12px solid;width: 0;height: 0;border-color: transparent red transparent transparent; } 与伪元素aft…

vscode+stfp插件,实现远程自动同步文件代码

概述 远程同步代码,将本地代码实时保存到同一局域网内的另一台电脑(linux系统),这里的本地代码也可以是远程服务上的代码,即从一个远程ip同步到另一台远程ip服务器。 工具 vscode,SFTP插件 安装 vscod…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…