ホームページ  >  記事  >  データベース  >  MySQL 8.0 におけるグローバル パラメータの永続性についての詳細な説明

MySQL 8.0 におけるグローバル パラメータの永続性についての詳細な説明

青灯夜游
青灯夜游転載
2021-10-15 18:32:421841ブラウズ

この記事では、MySQL 8.0 の新機能であるグローバル パラメーターの永続性について説明します。

MySQL 8.0 におけるグローバル パラメータの永続性についての詳細な説明

MySQL 8.0.11 の最初のバージョンが 2018 年にリリースされて以来、MySQL バージョンは更新され、8.0.26 に反復されてきました。 、安定バージョン 5.7 と比較して、8.0 のパフォーマンスの向上は疑いの余地がありません。

MySQL 8.0 バージョンを使用し始める企業が増えているため、DBA にとっては課題であると同時にチャンスでもあります。

この記事では主に、MySQL 8.0 バージョンの新機能 グローバル パラメーターの永続性 について説明します。 [関連する推奨事項: mysql ビデオ チュートリアル ]

グローバル パラメーターの永続性

MySQL 8.0 バージョンでは、By を追加することで、グローバル パラメーターと永続性のオンライン変更をサポートしています。 PERSIST キーワードを使用すると、変更されたパラメータを新しい設定ファイル (mysqld-auto.cnf) に保存できます。MySQL を再起動すると、この設定ファイルから最新の設定パラメータを取得できます。

#対応するワークログ [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 が同時に存在する場合、後者の方が優先されます。 <pre class="brush:js;toolbar:false;">{ &quot;Version&quot;: 1, &quot;mysql_server&quot;: { &quot;max_connections&quot;: { &quot;Value&quot;: &quot;300&quot;, &quot;Metadata&quot;: { &quot;Timestamp&quot;: 1632575065787609, &quot;User&quot;: &quot;root&quot;, &quot;Host&quot;: &quot;localhost&quot; } } } }</pre>

注:

SET PERSIST を使用して設定値を変更し、変更がない場合でも、mysqld-auto.cnf ファイルにも書き込まれます。 。ただし、DEFAULT 値に設定することで、初期のデフォルト値に戻すことができます。

max_connections

パラメータを初期のデフォルト値に復元したい場合は、次のコマンドを実行するだけです: <pre class="brush:js;toolbar:false;">mysql&gt; set persist max_connections=DEFAULT; Query OK, 0 rows affected (0.00 sec) mysql&gt; select * from performance_schema.persisted_variables; +-----------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +-----------------+----------------+ | max_connections | 151 | +-----------------+----------------+ 1 row in set (0.00 sec)</pre>すべてのグローバル永続パラメータを削除したい場合は、実行する必要があるのは:

mysql> RESET PERSIST;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from performance_schema.persisted_variables;
Empty set (0.00 sec)

もちろん、mysqld-auto.cnf ファイルを削除した後に MySQL を再起動することもできます。

最後に書く

メインコード:

Commit f2bc0f89b7f94cc8fe963d08157413a01d14d994

メインエントリfunction (8.0.0):

接口函数大多定义在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
プログラミング関連の知識については、

プログラミング ビデオ

をご覧ください。 !

以上がMySQL 8.0 におけるグローバル パラメータの永続性についての詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。