MySQL的啟動選項和系統變量的用法

這篇文章主要講解了MySQL的啟動選項和系統變量的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

創(chuàng)新互聯公司長期為成百上千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為解放企業(yè)提供專業(yè)的網站制作、做網站,解放網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

MySQL的配置信息可以通過兩種方式實現,一種是命令行形式,在啟動MySQL服務時后邊帶上相關配置參數,此種方式會在MySQL重啟后失效。另外一種是通過寫入配置文件,如my.cnf,啟動或者重啟MySQL服務都會生效,此種方式是永久生效。

啟動選項

命令行

在MySQL服務命令啟動時,帶上配置參數

啟動方式可參考這篇:MySQL 的啟動和連接方式

命令格式:
啟動命令 --啟動選項1[=值1] --啟動選項2[=值2] ... --啟動選項n[=值n]
例如:
mysqld --default-storage-engine=MyISAM //設置默認存儲引擎
錯誤例子:
mysqld --default-storage-engine = MyISAM //設置默認存儲引擎
原因:
因為啟動項和值之間的等號不能有空格
參數的長形式和短形式
配置參數有長形式和短形式之分,有些作用是一樣的,只是寫法不同而已
--host => -h //主機
--port => -P // 端口
--user => -u //用戶
--password => -p //密碼
--version => -V //版本
......
例子:
mysqld --port=3306
mysqld -P3306
mysqld -P 3306
注意:
密碼不能有空格
mysqld -proot

配置文件

配置文件my.cnf的位置,有可能是以下的幾種,如MySQL服務啟動時未指定配置文件時,會從以下地方查找讀取并初始化。
* /etc/my.cnf 
* /etc/mysql/my.cnf
* defaults-extra-file //指定的額外配置文件路徑
* SYSCONFDIR/my.cnf //cmake編譯安裝情況
* $MYSQL_HOME/my.cnf //設置環(huán)境變量,默認安裝路徑
* ~/.my.cnf //用戶特定選項,家目錄
* ~/.mylogin.cnf //用戶特定的登錄路徑選項(僅限客戶端),mysql_config_editor修改,不是純文件

注意

1. 在配置文件中指定的啟動選項不允許加--前綴,并且每行只指定一個選項,而且=周圍可以有空白字符
2. 如果我們在多個配置文件中設置了相同的啟動選項,那以最后一個配置文件中的為準
3. 如果同一個啟動選項既出現在命令行中,又出現在配置文件中,那么以命令行中的啟動選項為準
4. mysqld --defaults-file=/tmp/myconfig.txt 
//在程序啟動的時候將只在/tmp/myconfig.txt路徑下搜索配置文件。如果文件不存在或無法訪問,則會發(fā)生錯誤

配置組
配置文件一共可以以下這些組別:mysqld、mysqld_safe、mysql.server、mysql、mysqladmin、mysqldump,可以針對不同組別進行配置

MySQL的啟動選項和系統變量的用法

內容格式
[server]
(具體的啟動選項...)
[mysqld]
(具體的啟動選項...)
[mysqld_safe]
(具體的啟動選項...)
[client]
(具體的啟動選項...)
[mysql]
(具體的啟動選項...)
[mysqladmin]
(具體的啟動選項...)
例子:
[mysqld]
pid-file  = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
datadir  = /var/lib/mysql
log-error = /var/log/mysql/error.log
# 優(yōu)化配置
wait_timeout=10
back_log=600
key_buffer_size = 2048M
read_buffer_size = 100M
max_allowed_packet = 1000M
thread_stack  = 192K
thread_cache_size = 4
myisam-recover-options = BACKUP
max_connections = 4000
max_user_connections = 0
max_connect_errors = 65535
open_files_limit = 10240
......

注意
1. [server]組下邊的啟動選項將作用于所有的服務器程序,如mysqld、mysqld_safe、mysql.server
2. [client]組下邊的啟動選項將作用于所有的客戶端程序,如mysql、mysqladmin、mysqldump
3. 同一個配置文件中多個組的優(yōu)先級,將以最后一個出現的組中的啟動選項為準

系統變量

MySQL服務器程序運行過程中會用到許多影響程序行為的變量,它們被稱為MySQL系統變量。

