MySQL配置文件講解 |
發(fā)布時(shí)間: 2012/8/10 17:47:28 |
MySQL配置文件 MySQL發(fā)布的最新產(chǎn)品實(shí)際上超出了Red Hat Enterprise Linux所攜帶的版本。但是,穩(wěn)定性和開放源代碼可是很重要的因素,因此在操作系統(tǒng)上使用較早MySQL版本是有道理的。 有許多可以采用的配置文件,它們都被包含在mysql-server PRM程序中。還有一個(gè)默認(rèn)的配置文件被包含在mysql PRM程序包中。 - ·/etc/my.cnf是默認(rèn)的MySQL配置文件。應(yīng)該對(duì)這個(gè)文件配置修改。它是為學(xué)習(xí)目的而設(shè)計(jì)的。 ·my-small.cnf是為了小型數(shù)據(jù)庫而設(shè)計(jì)的。不應(yīng)該把這個(gè)模型用于含有一些常用項(xiàng)目的數(shù)據(jù)庫。 ·my-medium.cnf是為中等規(guī)模的數(shù)據(jù)庫而設(shè)計(jì)的。如果你正在企業(yè)中使用RHEL,可能會(huì)比這個(gè)操作系統(tǒng)的最小RAM需求(256MB)明顯多得多的物理內(nèi)存。由此可見,如果有那么多RAM內(nèi)存可以使用,自然可以在同一臺(tái)機(jī)器上運(yùn)行其它服務(wù)。 ·my-large.cnf是為專用于一個(gè)SQL數(shù)據(jù)庫的計(jì)算機(jī)而設(shè)計(jì)的。由于它可以為該數(shù)據(jù)庫使用多達(dá)512MB的內(nèi)存,所以在這種類型的系統(tǒng)上將需要至少1GB的RAM,以便它能夠同時(shí)處理操作系統(tǒng)與數(shù)據(jù)庫應(yīng)用程序。 ·my-huge.cnf是為企業(yè)中的數(shù)據(jù)庫而設(shè)計(jì)的。這樣的數(shù)據(jù)庫要求專用服務(wù)器和1GB或1GB以上的RAM。 這些選擇高度依賴于內(nèi)存的數(shù)量、計(jì)算機(jī)的運(yùn)算速度、數(shù)據(jù)庫的細(xì)節(jié)大小、訪問數(shù)據(jù)庫的用戶數(shù)量以及在數(shù)據(jù)庫中裝入并訪問數(shù)據(jù)的用戶數(shù)量。隨著數(shù)據(jù)庫和用戶的不斷增加,數(shù)據(jù)庫的性能可能會(huì)發(fā)生變化。 我將逐個(gè)的說明這些配置文件。如果用戶決定使用my-*.cnf文件之一,將首先需要把這個(gè)文件復(fù)制到/etc/my.cnf文件上。 由于這些原因,用戶應(yīng)該仔細(xì)觀察數(shù)據(jù)庫系統(tǒng)的性能。如果發(fā)現(xiàn)問題,可能需要增加更多的RAM,或者把數(shù)據(jù)庫遷移到一個(gè)含有附加資源(比如多個(gè)CPU)的系統(tǒng)上。 提示:數(shù)據(jù)庫變得非常大。把一個(gè)SQL數(shù)據(jù)庫目錄配置在一個(gè)專用分區(qū)上可能更有道理。雖然一個(gè)不斷增長的數(shù)據(jù)庫可能會(huì)占滿整個(gè)分區(qū),但它至少不會(huì)吞掉RHEL運(yùn)行所必需的磁盤空間。 /etc/my.cnf文件 默認(rèn)是/etc/my.cnf文件。它包含6條命令,并且這6條命令被組織在3個(gè)配置段中。這些配置段與Samba配置文件中的配置段相似,并且含有功能組名稱和相關(guān)的命令。本文將逐行的說明這個(gè)文件的默認(rèn)版本。如果用戶進(jìn)行了任何修改,將需要確保MySQL啟動(dòng)腳本(即/etc/rc.d/init.d/mysqld)中的命令一致。 [mysqld] 在這個(gè)配置段之內(nèi),將會(huì)看到與MySQL守護(hù)進(jìn)程相關(guān)的命令。 datadir=/var/lib/mysql MySQL服務(wù)器把數(shù)據(jù)庫存儲(chǔ)在由datadir變量所定義的目錄中。 Socket=/var/lib/mysql/mysql.sock MySQL套接字把數(shù)據(jù)庫程序局部的或通過網(wǎng)絡(luò)連接到MySQL客戶。 提示:MySQL被配置成使用InnoDB存儲(chǔ)器引擎。如果用戶在自己的系統(tǒng)上還沒有一個(gè)InnoDB數(shù)據(jù)庫,將需要給[mysqld]配置段添加skip-innodb語句。 [mysql.server] 在這個(gè)配置段之內(nèi),將會(huì)看到MySQL服務(wù)器守護(hù)進(jìn)程有關(guān)的命令。這個(gè)配置段的較早期版本被命名為[mysql_server]。如果使用MySQL4.X或MySQL4.X以上版本,將必須把這個(gè)配置段標(biāo)題改成[mysql_server]。當(dāng)啟動(dòng)MySQL服務(wù)時(shí),它使用這個(gè)配置段中的選項(xiàng)。 user=mysql 與MySQL服務(wù)相關(guān)聯(lián)的標(biāo)準(zhǔn)用戶名是mysql。它應(yīng)該是/etc/passwd文件的一部分;如果在這個(gè)文件中沒有發(fā)現(xiàn)它,用戶可能還沒有安裝Red Hat Enterprise Linux mysql-server RPM程序包。 basedir=/var/lib 這表示MySQL數(shù)據(jù)庫的頂級(jí)目錄。它充當(dāng)MySQL系統(tǒng)上的一個(gè)根目錄;這個(gè)數(shù)據(jù)庫中的其它目錄都是相對(duì)于這個(gè)目錄。 [safe_mysqld] 這個(gè)配置段包含MySQL啟動(dòng)腳本所引用的命令。如果使用MySQL4.X或4.X以上版本,必須把這個(gè)配置段改成[mysqld_safe]。 err-log=/var/log/mysqld.log 這是MySQL所關(guān)聯(lián)的錯(cuò)誤被發(fā)送到的這個(gè)文件。如果使用MySQL4.X或4.X以上版本,必須使用log-error指令替換這條命令。 pid-file=/var/run/mysqld/mysqld.pid 最后,pid-file指令定義MySQL服務(wù)器在運(yùn)作期間的進(jìn)程標(biāo)識(shí)符(PID)。如果MySQL服務(wù)器當(dāng)前沒有運(yùn)行,這個(gè)文件應(yīng)該不存在。 提示:用戶可以配置與用戶特定相關(guān)的MySQL配置文件;為此,只需給指定用戶主目錄中的.my.cnf隱含文件添加所選的配置命令即可。 my-samll-cnf 在本文中,將說明my-small-cnf配置文本中的所有命令。當(dāng)回顧其它MySQL樣本配置文件時(shí),將參考本文所解釋的各條命令和指令的含義。先從下面這個(gè)配置段開始分析該文件中的有效命令和指令: [client] 這個(gè)配置把指令傳遞給與MySQL服務(wù)器相關(guān)的客戶。 port=3306 MySQL所相關(guān)的標(biāo)準(zhǔn)TCP/IP端口是3306。如果需要修改這個(gè)端口號(hào)(可以增強(qiáng)安全),必須確保用于MySQL客戶與服務(wù)器的所有相應(yīng)配置文件中均修改這個(gè)號(hào)。 socket=/var/lib/mysql/mysql.sock 正像默認(rèn)的/etc/my.cnf文件中所定義的那樣,這是控制MySQL客戶與服務(wù)器間通信的標(biāo)準(zhǔn)套接字文件。 [mysqld] 當(dāng)啟動(dòng)MySQL服務(wù)器時(shí),它由[mysqld]配置段中所定義的命令來控制。 port=3306 socket=/var/lib/mysql/mysql.sock 當(dāng)然,與同一個(gè)MySQL數(shù)據(jù)庫相關(guān)的客戶與服務(wù)器需要使用相同的TCP/IP端口和套接字。 skip-locking 多個(gè)客戶可能會(huì)訪問同一個(gè)數(shù)據(jù)庫,因此這防止外部客戶鎖定MySQL服務(wù)器。這個(gè)skip-locking命令是MySQL4.X或4.X以上版本中的skip-external-locking命令。 一般來說,如果正在使用MySQL4.X或4.X上以版本,這個(gè)set-variable指令沒有必要帶有這個(gè)列表中的這些命令。 set-variable=key_buffer=16k 這個(gè)緩沖區(qū)確實(shí)很;如果一個(gè)數(shù)據(jù)庫在一個(gè)文本文件中包含不止幾百行數(shù)據(jù),它將會(huì)超載這個(gè)緩沖區(qū)的容量。這個(gè)數(shù)據(jù)庫可能不會(huì)超載一個(gè)文本文件地址簿的容量。如果這不只是一個(gè)供個(gè)人使用的數(shù)據(jù)庫,這個(gè)限額很快就會(huì)被達(dá)到。假使那樣的話,可能需要考慮與其它配置文件之一相關(guān)的那些限額。 set-variable=max_allowed_packet=1M 當(dāng)然,與一個(gè)數(shù)據(jù)庫相關(guān)的信息會(huì)增加到超出實(shí)際數(shù)據(jù)。在默認(rèn)的情況下,如果該信息在一個(gè)服務(wù)器上超過1MB以上,MySQL將會(huì)產(chǎn)生一條錯(cuò)誤信息。 set-variable=thread_stack=64k 這條指令限定用于每個(gè)數(shù)據(jù)庫線程的棧大小。默認(rèn)設(shè)置足以滿足大多數(shù)應(yīng)用。 set-variable=table_cache=4 用戶可以限定一個(gè)數(shù)據(jù)庫中打開表的數(shù)量;越小的限額(默認(rèn)值是64)適合越小規(guī)模的數(shù)據(jù)庫。 set-variable=sort_buffer=64k 在處理一個(gè)數(shù)據(jù)庫時(shí),用戶可能需要內(nèi)存中附加的緩沖區(qū)空間。 set-variable=net_buffer_length=2k 正如net_buffer_length指令所定義的,MySQL服務(wù)器還給傳入的請(qǐng)求保留了空間。 server-id=1 一般來說,如果有一個(gè)MySQL主服務(wù)器,應(yīng)該把它的server-id設(shè)置成1;應(yīng)該把MySQL從屬服務(wù)器的server-id設(shè)置成2; [mysqldump] 用戶可以在不同類型的SQL數(shù)據(jù)庫之間傳輸數(shù)據(jù),這由[mysqldump]配置段中的命令來控制。 quick quick選項(xiàng)支持較大數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)。 set-variable=max_allowed_packet=16M 當(dāng)然,用來傳輸數(shù)據(jù)庫表到其它數(shù)據(jù)庫的max_allowed_packet大于客戶與服務(wù)器之間的簡(jiǎn)單通信所使用的信息包。 [mysql] no-auto-rehash 這個(gè)配置段設(shè)置啟動(dòng)MySQL服務(wù)的條件;在這種情況下,no-auto-rehash確保這個(gè)服務(wù)啟動(dòng)得比較快。 [isamchk] [myisamchk] 像SQL這樣的關(guān)系數(shù)據(jù)庫用所謂的Indexed Sequential Access Method(索引順序存取方法,簡(jiǎn)稱ISAM)來處理。這兩個(gè)配置段中的命令是相同的;這些命令與檢查并修復(fù)數(shù)據(jù)庫表的同名命令有關(guān)。 set-variable=key_buffer=8M set-variable=sort_buffer=8M 在前面談及MySQL服務(wù)器時(shí),用戶己經(jīng)見過這些變量。它們?cè)谶@里都比較大,以便支持?jǐn)?shù)據(jù)庫的較快速檢查與修復(fù)。 [mysqlhotcopy] interactive-timeout 正如[mysqlhotcopy]配置段所指定的,在一個(gè)數(shù)據(jù)庫復(fù)制操作期間,連接會(huì)掛起。在默認(rèn)情況下,interactive-timeout變量把一個(gè)數(shù)據(jù)傳輸?shù)淖畲髸r(shí)間量設(shè)置為28800秒(8個(gè)小時(shí))。 my-medium.cnf文件 與中等數(shù)據(jù)庫相關(guān)的MySQL配置文件含有和my-small-cnf配置文件中一樣的有效配置段。在[mysqld]配置段中,下面這些命令支持較大規(guī)模的服務(wù)器數(shù)據(jù)庫: set-variable=key_buffer=16M set-variable=table_cache=64 set-variable=sort_buffer=512K set-variable=net_buffer_length=8K log-bin 一般來說,這個(gè)配置段中的命令支持服務(wù)器上的較大高速緩存與緩沖區(qū)長度。應(yīng)該看到兩條新命令。 set-variable=myisam_sort_buffer_size=8M log-bin myisam_sort_buffer_size命令允許MySQL索引數(shù)據(jù)庫,第二條命令支持二進(jìn)制日志記錄方法。 [isamchk] [myisamchk] 當(dāng)然,這兩個(gè)配置段中的緩沖區(qū)比用于數(shù)據(jù)庫傳輸?shù)木彌_區(qū)大,這個(gè)文件包含下面這些命令;它們發(fā)送消息到服務(wù)器和接收來自服務(wù)器的消息。 set-variable=read_buffer=2M set-variable=write_buffer=2M my-large.cnf文件 與較大型數(shù)據(jù)庫相關(guān)的MySQL配置文件含有和my-samll-cnf配置文件中一樣的有效配置段。在本文中,將比較my-large-cnf與my-medium-cnf樣本文件中的各條命令。在[mysqld]配置段中,下面這些命令支持較大型的服務(wù)器數(shù)據(jù)庫: set-variable=key_buffer=256M set-variable=table_cache=256 set-variable=sort_buffer=1M set-variable=myisam_sort_buffer_size=64M set-variable=net_buffer_length=8K 這個(gè)配置段中有3條附加的命令。record_buffer命令保存對(duì)一個(gè)數(shù)據(jù)庫中不同表的掃描結(jié)果。thread_cache命令對(duì)多請(qǐng)求有用;空閑線程被高速緩存起來,進(jìn)而允許新的搜索操作采用己有的線程。只要這防止搜索操作啟動(dòng)新的服務(wù)器進(jìn)程,這就能減輕系統(tǒng)上的負(fù)荷。 set-variable=record_buffer=1M set-variable=thread_cache=8 set-variable=thread_concurrency=8 thread_concurrency變量限定同時(shí)運(yùn)行的線程數(shù)量。my-large.cnf樣本文件建議用戶應(yīng)該把這個(gè)數(shù)量限定于本計(jì)算機(jī)上CPU數(shù)量的兩倍;這個(gè)特定設(shè)置相當(dāng)于4個(gè)CPU。 my-huge.cnf文件 my-huge.cnf文件含有和my-large.cnf配置文件中一樣的命令。當(dāng)然,分配給大多數(shù)指令的值比較大并適合較大型的數(shù)據(jù)庫。 正如wWw.mysql.com站點(diǎn)上所描述的,擁有大量數(shù)據(jù)庫的組織,比如:google、 Sabre和NASA都采用MySQL。雖然我們猜測(cè)這些公司所使用的命令不同于用戶在my-huge.cnf文件中所看到的命令,但這至少讓用戶對(duì) MySQL企業(yè)級(jí)數(shù)據(jù)庫有一個(gè)概念。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |