前言
在8之前的版本中,對于全局變量的修改,其只會影響其內(nèi)存值,而不會持久化到配置文件中。數(shù)據(jù)庫重啟,又會恢復(fù)成修改前的值。從8開始,可通過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)
全局變量的修改會保存在兩處,
1. 數(shù)據(jù)目錄下mysqld-auto.cnf文件,
注意,不是啟動時(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ù)庫啟動時(shí),會首先讀取其它配置文件,最后才讀取mysqld-auto.cnf文件。不建議手動修改該文件,其有可能導(dǎo)致數(shù)據(jù)庫在啟動過程中因解析錯(cuò)誤而失敗。如果出現(xiàn)這種情況,可手動刪除mysqld-auto.cnf文件或?qū)ersisted_globals_load變量設(shè)置為off來避免該文件的加載。
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)限。
對于已經(jīng)持久化了變量,可通過RESET PERSIST命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的內(nèi)容,對于已經(jīng)修改了的變量的值,不會產(chǎn)生任何影響。
除此之外,還可以通過下述方式將全局變量持久化為默認(rèn)值。注意,是默認(rèn)值,而不是修改前的值。
mysql> set persist max_connections=default;
這個(gè)命令同“set global max_connections=default”類似,都會將變量的值設(shè)置為默認(rèn)值,只不過前者還會將默認(rèn)值持久化到配置文件中。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選