【MySQL】服务器配置和管理

本文使用的MySQL版本是8.0

MySQL服务器介绍

MySQL服务器通常说的是mysqld程序。

mysqld 是 MySQL 数据库服务器的核心程序,负责处理客户端的请求、管理数据库和执行数据库操作。管理员可以通过配置文件和各种工具来管理和监控 mysqld 服务器的运行

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 7 MySQL Server Administration

 本文将介绍下面三个内容:

服务器启动选项:可以在命令行和配置文件中指定,用于配置服务器的行为和特性。

服务器系统变量:反映了启动选项的当前状态和值,其中一些变量可以在服务器运行时修改。

服务器状态变量:包含了关于运行时操作的计数器和统计信息。

选项

 每次启动mysqld的时候,可以通过命令行或者文件来提供选项,建议使用文件的方式来指定选项,这样就能确保每次运行时都是使用相同的选项。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 7.1.4 Server Option, System Variable, and Status Variable Reference

如果mysqld启动时如果没有用--defaults-file 来指定配置文件,那么就是按照表格由上至下依次查找配置文件。后面的配置文件会把前面的覆盖掉(如果有相同的配置)。

使用文件的方式读取选项时,mysqld是从 [mysqld] 和 [server] 这两个节点中读取选项的。

查看选项

mysqld --verbose --help

使用该命令,会把mysqld的选项和系统变量列出来。一般不使用这个命令,因为它把选项和系统变量都输出了,我们可以在官网查看这些选项。

 常用选项

使用选项

在指定的配置文件中修改或添加即可

系统变量

反映了启动选项的当前状态和值,其中一些变量可以在服务器运行时修改。

可以说,系统变量就是选项的表现,

查看系统变量

查看全部

# 在mysql命令行下
show variables;

或者用mysqladmin程序

mysqladmin variables

查看模糊 

show variables like "%xxx%";

查看指定

查看全局或者会话

show [global | session] variables;

下面将会讲到全局变量或者局部变量 

使用系统变量

  • 设置系统变量的语法与命令选项的语法相同,指定变量名称时,破折号和下划线可以互换使用。例如,--general_log=ON 和 --general-log=ON 是等价的。
  • 当使用选项设置一个数值的变量时,可以带有后缀 K、M 或 G(大小写不限)表示 1024、1024^2 或 1024^3;从MySQL 8.0.14 开始,后缀也可以用 T、P 和 E 来表示 1024^4、1024^5 或 1024^6。

示例:为服务器指定 256 KB 的排序缓冲区大小和 1 GB 的最大数据包大小

在命令行的指定:

mysqld --sort-buffer-size=256K

--max-allowed-packet=1G

在选项文件中指定:

[mysqld]
sort_buffer_size=256k
max_allowed_packet=1g

  • 系统变量有两个作用域,分别是 Global(全局)和 Session(会话),Global 全局变量影响服务器的整体操作,Session 会话变量影响各个客户端连接的操作。给定的系统变量可以同时具有全局值和会话值,它们的关系如下: 

服务器启动时,会将每个全局变量初始化并设置默认值,具体的值可以通过命令行或选项文件更改。
服务器为每个客户端维护一组 Session 变量,在客户端连接时使用相应全局变量的当前值进行初始化。

范围:全局变量影响整个 MySQL 服务器实例,而会话变量只对当前连接有效。
生命周期:全局变量在服务器启动时初始化,持续存在于服务器的整个生命周期,而会话变量在客户端连接期间存在,当连接关闭时消失。
作用对象:全局变量影响所有连接和操作,而会话变量只影响当前连接。
设置方式:全局变量可以在配置文件或启动命令中设置,会话变量可以通过 SET 语句在连接时动态设置。

  • 大部分系统变量是动态的,在服务器运行时可以通过 SET 语句动态更改,并且无需停止和重新启动服务器。在服务器运行时,使用 SET 语句设置系统变量,需要指定作用域(也可以在前面加上 @@ 修饰符),然后指定系统变量的名称,名称必须使用下划线而不是破折号,如下所示: 

设置全局系统变量最大连接数为1000:
mysql> SET GLOBAL max_connections = 1000;
mysql> SET @@GLOBAL.max_connections = 1000;


将全局系统变量持久化到 mysqld-auto.cnf 文件(同时设置运行时值):
mysql> SET PERSIST max_connections = 1000;
mysql> SET @@PERSIST.max_connections = 1000;


将全局系统变量持久化到 mysqld-auto.cnf 文件(不设置运行时值):
mysql> SET PERSIST_ONLY max_connections = 1000;
mysql> SET @@PERSIST_ONLY.max_connections = 1000;


删除持久化的系统变量可以使用语句:

RESET PERSIST IF EXISTS system_var_name;


设置 Session 系统变量,时区为 "+8:00":

