MySQL中的目錄和文件
bin目錄
在 MySQL 的安裝目錄下有一個特別重要的 bin 目錄,這個目錄下存放著許多可執行文件。與其他系統的可執行文件類似,這些可執行文件都是與服務器和客戶端程序相關的。
啟動MySQL服務器程序
在 UNIX 系統中,用來啟動 MySQL 服務器程序的可執行文件有很多,大多在 MySQL 安裝目錄的 bin 目錄下。
-
mysqld
mysqld 這個可執行文件就代表著 MySOL 服務器程序,運行這個可執行文件就可以直接啟動一個服務器進程。但這個命令不常用。 -
mysqld_safe
mysqld_safe 是一個啟動腳本,它會間接的調用 mysqld,而且還順便啟動了另外一個監控進程,這個監控進程在服務器進程掛了的時候,可以幫助重啟它。另外,使用 mysqld_safe 啟動服務器程序時,它會將服務器程序的出錯信息和其他診斷信息重定向到某個文件中,產生出錯日志,這樣可以方便我們找出發生錯誤的原因。 -
mysql.server
mysql.server 也是一個啟動腳本,它會間接的調用 mysqld_safe,在調用 mysql.server 時在后邊指定start參數就可以啟動服務器程序了mysql.server start
需要注意的是,這個 mysql.server 文件其實是一個鏈接文件,它的實際文件是 support-files/mysql.server,所以如果在 bin 目錄找不到,到 support-files下去找找,而且如果你愿意的話,自行用ln命令在 bin 創建一個鏈接。
另外,我們還可以使用 mysql.server 命令來關閉正在運行的服務器程序,只要把 start 參數換成 stop 就好了:
mysql.server stop
-
mysqld_multi
其實我們一臺計算機上也可以運行多個服務器實例,也就是運行多個 MySQL 服務器進程。 mysql_multi 可執行文件可以對每一個服務器進程的啟動或停止進行監控。
客戶端程序
在我們成功啟動 MysTL 服務器程序后,就可以接著啟動客戶端程序來連接到這個服務器嘍, bin 目錄下有許多客戶端程序,比方說mysqladmin 、mysqldump 、mysqlcheck 等等。
我們常會用的是可執行文件mysql,通過這個可執行文件可以讓我們和服務器程序進程交互,也就是發送請求,接受服務器的處理結果。
- mysqladmin :執行管理操作的工具,檢查服務器配置,當前運行狀態,創建、刪除數據庫,設置新密碼。
- mysqldump 數據庫邏輯備份程序
- mysqlbackup 備份數據表、整個數據庫、所有數據庫,一般來說 mysqldump 備份、mysql 還原。
啟動選項和參數
配置參數文件
當MySQL實例啟動時,數據庫會先去讀取一個配置參數文件,用來尋找數據庫的各種文件所在的位置以及指定某些初始化參數,這些參數通常定義了某種內存結構有多大等。默認情況下,MySQL 實例會按照一定的順序在指定的位置進行讀取,用戶只需要命令mysql --help grep my.cnf 來尋找即可。
當然,也可以在啟動MySQL時,指定配置文件(非yum安裝):
這時候,就會以啟動時指定的配置文件為準。
MySQL數據庫參數文件的作用和Oracle數據庫的參數文件極其類似,不同的是,Oracle實例在啟動時若找不到參數文件,是不能進行狀態(mount)操作的。MySQL稍微有些不同,MySQL實例可以不需要參數文件,這時所有的參數值取決于編譯MySQL時指定的默認值和源代碼中指定參數的默認值。
MySQL數據庫的參數文件是以文本方式進行存儲的。可以直接通過一些常用的文本編輯軟件進行參數的修改。
參數查看和修改
可以通過命令show variable
查看數據庫中的所有參數,也可以通過 LIKE 來過濾參數名,前面查找數據庫引擎時已經展示過了。從 MySQL5.1 版本開始,還可以通過 information_schema 架構下的 GLOBAL_VARIABLES 視圖來進行查找,推薦使用命令。
show variables
,使用更為簡單,且各版本的 MySQL 數據庫都支持。
參數的具體含義還可參考MySQL官方手冊
MySQL數據庫中的參數可分為兩類:動態(dynamic)參數和靜態(static)參數。同時從作用范圍又可以分為全局變量和會話變量。
- 動態參數意味著可以在MySQL實例運行中進行更改,靜態參數說明在整個實例生命周期內都不得進行更改,就好象是只讀(read only)的。
- 全局變量(GLOBAL)影響服務器的整體操作;會話變量(SESSION/LOCAL)影響某個客戶端連接的操作。
舉個例子,用 default_storage_engine 來說明,在服務器啟動時會初始化一個名為 default_storage_engine ,作用范圍為 GLOBAL 的系統變量。之后每當有一個客戶端連接到該服務器時,服務器都會單獨為該客戶端分配一個名為 default_storage_engine ,作用范圍為 SESSION 的系統變量,該作用范圍為 SESSION 的系統變量值按照當前作用范圍為 GLOBAL 的同名系統變量值進行初始化。
可通過SET命令對動態的參數值進行修改。
SET的語法如下
-- set [global || session ] system_var_name= expr
-- 或者
-- set [@@global. || @@session.] system_var_name= expr
-- 比如:
set read_buffer_size=524288;
set session read_buffer_size=524288;
set @@global.read_buffer_size=524288;
MySQL所有動態變量的可修改范圍,可參考MySQL官方手冊的 Dynamic System Variables 相關內容
對于靜態變量,若對其進行修改,會得到類似如下錯誤