本文參考自mysql 5.5的官方文檔,說明mysql啓動時用到的關鍵配置文件及簡要說明html
Mysql 配置說明:mysql
一、 mysqld是MySQL server,能夠經過命令行參數,或者配置文件,或者同時使用兩個地方一塊兒配置sql
二、 系統變量,能夠在啓動文件中配置。shell
三、 系統狀態變量。包括各類內置的計數器,運行時操做的統計信息等緩存
四、 設置sql modesession
五、 Server關閉過程。socket
系統的默認配置說明:性能
一、 mysql默認提供了示例配置文件命令行
a) my-small.cnf日誌
b) my-medium.cnf
c) my-large.cnf
d) my-huge.cnf
二、 配置文件中各個組的生效範圍
a) mysqld從配置文件中的[mysqld]和[server]組下讀出參數信息,在啓動時生效。
b) mysqld_safe從[mysqld] [server] [mysqld_safe]和[safe_mysqld]讀出信息
c) mysql.server從[mysqld]和[mysql.server]讀出信息
三、 嵌入式MySQL server(embedded MySQL server)一般從[server] [embedded]和[xxxxx_SERVER]讀信息,xxxxx是嵌入的程序名稱
四、 一些控制緩衝區或者緩存大小的參數,系統會根據平臺或者默認限制狀況,對設定的值作出一些調整,好比若是將一個最小爲1024的參數設爲0,系統會自動調整爲1024.
五、 默認狀況下,緩衝區、長度或者棧大小的長度單位都是字節
六、 默認狀況下,與路徑有關的默認值是配置的數據文件下的。例如數據文件目錄爲 /var/mysql/data
,其它參數的路徑給出的是相對路徑,則其它參數則位於目錄 /var/mysql/data
下
七、 系統變量修改後,不會對當前鏈接使用的session變量生效,包括執行set global變量的session。
在一臺機器上啓動多個MySQL實例:
啓動多個實例用的能夠是不一樣版本的二進制文件,也能夠是同一個二進制文件,只須要保證一些參數保持互不相同,已避免可能的實例間的衝突。這些參數能夠設置在啓動命令行參數中,也能夠寫在配置文件裏,或者經過設置環境變量實現。
一、 啓動一個實例最主要的資源是文件目錄,每一個實例須要有不一樣的文件目錄,使用 --datadir=
path
選項來配置。
二、 --port控制每一個實例有單獨的端口號
三、 --socket=path控制Unix socket文件路徑
四、 --pid-file=file_name記錄server進程 id的文件
五、 與log有關的參數也須要單獨配置。將不一樣實例的日誌文件配置在不一樣的硬盤上能夠得到更好的性能。
六、 --tmpdir=path 不一樣實例儘可能部署在不一樣路徑下。存放臨時文件。
七、 --basedir=path 不一樣的實例配置不一樣的basedir後,每一個實例自動的在該目錄下建立文件目錄,日誌文件,pid文件。這種狀況下,每一個實例只需在單獨配置端口和socket文件便可。
八、 若是是經過tar文件部署不一樣的MySQL,經過mysqld_safe啓動時,只需配置socket文件和port文件,mysqld_safe會自動的建立合適的basedir並將它傳遞給mysqld
九、 --defaults-file 只從配置文件中讀取配置(命令行中參數無效)。能夠在啓動多實例時使用。
建立多個數據文件目錄的方法:
一、 新建的方式,狀態與原目錄一致,包含默認的MySQL帳號,但不包含用戶信息
二、 經過copy已有數據文件的方式
a) 這種方式下,全部MySQL帳號和數據信息都會複製
b) 複製前須要中止實例,保證全部的信息可以寫入磁盤
c) 複製並修改配置文件my.cnf,包括配置新的數據文件目錄,綁定的端口號,使用的socket文件和pid信息機可能的log目錄
三、 使用新配置文件啓動新的實例
啓動多個實例:
一、 經過mysqladmin查看variables,確認新的實例可使用的參數
二、 使用mysql_safe –defaults-file=file_path啓動各自的實例
查看已經啓動的實例中的變量的命令:
shell> mysqladmin --host=host_name --port=port_number variables
啓動方式及my.cnf內部說明,參考:http://dev.mysql.com/doc/refman/5.5/en/mysqld-multi.html
示例:
一、使用選項[mysqld17] 啓動一個單獨的實例
shell> mysqld_multi start 17
二、使用選項[mysqld8] 和 [mysqld10] - [mysqld13]中止多個實例
shell> mysqld_multi stop 8,10-13
說明:
選項 [mysqld_multi] 只是呈現mysqld_multi本身使用,選項 [mysqldN] 傳遞給指定的mysqld實例使用。