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

推薦する

Vue における {{}}、v-text、v-html の違いと用途の詳細な説明

{ {}} 値を取得すると、タグの元のコンテンツはクリアされませんv-textは値を取得し、タグの元...

Vue シングルページ SEO の 4 つのソリューションについての簡単な説明

目次1.Nuxtサーバーサイドレンダリングアプリケーションの展開(SSRサーバーレンダリング)利点:...

Linux で仮想コンソール セッションをロックする方法

共有システムで作業しているときは、他のユーザーが自分のコンソールを覗き込んで、自分が何をしているか見...

Nodeイベントループの包括的な理解

目次ノードイベントループイベントループ図メインスレッドイベントループタイマーキューの仕組み投票キュー...

MySQL 5.7.31 64 ビット無料インストール版チュートリアル図

1. ダウンロードダウンロードアドレス: https://dev.mysql.com/get/Dow...

MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

序文この世の愛には値段のつくものもありますが、データには値段のつけられないものがあります。将来、誤っ...

VMware ワークステーションの仮想マシンの互換性の問題に対する解決策

VMware ワークステーションの仮想マシンの互換性の問題を解決するにはどうすればよいですか?ノート...

Vue 親コンポーネントが子コンポーネント関数の実装を呼び出す

Vue親コンポーネントは子コンポーネントの関数を呼び出す親コンポーネントはイベントを通じて子コンポー...

Vueシングルページアプリケーションの事前レンダリング方法の例

目次序文vue-cli 2.0 バージョンvue-cli 3.0 バージョン要約する序文vue-cl...

MySQL複合インデックスの詳細な研究

複合インデックス (結合インデックスとも呼ばれます) は、複数の列に対して作成されるインデックスです...

Docker コンテナのネットワーク障害に対する 6 つの解決策

Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

テキストエリアのテキストをHTMLに変換する方法、つまり復帰改行について

説明: テキストエリアの値の改行を新しい行に変更しますコードをコピーコードは次のとおりです。 <...

Zabbix で Windows のパフォーマンスを監視する方法

背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...