MySQL8新特性:持久化全局變量的修改方法
前言
在8之前的版本中,對(duì)于全局變量的修改,其只會(huì)影響其內(nèi)存值,而不會(huì)持久化到配置文件中。數(shù)據(jù)庫(kù)重啟,又會(huì)恢復(fù)成修改前的值。從8開(kāi)始,可通過(guò)SET PERSIST命令將全局變量的修改持久化到配置文件中。
試舉一例
mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 151 | | mysqlx_max_connections | 100 | +------------------------+-------+ rows in set (0.00 sec) mysql> set persist max_connections=200; Query OK, 0 rows affected (0.00 sec) mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 200 | | mysqlx_max_connections | 100 | +------------------------+-------+ rows in set (0.00 sec)
全局變量的修改會(huì)保存在兩處,
1. 數(shù)據(jù)目錄下mysqld-auto.cnf文件,
注意,不是啟動(dòng)時(shí)--defaults-file指定的配置文件。
[root@slowtech ~]# cat /var/lib/mysql/mysqld-auto.cnf { "Version" : 1 , "mysql_server" : { "max_connections" : { "Value" : "200" , "Metadata" : { "Timestamp" : 1525509217566258 , "User" : "root" , "Host" : "localhost" } } } }
持久化信息以json格式保存,其中,Metadata記錄了這次修改的用戶及時(shí)間信息。
在數(shù)據(jù)庫(kù)啟動(dòng)時(shí),會(huì)首先讀取其它配置文件,最后才讀取mysqld-auto.cnf文件。不建議手動(dòng)修改該文件,其有可能導(dǎo)致數(shù)據(jù)庫(kù)在啟動(dòng)過(guò)程中因解析錯(cuò)誤而失敗。如果出現(xiàn)這種情況,可手動(dòng)刪除mysqld-auto.cnf文件或?qū)ersisted_globals_load變量設(shè)置為off來(lái)避免該文件的加載。
2. performance_schema.persisted_variables
mysql> select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 200 | +-----------------+----------------+ row in set (0.00 sec)
全局變量的持久化除了SET PERSIST外,還有SET PERSIST_ONLY,與前者相比,其只持久化全局變量,而不修改其內(nèi)存值。同時(shí),在權(quán)限方面,前者只需要SYSTEM_VARIABLES_ADMIN,后者還需要PERSIST_RO_VARIABLES_ADMIN權(quán)限。
對(duì)于已經(jīng)持久化了變量,可通過(guò)RESET PERSIST命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables
中的內(nèi)容,對(duì)于已經(jīng)修改了的變量的值,不會(huì)產(chǎn)生任何影響。
除此之外,還可以通過(guò)下述方式將全局變量持久化為默認(rèn)值。注意,是默認(rèn)值,而不是修改前的值。
mysql> set persist max_connections=default;
這個(gè)命令同“set global max_connections=default
”類似,都會(huì)將變量的值設(shè)置為默認(rèn)值,只不過(guò)前者還會(huì)將默認(rèn)值持久化到配置文件中。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
MyBatis攔截器實(shí)現(xiàn)分頁(yè)功能的實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis攔截器實(shí)現(xiàn)分頁(yè)功能的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文大家能夠?qū)崿F(xiàn)這樣的方法,需要的朋友可以參考下2017-10-10ubuntu mysql 5.6版本的刪除/安裝/編碼配置文件配置
這篇文章主要介紹了ubuntu mysql 5.6版本的刪除,安裝,編碼配置文件配置,需要的朋友可以參考下2017-06-06mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、啟用事件(ENABLE)、事件重命名及數(shù)
這篇文章主要介紹了mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、啟用事件(ENABLE)、事件重命名及數(shù)據(jù)庫(kù)事件遷移操作,詳細(xì)分析了mysql數(shù)據(jù)庫(kù)事件的修改、禁用、啟用、重命名、遷移等原理與操作技巧,需要的朋友可以參考下2019-12-12MYSQL中有關(guān)SUM字段按條件統(tǒng)計(jì)使用IF函數(shù)(case)問(wèn)題
MYSQL中SUM字段按條件統(tǒng)計(jì)使用IF函數(shù),具體實(shí)現(xiàn)代碼如下,感興趣的朋友不要錯(cuò)過(guò)2014-01-01淺談Mysql大數(shù)據(jù)分頁(yè)查詢解決方案
本文主要介紹了淺談Mysql大數(shù)據(jù)分頁(yè)查詢解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02mysql創(chuàng)建本地用戶及賦予數(shù)據(jù)庫(kù)權(quán)限的方法示例
這篇文章主要介紹了mysql創(chuàng)建本地用戶及賦予數(shù)據(jù)庫(kù)權(quán)限的相關(guān)資料,文中的介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04mysql like 特殊字符搜索的實(shí)現(xiàn)
在MySQL中,LIKE操作符用于在查詢數(shù)據(jù)時(shí)進(jìn)行模糊匹配,本文主要介紹了mysql like 特殊字符搜索的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09詳解如何通過(guò)Mysql的二進(jìn)制日志恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)
本篇文章主要介紹了詳解如何通過(guò)Mysql的二進(jìn)制日志恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04