例如:
1. 允許同時連入的客戶端數量用系統變量max_connections表示
2. 表的默認存儲引擎用系統變量default_storage_engine表示
3. 查詢緩存的大小用系統變量query_cache_size表示
......

查看

格式:
SHOW VARIABLES [LIKE 匹配的模式];
例如:
SHOW VARIABLES LIKE 'default_storage_engine';

MySQL的啟動選項和系統變量的用法

設置

通過啟動項設置
mysqld --default-storage-engine=MyISAM --max-connections=10
[mysqld]
default-storage-engine = MyISAM
max-connections = 10
......

注意:
對于啟動選項來說,如果啟動選項名由多個單詞組成,各個單詞之間用短劃線-或者下劃線_連接起來都可以,但是它對應的系統變量的單詞之間必須使用下劃線_連接起來(即通過show查看或set設置時)

服務器程序運行過程中設置
系統變量比較牛逼的一點就是,對于大部分系統變量來說,它們的值可以在服務器程序運行過程中進行動態(tài)修改而無需停止并重啟服務器

不過系統變量有全局和當前會話作用域之分

作用域

GLOBAL:全局變量,影響服務器的整體操作。
SESSION:會話變量,影響某個客戶端連接的操作。(別名叫LOCAL)
格式:
1. SET [GLOBAL|SESSION] 系統變量名 = 值;
2. SET [@@(GLOBAL|SESSION).]var_name = XXX;
global
例如:
1. SET GLOBAL default_storage_engine = InnoDB;
2. SET @@GLOBAL.default_storage_engine = InnoDB;
session
例如:
1. SET SESSION default_storage_engine = InnoDB;
2. SET @@SESSION.default_storage_engine = InnoDB;
3. SET default_storage_engine = InnoDB;//默認 session
查看
格式:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
1. SHOW SESSION VARIABLES LIKE 'default_storage_engine';
2. SHOW GLOBAL VARIABLES LIKE 'default_storage_engine';
注意:
如果某個客戶端改變了某個系統變量在GLOBAL作用范圍的值,并不會影響該系統變量在當前已經連接的客戶端作用范圍為SESSION的值,只會影響后續(xù)連入的客戶端在作用范圍為SESSION的值。
補充說明

* 有一些系統變量只具有GLOBAL作用范圍,比方說max_connections,表示服務器程序支持同時最多有多少個客戶端程序進行連接
* 有一些系統變量只具有SESSION作用范圍,比如insert_id,表示在對某個包含AUTO_INCREMENT列的表進行插入時,該列初始的值
* 有一些系統變量的值既具有GLOBAL作用范圍,也具有SESSION作用范圍,比如我們前邊用到的default_storage_engine,而且其實大部分的系統變量都是這樣的

比方說version,表示當前MySQL的版本,我們客戶端是不能設置它的值的,只能在SHOW VARIABLES語句里查看。

啟動選項與系統變量的關系
啟動選項是在程序啟動時我們程序員傳遞的一些參數,而系統變量是影響服務器程序運行行為的變量

* 大部分的系統變量都可以被當作啟動選項傳入
* 有些系統變量是在程序運行過程中自動生成的,是不可以當作啟動選項來設置,比如auto_increment_offset、character_set_client啥的
* 有些啟動選項也不是系統變量,比如defaults-file

狀態(tài)變量

為了讓我們更好的了解服務器程序的運行情況,MySQL服務器程序中維護了好多關于程序運行狀態(tài)的變量,它們被稱為狀態(tài)變量。

比方說Threads_connected表示當前有多少客戶端與服務器建立了連接,Handler_update表示已經更新了多少行記錄

由于狀態(tài)變量是用來顯示服務器程序運行狀況的,所以它們的值只能由服務器程序自己來設置,我們程序員是不能設置的

查看

格式:
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
例如:
SHOW STATUS LIKE 'thread%';

MySQL的啟動選項和系統變量的用法

看完上述內容,是不是對MySQL的啟動選項和系統變量的用法有進一步的了解,如果還想學習更多內容,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。

本文標題:MySQL的啟動選項和系統變量的用法
路徑分享:http://www.muchs.cn/article18/gceggp.html

成都網站建設公司_創(chuàng)新互聯,為您提供自適應網站、網頁設計公司、網站收錄、小程序開發(fā)、Google、定制網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站優(yōu)化排名