十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)如何在MySQL8中修改持久化全局變量,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
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記錄了這次修改的用戶(hù)及時(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;
關(guān)于如何在MySQL8中修改持久化全局變量就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。