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の紹介

推薦する

CSS を使用して親コンテナ div を img 画像で埋め、コンテナのサイズを調整する方法

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

uniapp エントリーレベル nvue クライミングピット記録の分析

目次序文こんにちは世界画像 境界線の半径を設定する実ピクセルを設定する外部CSSをインポートttfフ...

MySQL システム ユーザーが開くことができるファイルの最大数に関する簡単な説明

本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

Javascript 仮想 DOM の詳細な説明

目次仮想DOMとは何ですか?なぜ仮想DOMが必要なのでしょうか?仮想 DOM はどのようにして実際の...

MySQLを監視するためのbinlogログ解析ツールの詳しい説明:Canal

Canal は、Java を使用して開発された Alibaba のオープンソース プロジェクトです...

ウェブページレイアウトに関する9つのヒント

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案 W...

Vue3 の参照と参照の詳細

エディターは、Vue3のデータの関連する問題も共有します。次のような例を見てみましょう。 Vue.c...

Vuexの特性と機能の詳細な説明

目次Vuex とは何ですか? Vuexの5つの特性vuex の State 機能とは何ですか? vu...

JSON.stringify の簡易版の実装とその 6 つの主要機能の詳細な説明

目次序文JSON.stringify の 6 つの機能特集1特集2特集3特集4特集5特集6手動で文字...

MySQL パーティション テーブルの基本入門チュートリアル

序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...

CSS 評価効果の星の例

何?何のスターコートですか?さて、もっとわかりやすくするために写真を見てみましょう。 よく見ると、パ...

インターフェース設計の10の一般的なルール

<br />これは私がずっと前に集めた記事です。皆さんの参考のために共有したいと思います...

MySQL explain クエリ命令情報の取得原理と例

explain はクエリ実行プラン情報を取得するために使用されます。 1. 文法次のように、sele...