Heim  >  Artikel  >  Datenbank  >  Eine ausführliche Diskussion der globalen Parameterpersistenz in MySQL 8.0

Eine ausführliche Diskussion der globalen Parameterpersistenz in MySQL 8.0

青灯夜游
青灯夜游nach vorne
2021-10-15 18:32:421841Durchsuche

Dieser Artikel führt Sie durch die neuen Funktionen in MySQL 8.0: Globale Parameterpersistenz. Ich hoffe, er ist hilfreich für Sie!

Eine ausführliche Diskussion der globalen Parameterpersistenz in MySQL 8.0

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

Da immer mehr Unternehmen mit der Verwendung der MySQL 8.0-Version beginnen, ist dies eine Herausforderung und eine Chance für Datenbankadministratoren!

In diesem Artikel werden hauptsächlich die neuen Funktionen der MySQL 8.0-Version erläutert:

Globale Parameterpersistenz

. [Verwandte Empfehlungen: MySQL-Video-Tutorial

]

Globale Parameter Persistenz

MySQL 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!

Entsprechendes Arbeitsprotokoll [WL#8688]: https://dev.mysql.com/worklog/task/?id=8688

Aktivieren Sie diese Funktion und verwenden Sie eine bestimmte SyntaxSET PERSIST, um eine beliebige globale Variable festzulegen, die dynamisch geändert werden kann!

  • SET PERSIST

Die Anweisung kann den Wert der Variablen im Speicher ändern und den geänderten Wert in mysqld im Datenverzeichnis schreiben -auto.cnf.
  • 🎜SET PERSIST_ONLY🎜
🎜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 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen