MySQL之my.cnf配置文件圖文詳解
引言
之前沒有仔細(xì)研究過my.cnf文件,今天有時間研究了一下my.cnf中的一些概念,這里簡單整理如下,如果有什么問題,還請大家指出。
按照教程安裝好MySQL之后,打開etc目錄下的my.cnf文件,大概可看到下面這樣的參數(shù)列表,可能不同版本的mysql參數(shù)多少會有一些不一致,但是并不妨礙我們理解。
首先,我們可以看到這個文件里面有mysqld和mysql_safe兩類參數(shù),我們知道m(xù)ysqld和mysql_safe都可以啟動mysql服務(wù),那么mysqld和mysql_safe這兩個類之間有什么不同呢?要討論這個問題,我們需要引入第三個類別mysql.server,并同時討論這三種啟動方式的區(qū)別。
問題1.mysql.server,mysqld,mysqld_safe的區(qū)別
mysql.server
它是一個服務(wù)器啟動的shell腳本,主要作用就是為了方便啟動和關(guān)閉mysql服務(wù),它使用mysql_safe來啟動mysql服務(wù)器,在mysql.server啟動服務(wù)器之前,它將目錄轉(zhuǎn)換到mysql安裝目錄里面去,然后調(diào)用mysqld_safe。mysql.server通過向服務(wù)器發(fā)送一個信號來停止它,也可以使用mysqladmin shutdown命令來停止服務(wù)器,如果你使用源碼或者二進制格式安裝mysql(沒有自動安裝mysql.server這個腳本),你可以手動安裝; 這個腳本在mysql安裝目錄下的support-files目錄里邊或者在源碼包里邊;為了能使用service mysqld start命令啟動mysql服務(wù),此時需要做的是將mysql.server的腳本復(fù)制到/etc/init.d目錄下,然后重命名為mysqld,最后給予執(zhí)行權(quán)限。mysqld.server會從配置文件的[mysqld] [mysql.server] 區(qū)域讀取配置選項;
可以在全局配置文件/etc/my.cnf中配置mysql.server,mysql.server腳本支持下面這些選項;一旦指定,它們必須放在配置文件中,不能放到命令行中(mysql.server支持的命令行參數(shù)只有start和stop);
–basedir mysql安裝目錄;
–datadir 數(shù)據(jù)文件的路徑;
–pid-file 服務(wù)器寫自己的進程號的文件;如果這個不指定,mysql使用默認(rèn)的hostname.pid;
The PID file value被傳遞給mysqld_safe,覆蓋了[mysqld_safe]下面指定的值;因為mysql.server讀取[mysqld]選項組而不讀取[mysqld_safe]選項組,所以為了在使用mysql.server 調(diào)用mysqld_safe的時候, mysqld_safe能夠獲得一樣的pid,我們可以讓[mysqld]選項組和[mysqld_safe]選項組使用同一個pid-file;
mysql_safe
這是mysql服務(wù)啟動腳本,它是mysqld的父進程,它調(diào)用mysqld啟動數(shù)據(jù)庫服務(wù),并在啟動MySQL服務(wù)器后繼續(xù)監(jiān)控其運行情況,并在其死機時重新啟動它,當(dāng)我們開啟mysqld_safe命令的時候,可以防止mysql服務(wù)的意外終止,這里做一個小小的測試。
首先查看當(dāng)前的mysql服務(wù):
然后發(fā)現(xiàn)服務(wù)中有一個mysql_safe和一個mysqld,其中mysqld_safe的端口號是1929,mysqld的端口號是2228,這個時候,我們把2228的進程殺掉:
我們發(fā)現(xiàn),進程號為2228的mysqld進程已經(jīng)被殺掉,進程號為1929的mysqld_safe進程還在,又重新生成了一個進程號為2288的mysqld進程,接下來,我們殺掉mysqld_safe的進程,kill -9 1929,得到的結(jié)果如下:
我們發(fā)現(xiàn)殺掉mysqld_safe之后,只剩下進程號為2288的mysqld進程了,并沒有生成新的mysqld_safe進程,這個時候,在再次殺掉mysqld進程2288,結(jié)果如下:
此時,所有的進程都被關(guān)閉掉了,綜合上述操作,我們可以發(fā)現(xiàn),當(dāng)mysqld_safe進程存在時,我們無法直接殺掉mysqld進程,當(dāng)我們殺掉mysqld_safe進程的時候,此時才可以殺掉mysqld進程,這便是mysqld_safe的守護進程作用,它可以防止mysqld進程被意外終止。
mysqld
mysqld是關(guān)于服務(wù)器端的程序,要想使用客戶端程序,該程序必須運行,因為客戶端通過連接服務(wù)器來訪問數(shù)據(jù)庫。
問題2.mysql的三種啟動方式:
1、mysqld
啟動mysql服務(wù)器:
客戶端連接:
2、mysqld_safe
啟動mysql服務(wù)器:
客戶端連接:
3、mysql.server
啟動mysql服務(wù)器:
客戶端連接:同1、2
問題3.socket文件mysql.sock詳解
mysql有兩種連接方式,一種是TCP/IP的方式,另外一種是socket的方式,mysql.sock主要用戶程序與mysqlserver在同一機器上,發(fā)起本地連接的時候使用,即無需再連接服務(wù)時使用host和IP,mysql.sock是隨著每一次mysql server的啟動而生成的,當(dāng)服務(wù)重啟時,mysql.sock也會重新生成。利用mysql.sock連接服務(wù)的樣例如下:
linux下安裝mysql連接的時候經(jīng)常回提示說找不到mysql.sock文件,解決辦法很簡單:
1.如果是新安裝的mysql,提示找不到文件,就搜索下,指定正確的位置。
2.如果mysql.sock文件誤刪的話,就需要重啟mysql服務(wù),如果重啟成功的話會在datadir目錄下面生成mysql.sock 到時候指定即可。
問題4.查看mysql的配置文件調(diào)用順序
mysql --help|grep “my.cnf”,當(dāng)啟動mysql服務(wù)的時候,會從當(dāng)前目錄的my.cnf中去讀對應(yīng)的參數(shù),優(yōu)先級順序和輸出順序保持一致。
問題5.MySQL的pid文件介紹
MySQL pid 文件記錄的是當(dāng)前 mysqld 進程的 pid,pid 亦即 Process ID。
1、未指定
pid 文件時,pid 文件默認(rèn)名為 主機名.pid,存放的路徑在默認(rèn) MySQL 的數(shù)據(jù)目錄。通過 mysqld_safe 啟動 MySQL
時,mysqld_safe 會檢查 pid 文件,如果 pid 文件不存在,不做處理;如果文件存在,且 pid 已占用則報錯 “A
mysqld process already exists”,如果文件存在,但 pid 未占用,則刪除 pid 文件。
2、查看 MySQL 的源碼可以知道,mysqld 啟動后會通過 create_pid_file 函數(shù)新建 pid 文件,通過 getpid() 獲取當(dāng)前進程 pid 并將 pid 寫入 pid 文件。
3、因此,通過 mysqld_safe 啟動時, MySQL pid 文件的作用是:在數(shù)據(jù)文件是同一份,但端口不同的情況下,防止同一個數(shù)據(jù)庫被啟動多次。
通過 mysqld_safe 啟動時, MySQL pid 文件的作用是:在數(shù)據(jù)文件是同一份,但端口不同的情況下,防止同一個數(shù)據(jù)庫被啟動多次。
關(guān)于MySQL之my.cnf配置文件,你學(xué)廢了么?
總結(jié)
到此這篇關(guān)于MySQL之my.cnf配置文件的文章就介紹到這了,更多相關(guān)MySQL my.cnf配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL配置文件my.cnf與my.ini的區(qū)別
- Mysql my.cnf配置文件參數(shù)詳解
- MySQL 配置文件 my.cnf / my.ini 區(qū)別解析
- MySQL讀取my.cnf的順序問題詳情
- Ubuntu中MySQL的參數(shù)文件my.cnf示例詳析
- MySQL中配置文件my.cnf因權(quán)限問題導(dǎo)致無法啟動的解決方法
- mysql 查看當(dāng)前使用的配置文件my.cnf的方法(推薦)
- mysql通過my.cnf修改默認(rèn)字符集為utf-8的方法和注意事項
- MySQL修改my.cnf配置不生效的解決方法
- MySQL的my.cnf配置文件解析
相關(guān)文章
Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略
這篇文章主要介紹了Mysql?redo?log?寫入策略和binlog?寫入策略,通過本文學(xué)習(xí)可以了解redo?log的寫入策略是由InnoDB提供了innodb_flush_log_at_trx_commit參數(shù),binlog的寫入策略,write?和fsync的時機,是由參數(shù)sync_binlog控制的,需要的朋友可以參考下2022-04-04Mysql系統(tǒng)變量與狀態(tài)變量詳細(xì)介紹
這篇文章主要介紹了Mysql系統(tǒng)變量與狀態(tài)變量詳細(xì)介紹,能夠在程序運行過程中影響Mysql程序行為的變量稱之為系統(tǒng)變量,想了解更多相關(guān)內(nèi)容的小伙伴可以參考下面文章內(nèi)容2022-09-09mysql數(shù)據(jù)損壞,如何通過ibd和frm文件批量恢復(fù)數(shù)據(jù)庫數(shù)據(jù)
這篇文章主要介紹了mysql數(shù)據(jù)損壞,如何通過ibd和frm文件批量恢復(fù)數(shù)據(jù)庫數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08