mysql> SET SESSION time_zone='+8:00';
mysql> SET @@SESSION.time_zone='+8:00';
mysql> SET @@time_zone='+8:00';

  • 对于数值型的系统变量,用带有后缀的值指定时,只适用于选项方式,而不能用在 SET 方式中;SET 方式可以使用表达式为系统变量指定值,而在选项方式中不允许,如下所示:

选项形式:
root@guangchen-vm:~# mysqld --max_allowed_packet=16M # 允许
root@guangchen-vm:~# mysqld --max_allowed_packet=16*1024*1024 # 不允许
运行时 SET 形式:
mysql> SET GLOBAL max_allowed_packet=16M; # 不允许
mysql> SET GLOBAL max_allowed_packet=16*1024*1024; # 允许

  • 在设置全局变量时需要指定 GLOBAL 关键字的原因是为了防止出现以下问题:

如果要删除的 SESSION 变量与 GLOBAL 变量名相同,那么具有修改全局变量权限的客户端可能会意外地更改 GLOBAL 变量,而不仅仅是只修改 SESSION 变量。
如果已经有一个 SESSION 变量而且与 GLOBAL 变量同名,那么本意是要修改 GLOBAL 变量,可能只是修改了 SESSION 变量的值。
所以没有明确指定 GLOBAL 和 SESSION 时,对于当前客户端来说 SESSION 的优先级更高。

状态变量

MySQL 中的状态变量是用来跟踪服务器状态和性能指标的变量。它们提供了有关 MySQL 服务器运行时状态的信息,可以帮助管理员进行监视、调优和故障排除。状态变量包括了各种性能指标、缓存使用情况、连接和查询统计等信息。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 7.1.10 Server Status Variables

查看状态变量

SHOW [GLOBAL | SESSION] STATUS [like status_name];

与查看系统变量基本一致。

常见状态标识

常见配置

# MySQL 服务节点
[mysqld]# MySQL 服务启动后监听的端口号
port=3306# 数据目录的路径,这里演示的是windows下的配置,注意分隔符用/,如果是\则需要转义为\\.
# 把原data目录整体复制到新路径
# datadir=写具体的实现目录# MySQL 服务器的字符集与排序规则
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci # 新建表时使用的存储引擎,windows下已默认配置
default_storage_engine=INNODB# 时区
default-time-zone='+8:00'# ################# 日志相关 #################
#日志文件
log_output=FILE,TABLE
#开启一般查询日志   
general_log=1     
#指定自定义的文件名   
general_log_file=/var/log/mysql/general.log #开启慢查询日志
slow_query_log=1     
#指定自定义的文件名
slow_query_log_file=/var/log/mysql/slow_query.log #错误日志的路径
log-error=/var/log/mysql/error.log

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

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

相关文章

python 比较 mysql 表结构差异

最近在做项目的时候,需要比对两个数据库的表结构差异,由于表数量比较多,人工比对的话需要大量时间,且不可复用,于是想到用 python 写一个脚本来达到诉求,下次有相同诉求的时候只需改 sql 文件名即可。 com…

GTSAM | gtsam::ISAM2Params

文章目录 概述一、定义介绍二、功能作用三、主要内容四、实例演示解释概述 本届介绍了GTSAM库的gtsam::ISAM2Params类。 一、定义介绍 gtsam::ISAM2Params 是 GTSAM 库中用于配置 ISAM2(Incremental Smoothing and Mapping 2)优化器的参数类。ISAM2 是一种用于大规模非线性优…

计算机数据存储大小端模式总结

计算机数据存储大小端模式总结 一,基本介绍1, 大端模式(Big Endian):(简记:高字节-低地址)2,小端模式(Little Endian):(简…

Vue2后台管理:项目开发全流程(二)

​🌈个人主页:前端青山 🔥系列专栏:vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:Vue2后台管理:项目开发全流程(二) 目录 功能实现 8、会员用户管理 ①使用数据模拟文…

Spring IoC注解

一、回顾反射机制 反射的调用三步:1)获取类。2)获取方法。3)调用方法 调用方法:调用哪个对象,哪个方法,传什么参数,返回什么值。 方法(Do)类: …

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程 使用windeploy与enigma发布独立的QT程序第一步 QT编译输出 **release** 版本第二步 QT 自带 windepoyqt 补全链接库第三步 enigma virtual box压缩打包为单一exe最后【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自…

【无标题】win10 server 服务器,安装mongodb时,遇到无法定位程序输入点BCryptHash , 降低mongodb 版本 4.2.3

安装4.2.3版本MONGODB​​​​​​​​​​a​​​​​​​​​​​​​​​​​​​​ ​​​​​​​https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.3.zip

C++中的结构体——结构体嵌套结构体

