文章目录
- 1、配置和默认值
- 2、系统变量和选项
- 1、介绍
- 2、常用选项
- 3、使用系统变量
- 3、常用服务器配置
- 4、查看状态变量
- 5、MySQL数据目录
mysql的服务端就是mysqld,d就是daemon,守护进程的意思。
配置文件中[mysqld]部分时服务器支持的启动选项。服务器的部分系统变量可以被修改,反映启动选项的当前状态;状态变量不可修改,这些变量包含了有关运行时操作的计数器和统计信息。
1、配置和默认值
查看服务器的默认选项和系统变量值
mysqld --verbose --help
下面是连接到MySQL后才能执行的SQL语句。
服务器运行时系统变量的值:
SHOW VARIABLES;
# 具体的某个变量
SHOW VARIABLES like 'tmpdir';
# 或者用通配符也可以查询
SHOW VARIABLES like '%tmp%';
查看服务器在运行时的一些统计和状态指示器
SHOW STATUS;
系统变量和状态信息也可以用 mysqladmin命令来查看,以下两个命令都行。
mysqladmin variables
mysqladmin extended-status
这些也可以查看官方文档
MySQL 8.4
官方文档给的表的表头:
除去name外,依次表示是否支持命令行,是否支持选项文件,是否是系统变量,是否是状态变量,作用域,是否可以动态设置( 即运行时设置 )。
注意:系统变量、状态变量的作用域分为:Global (全局),Session (当前会话或连接),或 两者都支持。全局是指所有客户端都生效,当前会话是指某个客户端生效。
2、系统变量和选项
1、介绍
为确保服务器每次运行时都使用相同的选项,最好的办法是在选项文件指定相应的启动选项。mysqld从选项文件的[mysqld]和[server]部分读取选项。
对于mysqld的启动脚本,官方说明:
服务器的启动选项最详细的说明就是在官方文档
MySQL 8.4
也可以直接用bash命令查看选项和系统变量
mysqld --verbose --help
启动mysql后下面的命令只显示系统变量
SHOW VARIABLES;
2、常用选项
latin1字符集不能保存中文。服务器的默认排序中,0900表示unicode的版本9,ai表示口音敏感,ci表示大小写不敏感,另外的看官方文档。MySQL 8.4
general-log-file通常要指定绝对路径。slow-query-log-file和log-error也是如此。
max-connections可以理解为MySQL服务器支持的最大并发数。
3、使用系统变量
通过系统变量来改变服务器的一些配置。比如缓冲区,最大数据包大小。
设置系统变量时,破折号和下划线可以互换使用,比如–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。
系统变量有两个作用域,全局global和会话session,全局影响服务器的整体操作,会话影响各个客户端连接的操作。全局变量的初始值是默认值或者选项指定的值,会话变量的初始值是全局变量的值或者自己设置的值。
大部分系统变量是动态的,在服务器运行时通过SET来调整,需要指定作用域(也可以在前面加上@@修饰符),然后指定系统变量的名称,名称必须使用下划线而不是破折号。
SET GLOBAL max_connections = 1000;
SET @@GLOBAL.max_connections = 1000;
要指定作用域的原因是因为系统变量的作用域不是一样的,有仅全局有仅会话,也有都包含的。另外系统变量名称也必须写对,否则查不到。
将全局系统变量持久化到mysqld-auto.cnf文件,同时设置运行时值:
SET PERSIST max_connections = 1000;
SET @@PERSIST.max_connections = 1000;
不同时设置:
SET PERSIST_ONLY max_connections = 1000;
SET @@PERSIST_ONLY.max_connections = 1000;
Linux和Unix系统读取的选项文件,从上到下,读取顺序从先到后,优先级从低到高。
最后一行这个文件默认不存在,只能在执行SET PERSIST之后自动生成。
删除持久化的系统变量:
RESET PERSIST IF EXISTS system_var_name;
设置会话的系统变量,时区为"+8:00":
SET SESSION time_zone='+8:00';
SET @@SESSION.time_zone='+8:00';
SET @@time_zone='+8:00';
default-time-zone则是选项文件中配置的,不是系统变量。
后缀KM这些,不能在SET语句中使用。
SQL语句SHOW VARIABLES查看所有系统,再加上like来找到具体的某个变量,也可以用通配符。
一部分系统变量是内置的,也有一些需要通过安装服务器插件或组件才可以使用。比如用于审计插件 audit_log 实现了名为 audit_log_policy 的系统变量;错误日志过滤组件 log_filter_dragnet 实现了名为log_error_filter_rules 的系统变量。
8.4版本可以动态设置的系统变量:MySQL 8.4
3、常用服务器配置
每个部分都要隔几个空行,最后光标停留一个空行上。
[client]
default-character-set=utf8mb4
[mysqld]
# MySQL 服务启动后监听的端口号
port=3306
# MySQL 服务器的字符集与排序规则
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
# 新建表时使用的存储引擎
default_storage_endgine=INNODB
# 时区
default-time-zone='+8:00'
图中剩余的部分是自带的文件路径。
4、查看状态变量
SHOW [GLOBAL | SESSION] STATUS [like status_name];
5、MySQL数据目录
MySQL 服务器的管理信息、业务数据、日志文件、磁盘缓冲文件默认存储在数据目录下,是MySQL工作时主要操作的目录,最重要的目录之一。
管理的信息包含用户名和密码,用户的授权,系统变量默认值,维护的库和表。业务数据包含用户创建的库和表以及表中的数据。
数据目录在/var/lib/mysql目录,通过选项datadir修改。
binlog是二进制日志文件;所有的.pem文件是自动生成的SSL和RSA证书和密钥文件;随后的两个#开头的文件是双写缓冲区文件;ib_buffer_pool缓存了内存池中的数据,ibdata1是表空间相关的文件;接着的两个蓝体字的文件是保存重做日志的日志文件;mysql,performance_schema,sys是系统级别的库;mysql.ibd是系统级别的管理信息;最后两个undo是撤销表空间,保存撤销日志的文件。如果有动态设置的系统变量,还会有一个mysqld-auto.cnf文件来保存系统变量。
结束。