MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明

MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明

序文

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

MySQL バージョン 8.0 を使用する企業が増えるにつれ、DBA にとってこれは課題であり、チャンスでもあります。 💪🏻

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

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

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

対応する作業ログ [WL#8688]: dev.mysql.com/worklog/tas…

この機能を有効にするには、特別な構文 SET PERSIST を使用して、動的に変更可能なグローバル変数を設定します。

持続設定

このステートメントは、メモリ内の変数の値を変更し、変更された値をデータ ディレクトリ内の mysqld-auto.cnf に書き込むことができます。

PERSIST_ONLY を設定する

このステートメントは、メモリ内の変数の値を変更するのではなく、変更された値をデータ ディレクトリ内の mysqld-auto.cnf に書き込むだけです。

max_connections パラメータを例に挙げます。

mysql> performance_schema.persisted_variables から * を選択します。
空のセット (0.00 秒)

mysql> '%max_connections%' のような変数を表示します。
+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| 最大接続数 | 151 |
|mysqlx_max_connections | 100 |
+------------------------+-------+
セット内の 2 行 (0.00 秒)

mysql> 持続するmax_connectionsを300に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> performance_schema.persisted_variables から * を選択します。
+-----------------+----------------+
| 変数名 | 変数値 |
+-----------------+----------------+
| 最大接続数 | 300 |
+-----------------+----------------+
セット内の 1 行 (0.00 秒)

システムはデータ ディレクトリに json 形式の mysqld-auto.cnf ファイルを生成します。形式は次のとおりです。my.cnf と mysqld-auto.cnf が同時に存在する場合、後者が優先されます。

{
    「バージョン」: 1, 
    "mysql_server": {
        "最大接続数": {
            「値」: 「300」、 
            「メタデータ」: {
                「タイムスタンプ」: 1632575065787609、 
                "ユーザー": "root", 
                「ホスト」: 「localhost」
            }
        }
    }
}

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

max_connections パラメータを初期のデフォルト値に戻す場合は、次のコマンドを実行します。

mysql> 持続する max_connections を DEFAULT に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> performance_schema.persisted_variables から * を選択します。
+-----------------+----------------+
| 変数名 | 変数値 |
+-----------------+----------------+
| 最大接続数 | 151 |
+-----------------+----------------+
セット内の 1 行 (0.00 秒)

すべてのグローバル永続パラメータを削除する場合は、次のコマンドを実行します。

mysql> RESET PERSIST;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> performance_schema.persisted_variables から * を選択します。
空のセット (0.00 秒)

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

最後に

メインコード:

コミット f2bc0f89b7f94cc8fe963d08157413a01d14d994

メインエントリ機能(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 の新機能であるグローバルパラメータの永続性に関するこの記事は終了です。MySQL 8 のグローバルパラメータの永続性の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

参考資料:

  • mysqlserverteam.com/mysql-8-0-p…
  • dev.mysql.com/worklog/tas…
  • バグ報告は、以下の URL から入手できます。
以下もご興味があるかもしれません:
  • MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明
  • MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)
  • MySQL 8 の新機能: 永続的なグローバル変数を変更する方法
  • MySQL 8 の新機能: 降順インデックスの詳細
  • MySQL 8の新機能ウィンドウ関数の役割

<<:  複数レベルの複雑な動的ヘッダーの avue-crud 実装例

>>:  Webフロントエンドツール、Sublime Text 2の紹介

推薦する

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...

DockerコンテナでPythonを実行するディープラーニング環境を構築する方法

タスク マネージャーで仮想化を確認し、有効になっている場合は仮想化を、無効になっている場合はコンピュ...

JavaScript は 9 グリッドのクリックによる色の変更効果を実装します

この記事では、9グリッドクリックの色変更効果を実現するためのJavaScriptの具体的なコードを参...

Nginx のアンチホットリンクを設定する方法

実験環境• 最小限のインストール済みの CentOS 7.3 仮想マシン• 構成: 1 コア/512...

MySql 8.0.11 のインストールと設定のチュートリアル

公式ウェブサイトアドレス: https://dev.mysql.com/downloads/mysq...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

Mysql マルチテーブル結合クエリの実行の詳細について簡単に説明します。

まず、このブログのケースデモンストレーション テーブルを作成します。 create table a(...

MySQLの遅いクエリ問題の詳細な分析データ送信

例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...

純粋な CSS でカスタムラジオボタンとチェックボックス機能を実装する

1. 効果を達成する 2 知識ポイント2.1 <label> タグHTML では、<...

Vue要素のバックグラウンド認証プロセスの分析

序文:最近、プロジェクトで管理システムに遭遇しました。権限設定が非常に興味深いと思いました。自分の学...

フロントエンドセキュリティの詳細な説明: JavaScript の http ハイジャック対策と XSS

目次HTTP ハイジャック、DNS ハイジャック、XSS HTTPハイジャックDNSハイジャックXS...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明

序文: Linux システムでの rm は元に戻せません。コマンドの設計自体に問題はありません。問題...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

MySQL 挿入時間の 8 時間の違いの問題の解決方法

MySQL挿入時の8時間の時差の問題を解決する通常、jdbc の URL にはいくつかのパラメータを...