MySQL8之前的版本,例如5.7,在修改全局变量时候,并不会影响到配置文件,重启之后就会恢复到默认值。今天看mysql参考手册时发现了新版本对于修改变量的新方法----set persist,可以使全局系统变量变为永久性。
https://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html
以修改最大连接数----max_connections为例。
1.查询现有的连接数;

2.该参数在5.7版本中使用----set global ;
![]()
3.reboot之后就会消失;5.7版本中如果想保持修改,在我的路径中还需要修改----/usr/lib/systemd/system/mysqld.service 文件。在最后加入参数,然后重启服务。
LimitNOFILE=65535
LimitNPROC=65535
systemctl daemon-reload //重载所有修改过的配置文件
systemctl restart mysqld
4.使用新方法----set persist;
set persist max_connections = 200;

set global,set persist更改运行时变量值,但也将变量设置写入mysqld-auto.cnf数据目录中指定的选项文件 。数据库启动时,会首先读取其它配置文件,最后才读取mysqld-auto.cnf文件。所以不建议手动修改该文件,其有可能导致数据库在启动过程中因解析错误而失败。如果出现这种情况,可手动删除mysqld-auto.cnf文件或将persisted_globals_load变量设置为off来避免该文件的加载。auto文件中的Metadata记录了这次修改的用户及时间信息。

![]()
对于已经持久化了变量,可通过reset persist命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的内容,对于已经修改了的变量的值,不会产生任何影响。
MySQL 8.0 setpersist 使用详解
本文详细介绍了MySQL 8.0中setpersist命令的使用方法,该命令允许将全局系统变量设置为永久性,即使重启服务也不会丢失。通过实例展示了如何使用setpersist修改最大连接数,以及与旧版本中setglobal的区别。同时,提醒读者不要手动修改由setpersist生成的mysqld-auto.cnf文件,避免可能的数据库启动失败。
583

被折叠的 条评论
为什么被折叠?



