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

推薦する

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...

ユニアプリプロジェクトでのウォーターフォールレイアウトの実装

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアル1. プ...

LinuxでJenkinsのパスワードを忘れる方法

1.Jenkinsのインストール手順: https://www.jb51.net/article/1...

MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド

テーブル構造は次のとおりです。 id varchar(32) 情報JSONデータ: id = 1 i...

docker デプロイメントの実装手順 lnmp-wordpress

目次1. 実験環境2. Dockerソースをインストールする3. Dockerをインストールする4....

ECMAScript のイテレータの詳細な説明

目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...

HTML でさまざまなスペースの特徴と表現を探る (推奨)

I. 概要HTML テンプレートを作成するときに、テキスト レイアウトの手段としてスペースが使用さ...

VueはAmapを使用して都市の位置特定を実現

この記事では、Amapを使用して都市の位置特定を実現するVueの具体的なコードを参考までに共有します...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

CentOS 7 で Docker のポート転送をファイアウォールと互換性のあるように設定する方法

CentOS 7 では、次のようなコマンドを使用してホスト ポートをコンテナー ポートにマッピングす...

jQueryはスライディングタブを実装する

この記事では、スライドタブを実装するためのjQueryの具体的なコードを参考までに紹介します。具体的...

CentOS 6.2 に MySQL 5.7.28 をインストールするチュートリアル (mysql ノート)

1. 環境整備1.MySQLインストールパス: /usr/local 2. CentOS 6.2 ...

Net Core実装プロセス分析のDoc​​kerインストールと展開

1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...

Nest.js のハッシュと暗号化の例の詳細な説明

0x0 はじめにまず、ハッシュアルゴリズムとは何でしょうか?メッセージやセッション項目など、一部のデ...

Vue 開発者向けの VSCode 拡張機能ベスト 7

適切な VS Code 拡張機能を Visual Studio に追加すると、開発者としての作業がは...