作用:结构体中的成员可以是另一个结构体 例如:每一个老师辅导一个学生,每个老师的结构体中,记录一个学生的结构体 示例 运行结果

vue相关的2个综合案例,网页打字练习

for循环的应用 /* 1. 用for循环控制台打印0到100 */ for (var i 0; i < 100; i) {console.log(i) } /* 2. 用for循环控制台打印100到0 */ for (var i 100; i > 0; i--) {console.log(i) }网页打字练习案例练习 <template><div class"main"><…

[天翼杯 2021]esay_eval

[天翼杯 2021]esay_eval <?php class A{public $code "";function __call($method,$args){eval($this->code);}function __wakeup(){$this->code "";} }class B{function __destruct(){echo $this->a->a();} } if(isset($_REQUEST[poc]…

MySQL的索引类型,以及各自的作用

MySQL的索引类型&#xff0c;以及各自的作用 常见的索引类型 主键索引&#xff08;Primary Key Index&#xff09;&#xff1a; 唯一标识表中的记录&#xff0c;确保索引列的值在整个表中是唯一的主键索引通常是唯一索引的一种特例作用&#xff1a;加速查询&#xff0c;并自动…

uniapp 接口请求封装

根目录下创建 config目录 api.js request.js // request.js // 封装一个通用的网络请求函数 适当调整 function httpRequest(options) {const userToken uni.getStorageSync(access_token).token;return new Promise((resolve, reject) > {uni.request({url: ${options.ur…

2-2 基于matlab的变邻域

基于matlab的变邻域&#xff0c;含变惯性权重策略的自适应离散粒子群算法&#xff0c;适应函数是多式联运路径优化距离。有10城市、30城市、75城市三个案例。可直接运行。 2-2 路径规划 自适应离散粒子群算法 - 小红书 (xiaohongshu.com)

新版校园跑腿外卖独立版+APP+小程序前端外卖配送平台源码(含搭建教程)

同城校园跑腿外卖配送平台源码&#xff0c;这套目前全网还没有人分享过&#xff0c;这个是开源的&#xff0c;所以没有任何问题了&#xff0c;这套源码非常吊&#xff0c;支持自定义diy 你可以设计你的页面&#xff0c;设计你自己的风格&#xff0c;支持多校园&#xff0c;独立…

打破时空界限:线上非遗文化馆如何改变非遗文化传播与保存方式?

一、线上非遗文化馆助力传统文化的广泛传播 1、打破时空限制&#xff0c;提升非遗文化的可达性 线上非遗文化馆利用互联网技术将非遗文化展示在虚拟平台上&#xff0c;无论身处何地&#xff0c;用户都可以通过网络访问这些资源。通过3D建模、VR等技术&#xff0c;将传统工艺、表…

计算机毕业三年的我,辞职两次后找不到工作回家,此时是真的羡慕有手艺在手的人

栀子花香&#xff0c;弥漫在空气中&#xff0c;却掩盖不了内心的苦涩。 半年&#xff0c;两份工作&#xff0c;两次裸辞&#xff0c;我&#xff0c;又成了一个身无分文的“废人”。 曾经&#xff0c;我也是人人羡慕的互联网人&#xff0c;月薪6K&#xff0c;过着“955”的“神…

Nginx 版本升级方案

因 nginx发现漏洞、需 Nginx 的版本进行更新&#xff0c;需要用到Nginx服务器提供的平滑升级功能。 一、Nginx安装 Linux服务器 离线安装 nginx_linux 离线安装nginx 依赖包 百度云-CSDN博客 二、查看已安装的 Nginx 版本信息&#xff0c;configure 配置信息 ## nginx 目录 /…

【Mac】精通或死亡Spellz Mastery or Death(角色扮演游戏))游戏介绍

前言 今天给大家介绍一款游戏&#xff0c;《精通或死亡Spellz Mastery or Death for mac》(角色扮演游戏) 。 游戏介绍 《精通或死亡&#xff1a;Spellz Mastery or Death》是一款以魔法为核心的策略角色扮演游戏&#xff08;RPG&#xff09;&#xff0c;玩家在游戏中需要掌…

uniapp 展示地图,并获取当前位置信息(精确位置)

使用uniapp 提供的map标签 <map :keymapIndex class"container" :latitude"latitude" :longitude"longitude" ></map> 页面初始化的时候&#xff0c;获取当前的位置信息 created() {let that thisuni.getLocation({type: gcj02…

【云原生】使用kubekey部署k8s多节点及kubesphere

kubesphere官方部署文档 https://github.com/kubesphere/kubesphere/blob/master/README_zh.md kubuctl命令文档 https://kubernetes.io/zh-cn/docs/reference/kubectl/ k8s资源类型 https://kubernetes.io/zh-cn/docs/reference/kubectl/#%E8%B5%84%E6%BA%90%E7%B1%BB%E5%9E…