MySQL 持久化系統變數

abce發表於2024-08-23

set persist會將變數持久化到檔案 mysqld-auto.cnf 檔案中,該檔案位於資料目錄下。reset persist會移除 mysqld-auto.cnf 檔案中持久化的變數。

MySQL 可以在執行時持久化全域性系統變數。雖然許多系統變數可以在啟動時透過 my.cnf 配置檔案設定,或在執行時使用 set 語句設定,但這些配的方法要麼需要登入訪問伺服器主機,要麼不提供執行時或遠端持久配置伺服器的功能:

·修改配置檔案需要直接訪問該檔案,而訪問該檔案需要登入到 MySQL 伺服器主機。這並不總是很方便。

·使用 set global(全域性)修改系統變數是一種執行時功能,可以透過本地執行的客戶端或遠端主機完成,但更改隻影響當前執行的伺服器例項。這些設定不是永續性的,重啟後就不存在了。

除了編輯配置件或使用 set global 之外,為了增強伺服器配置的管理能力,MySQL 還提供了 set 語法的變種,可以將系統變數設定持久化到資料目錄中名為 mysqld-auto.cnf 的檔案中。比如:

set persist max_connections = 1000;
set @@persist.max_connections = 1000;

set persist和set global類似,在 MySQL 執行時設定,但是會寫入到 mysqld-auto.cnf檔案中

set persist_only back_log = 100;
set @@persist_only.back_log = 100;

set persist_only只是將變數持久化到 mysqld-auto.cnf檔案中,但不是執行時生效。更適合配置只讀變數。

持久化系統變數的特點

持久化系統變數的伺服器配置具有以下特點:

·持久化設定在 MySQL 執行時進行。

·持久化設定是永久性的。它們適用於伺服器重啟。

·可透過本地客戶端或從遠端主機連線的客戶端進行持久化設定。這為從單一客戶端主機遠端配置多個 MySQL 伺服器提供了便利。

·要持久化系統變數,你不需要擁有 MySQL 伺服器主機的登入許可權或配置檔案的檔案系統訪問許可權。持久化設定的能力由 MySQL 許可權系統控制。

·擁有足夠許可權的管理員可以透過持久化系統變數來重新配置伺服器,然後透過執行 restart 語句使伺服器立即使用更改後的設定。

·持久化設定可提供即時的錯誤反饋。手動輸入設定中的錯誤可能不會被發現。

移除持久化的變數

reset persist;移除 mysqld-auto.cnf檔案中所有的持久化變數

reset persist system_var_name;移除指定名稱的持久化變數

reset persist if exists system_var_name;如果不存在,則會給出警告

查詢持久化的變數資訊

表 performance_schema.persisted_variables 提供了一個sql介面,訪問檔案mysqld-auto.cnf的內容;表 performance_schema.variables_info 提了是哪個使用者以及在最近哪個時間點持久化過變數。

reset persist 會影響表 performance_schema.persisted_variables 的內容,但是不會影響表 performance_schema.variables_info 的內容。

相關文章