【MySQL技术内幕】3.1-参数文件

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【MySQL技术内幕】3.1-参数文件

当 MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等。在默认情况下, MySQL实例会按照一定的顺序在指定的位置进行读取,用户只需通过以下命令来寻找即可。

mysql --help | grep my.cnf

MySQL数据库参数文件的作用和 Oracle数据库的参数文件极其类似,不同的是,Oracle实例在启动时若找不到参数文件,是不能进行装载(mount)操作的。 MySQL稍微有所不同, MySQL实例可以不需要参数文件,这时所有的参数值取决于编译 MySQL时指定的默认值和源代码中指定参数的默认值。但是,如果 MySQL实例在默认的数据库目录下找不到mysq架构,则启动同样会失败,此时可能在错误日志文件中找到如下内容: image.png

MySQL的mysql架构中记录了访问该实例的权限,当找不到这个架构时, MySQL实例不会成功启动。

MySQL数据库的参数文件是以文本方式进行存储的。用户可以直接通过一些常用的文本编辑软件(如ⅵ和 emacs)进行参数的修改。

1、什么是参数

简单地说,可以把数据库参数看成一个键/值( key/value)对。可以通过命令 SHOW VARIABLES查看数据库中的所有参数,也可以通过LIKE来过滤参数名。

2、参数类型

MySQL数据库中的参数可以分为两类

  • 动态(dynamic)参数
  • 静态(static)参数

动态参数意味着可以在 MySQL实例运行中进行更改,静态参数说明在整个实例生命周期内都不得进行更改,就好像是只读(read only)的。可以通过SET命令对动态的参数值进行修改,SET的语法如下:

SET
[global | session] system_var_name=expr
[@@global. | @@session.  | @@]system_var_name=expr

这里可以看到global和 session关键字,它们表明该参数的修改是基于当前会话还是整个实例的生命周期。有些动态参数只能在会话中进行修改,如 autocommit;而有些参数修改完后,在整个实例生命周期中都会生效,如 binlog_cache_size;而有些参数既可以在会话中又可以在整个实例的生命周期内生效,如 read_buffer_size。举例如下 image.png

上述示例中将当前会话的参数 read_buffer_size从2MB调整为了512KB,而用户可以看到全局的 read_buffer_size的值仍然是2MB,也就是说如果有另一个会话登录到 MySQL实例,它的 read_buffer_size的值是2MB,而不是512KB。这里使用了set global|session来改变动态变量的值。用户同样可以直接使用SET @@global|@@session来更改,如下所示:

image.png

这次把 read_buffer_size全局值更改为1MB,而当前会话的 read_buffer_size的值还是512KB。这里需要注意的是,对变量的全局值进行了修改,在这次的实例生命周期内都有效,但 MySQL实例本身并不会对参数文件中的该值进行修改。也就是说,在下次启动时 MySQL实例还是会读取参数文件。若想在数据库实例下一次启动时该参数还是保留为当前修改的值,那么用户必须去修改参数文件。要想知道 MySQL所有动态变量的可修改范围,可以参考 MySQL官方手册的 Dynamic System Variables的相关内容。

对于静态变量,若对其进行修改,会得到类似如下错误:

mysql>SET GLOBAL datadir='/db/mysql!

ERROR 1238 (HY000): Variable 'datadir' is a read only variable


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
关系型数据库 MySQL Java
|
1月前
|
存储 关系型数据库 MySQL
|
29天前
|
存储 关系型数据库 MySQL
|
1月前
|
存储 关系型数据库 MySQL
关系型数据库mysql日志和临时文件
【6月更文挑战第15天】
39 4
|
1月前
|
存储 关系型数据库 MySQL
关系型数据库mysql文件系统兼容性
【6月更文挑战第14天】
102 3
|
14天前
|
存储 缓存 关系型数据库
Mysql/etc/my.cnf参数详解
以上只是 `/etc/my.cnf`中的部分参数,实际上,`/etc/my.cnf`中的参数非常多,可以根据具体的应用需求进行调整。
11 0
|
28天前
|
存储 关系型数据库 MySQL
技术笔记:MySQL数据库优化详解(收藏)
技术笔记:MySQL数据库优化详解(收藏)
23 0
|
28天前
|
SQL 关系型数据库 MySQL
技术笔记:python连接mysql数据库
技术笔记:python连接mysql数据库
20 0
|
28天前
|
SQL 存储 关系型数据库
技术笔记:MYSQL常用基本SQL语句总结
技术笔记:MYSQL常用基本SQL语句总结
23 0
|
1月前
|
关系型数据库 MySQL
Navicat for mysql 如何查看 (BLOB)文件
Navicat for mysql 如何查看 (BLOB)文件
74 0