MySQL 8 新特性之持久化全域性變數的修改
在8之前的版本中,對於全域性變數的修改,其只會影響其記憶體值,而不會持久化到配置檔案中。資料庫重啟,又會恢復成修改前的值。從8開始,可透過SET PERSIST命令將全域性變數的修改持久化到配置檔案中。
試舉一例
mysql> show variables like '%max_connections%';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| max_connections | 151 || mysqlx_max_connections | 100 |+------------------------+-------+2 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 |+------------------------+-------+2 rows in set (0.00 sec)
全域性變數的修改會儲存在兩處,
1. 資料目錄下mysqld-auto.cnf檔案,
注意,不是啟動時--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記錄了這次修改的使用者及時間資訊。
在資料庫啟動時,會首先讀取其它配置檔案,最後才讀取mysqld-auto.cnf檔案。不建議手動修改該檔案,其有可能導致資料庫在啟動過程中因解析錯誤而失敗。如果出現這種情況,可手動刪除mysqld-auto.cnf檔案或將persisted_globals_load變數設定為off來避免該檔案的載入。
2. performance_schema.persisted_variables
mysql> select * from performance_schema.persisted_variables;+-----------------+----------------+| VARIABLE_NAME | VARIABLE_VALUE |+-----------------+----------------+| max_connections | 200 |+-----------------+----------------+1 row in set (0.00 sec)
全域性變數的持久化除了SET PERSIST外,還有SET PERSIST_ONLY,與前者相比,其只持久化全域性變數,而不修改其記憶體值。同時,在許可權方面,前者只需要SYSTEM_VARIABLES_ADMIN,後者還需要PERSIST_RO_VARIABLES_ADMIN許可權。
對於已經持久化了變數,可透過RESET PERSIST命令清除掉,注意,其只是清空mysqld-auto.cnf和performance_schema.persisted_variables中的內容,對於已經修改了的變數的值,不會產生任何影響。
除此之外,還可以透過下述方式將全域性變數持久化為預設值。注意,是預設值,而不是修改前的值。
mysql> set persist max_connections=default;
這個命令同“set global max_connections=default”類似,都會將變數的值設定為預設值,只不過前者還會將預設值持久化到配置檔案中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2803370/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 8.0 全域性變數的修改持久化 set persistMySql變數持久化
- MySQL 8 新特性之自增主鍵的持久化MySql持久化
- MySQL·8.0.0新特性·持久化自增列值MySql持久化
- MySQL 持久化系統變數MySql持久化變數
- 靜態全域性變數和全域性變數變數
- 全域性變數變數
- MySQL 8 新特性之Clone PluginMySqlPlugin
- angular中定義全域性變數及全域性變數的使用Angular變數
- node 全域性物件和全域性變數物件變數
- .net framework新特性之隱式型別化的變數Framework型別變數
- 全域性變數與區域性變數變數
- 全域性 DOM 變數變數
- lua全域性變數變數
- C語言區域性變數、全域性變數、靜態區域性變數、靜態全域性變數C語言變數
- 第十二節:MySQL8.x版本新特性和變化MySql
- 全域性DOM變數的坑變數
- 少用全域性變數的原因變數
- Java區域性變數與全域性變數Java變數
- java 全域性變數和區域性變數Java變數
- JavaScript —— 區域性變數和全域性變數JavaScript變數
- jmeter全域性變數和區域性變數JMeter變數
- 【c】全域性變數與區域性變數變數
- node內建全域性變數之__dirname、__filename變數
- QT程式設計之——使用全域性變數QT程式設計變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- MySQL 8 新特性之Invisible IndexesMySqlIndex
- vue定義全域性變數和全域性方法Vue變數
- js宣告全域性變數JS變數
- python全域性變數Python變數
- SQL Server 全域性變數SQLServer變數
- Python中的全域性變數和區域性變數Python變數
- js-js的全域性變數和區域性變數JS變數
- python全域性變數與區域性變數Python變數
- javascript全域性變數的使用注意JavaScript變數
- SQL Server中的全域性變數SQLServer變數
- 全域性變數和靜態變數的區別變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- Python的區域性變數和全域性變數使用解惑Python變數