目录

5.1 参数文件

当MySQL实例启动时,MySQL会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等设置。

MySQL参数文件的作用和Oracle的参数文件极其类似。不同的是,Oracle实例启动时若找不到参数文件,是不能进行装载(mount)操作的。MySQL稍微有所不同,MySQL实例可以不需要参数文件,这时所有的参数值取决于编译MySQL时指定的默认值和源代码中指定参数的默认值。

5.1.1 参数文件的位置

默认情况下,MySQL实例会按照一定的次序去取,Linux环境中你只需通过命令mysql --help|grep my.cnf来寻找即可。

[root@jeames ~]# mysql --help | grep 'my.cnf'

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

5.1.2 参数文件类别

MySQL的参数根据是否可以在数据库运行时修改分为2类:

1.动态参数(dynamic)

2.静态参数(static)

动态参数表示可以在MySQL运行时修改参数值,并且立即生效;

静态参数则表示在MySQL实例运行期间不能修改只能只读,若要修改生效需要先修改配置文件再重启MySQL实例,若静态参数修改则会报错。

5.1.3 参数持久化

MySQL的动态参数可以在运行时通过SET GLOBAL命令来更改,但是这种更改只会临时生效,到下次启动时数据库又会从配置文件中读取。在MySQL8.0之前参数文件的动态修改不能写到配置文件,为了改善这一问题,MySQL8.0支持了动态修改参数并将其保存到一个新的参数文件文件中mysqld-auto.cnf,默认保存在$datadir目录下,在所有的参数之后启动,需要的权限为SYSTEM_VARIABLES_ADMIN or SUPER。

mysql> set persist max_connections=300;

可以使用数据字典查询

mysql> SELECT * FROM performance_schema.persisted_variables;