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

推薦する

独自の YUM リポジトリを作成する手順

簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...

MAC+PyCharm+Flask+Vue.js ビルドシステム

目次node.js+nvm+npm を設定するnpmスイッチタオバオミラーVue.jsをインストール...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...

Vue プロジェクトでよく使用されるツール機能の概要

目次序文1. カスタムフォーカスコマンド1. 方法1 2. 方法2 3. 方法3 2. 入力ボックス...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...

Vue で計算プロパティを使用する際の知識ポイントのまとめ

計算されたプロパティ場合によっては、テンプレートにロジックを詰め込みすぎると、テンプレートが重くなり...

Vueは秒殺しのカウントダウンコンポーネントを実装する

この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...

Dockerにlogstashをインストールする詳細な手順

docker-compose.yml を編集し、次のコンテンツを追加します。 バージョン: '...

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

And キーワードを使用した MySQL の複数条件クエリ ステートメント

AND キーワードを使用した MySQL 複数条件クエリ。MySQL では、AND キーワードを使用...

Linuxサーバ侵入緊急対応記録(概要)

最近、お客様から支援の依頼を受けました。管理されている通信コンピュータ ルームから、サーバーの 1 ...

jsは配列の平坦化を実装します

目次配列をフラット化する方法1.flat() の使用2. 正規表現を使用する3.reduce()+c...

MySQLクエリ条件の一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL クエリ条件の一般的な使用方法を説明します。ご参考までに、詳細...

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理better-scroll のスクロール原理は、ブラウザのネイティブスクロ...

JavaScript配列をツリー構造に変換する方法

1. 需要バックエンドは、フロントエンドがツリー構造(重複データなし)に変換するためのデータを提供し...