Heim >Datenbank >MySQL-Tutorial >Eine ausführliche Diskussion der globalen Parameterpersistenz in MySQL 8.0
Dieser Artikel führt Sie durch die neuen Funktionen in MySQL 8.0: Globale Parameterpersistenz. Ich hoffe, er ist hilfreich für Sie!
Seit der Veröffentlichung der offiziellen Version der ersten Version MySQL 8.0.11
im Jahr 2018 wurde die MySQL-Version aktualisiert und auf 8.0.26
iteriert, verglichen zur stabilen Version 5.7 In Bezug auf die Leistung besteht kein Zweifel daran, dass 8.0 die Leistung verbessert hat! MySQL 8.0.11
正式版至今,MySQL 版本已经更新迭代到 8.0.26
,相对于稳定的 5.7 版本来说,8.0 在性能上的提升是毋庸置疑的!
随着越来越多的企业开始使用 MySQL 8.0 版本,对于 DBA 来说是一个挑战,也是一个机遇!
本文主要讨论下 MySQL 8.0 版本的新特性:全局参数持久化。【相关推荐:mysql视频教程】
MySQL 8.0 版本支持在线修改全局参数并持久化,通过加上 PERSIST
关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启 MySQL 时,可以从该配置文件获取到最新的配置参数!
对应的Worklog [WL#8688]:https://dev.mysql.com/worklog/task/?id=8688
启用这个功能,使用特定的语法 SET PERSIST
来设定任意可动态修改的全局变量!
- SET PERSIST
语句可以修改内存中变量的值,并且将修改后的值写⼊数据⽬录中的 mysqld-auto.cnf 中。
- SET PERSIST_ONLY
语句不会修改内存中变量的值,只是将修改后的值写⼊数据⽬录中的 mysqld-auto.cnf 中。
以 max_connections
参数为例:
mysql> select * from performance_schema.persisted_variables; Empty set (0.00 sec) 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=300; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 300 | +-----------------+----------------+ 1 row in set (0.00 sec)
系统会在数据目录下生成一个包含 json
格式的 mysqld-auto.cnf 的文件,格式化后如下所示,当 my.cnf 和mysqld-auto.cnf 同时存在时,后者具有更高优先级。
{ "Version": 1, "mysql_server": { "max_connections": { "Value": "300", "Metadata": { "Timestamp": 1632575065787609, "User": "root", "Host": "localhost" } } } }
注意: 即使你通过 SET PERSIST
修改配置的值并没有任何变化,也会写入到 mysqld-auto.cnf 文件中。但你可以通过设置成 DEFAULT
值的方式来恢复初始默认值!
如果想要恢复 max_connections
Globale Parameterpersistenz
. [Verwandte Empfehlungen: MySQL-Video-TutorialMySQL Version 8.0 unterstützt die Online-Änderung globaler Parameter und die Persistenz. Durch Hinzufügen des Schlüsselworts PERSIST
können die geänderten Parameter beim Neustart in der neuen Konfigurationsdatei (mysqld-auto.cnf) beibehalten werden MySQL, die neuesten Konfigurationsparameter können dieser Konfigurationsdatei entnommen werden!
Aktivieren Sie diese Funktion und verwenden Sie eine bestimmte SyntaxSET PERSIST
, um eine beliebige globale Variable festzulegen, die dynamisch geändert werden kann!
Die Anweisung kann den Wert der Variablen im Speicher ändern und den geänderten Wert in mysqld im Datenverzeichnis schreiben -auto.cnf.
🎜Die Anweisung ändert nicht den Wert der Variablen im Speicher, sondern schreibt nur den geänderten Wert in die Daten Verzeichnis mysqld-auto.cnf. 🎜🎜🎜Nehmen Sie den Parameter
- 🎜SET PERSIST_ONLY🎜
max_connections
als Beispiel: 🎜🎜mysql> set persist max_connections=DEFAULT; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 151 | +-----------------+----------------+ 1 row in set (0.00 sec)🎜Das System generiert im Datenverzeichnis eine Datei mit mysqld-auto.cnf im Format
json
. Nach der Formatierung Wie unten gezeigt, hat letzteres eine höhere Priorität, wenn my.cnf und mysqld-auto.cnf gleichzeitig vorhanden sind. 🎜mysql> RESET PERSIST; Query OK, 0 rows affected (0.00 sec) mysql> select * from performance_schema.persisted_variables; Empty set (0.00 sec)🎜🎜Hinweis: 🎜 Auch wenn Sie den Konfigurationswert über
SET PERSIST
ändern und es keine Änderung gibt, wird er auch in die Datei mysqld-auto.cnf geschrieben. Sie können jedoch den anfänglichen Standardwert wiederherstellen, indem Sie ihn auf den Wert DEFAULT
setzen! 🎜🎜Wenn Sie den Parameter max_connections
auf seinen ursprünglichen Standardwert zurücksetzen möchten, führen Sie einfach Folgendes aus: 🎜接口函数大多定义在sql/persisted_variable.cc文件中: 启动时载入mysqld-auto.cnf的内容: Persisted_variables_cache::load_persist_file(); 通过json解析合法性,并存入内存 将文件中读取的配置进行设置: Persisted_variables_cache::set_persist_options 运行SET PERSIST命令时,调用Persisted_variables_cache::set_variable 更新内存中存储的值 写入mysqld-auto.cnf文件中: Persisted_variables_cache::flush_to_file🎜Wenn Sie alle globalen Persistenzparameter entfernen möchten, führen Sie einfach Folgendes aus: 🎜rrreee🎜Natürlich löschen Sie mysqld -auto.cnf-Datei, Sie können MySQL auch neu starten! 🎜🎜🎜Am Ende geschrieben🎜🎜🎜🎜Hauptcode: 🎜🎜Commit f2bc0f89b7f94cc8fe963d08157413a01d14d994🎜🎜🎜🎜Haupteintragsfunktion (8.0.0): 🎜🎜r rreee 🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideos🎜! ! 🎜
Das obige ist der detaillierte Inhalt vonEine ausführliche Diskussion der globalen Parameterpersistenz in MySQL 8.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!