程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL配置文件my.cnf

MySQL配置文件my.cnf

編輯:關於MYSQL數據庫
MySQL發布的最新產品實際上超出了Red Hat Enterprise Linux所攜帶的版本。但是,穩定性和開放源代碼可是很重要的因素,因此在操作系統上使用較早MySQL版本是有道理的。

  有許多可以采用的配置文件,它們都被包含在mysql-server PRM程序中。還有一個默認的配置文件被包含在MySQL PRM程序包中。

  配置MySQL服務器是一個豐富而復雜的工作。在本文中,我只能膚淺的說一下各種選項。可以使用的MySQL配置文件共有5個。最後4個位於/usr/share/doc/MySQL-server-*/目錄中。

  ·/etc/my.cnf是默認的MySQL配置文件。應該對這個文件配置修改。它是為學習目的而設計的。

  ·my-small.cnf是為了小型數據庫而設計的。不應該把這個模型用於含有一些常用項目的數據庫。

  ·my-medium.cnf是為中等規模的數據庫而設計的。如果你正在企業中使用RHEL,可能會比這個操作系統的最小RAM需求(256MB)明顯多得多的物理內存。由此可見,如果有那麼多RAM內存可以使用,自然可以在同一台機器上運行其它服務。

  ·my-large.cnf是為專用於一個SQL數據庫的計算機而設計的。由於它可以為該數據庫使用多達512MB的內存,所以在這種類型的系統上將需要至少1GB的RAM,以便它能夠同時處理操作系統與數據庫應用程序。

  ·my-huge.cnf是為企業中的數據庫而設計的。這樣的數據庫要求專用服務器和1GB或1GB以上的RAM。

  這些選擇高度依賴於內存的數量、計算機的運算速度、數據庫的細節大小、訪問數據庫的用戶數量以及在數據庫中裝入並訪問數據的用戶數量。隨著數據庫和用戶的不斷增加,數據庫的性能可能會發生變化。

  我將逐個的說明這些配置文件。如果用戶決定使用my-*.cnf文件之一,將首先需要把這個文件復制到/etc/my.cnf文件上。

  由於這些原因,用戶應該仔細觀察數據庫系統的性能。如果發現問題,可能需要增加更多的RAM,或者把數據庫遷移到一個含有附加資源(比如多個CPU)的系統上。

  提示:數據庫變得非常大。把一個SQL數據庫目錄配置在一個專用分區上可能更有道理。雖然一個不斷增長的數據庫可能會占滿整個分區,但它至少不會吞掉RHEL運行所必需的磁盤空間。

  /etc/my.cnf文件

  默認是/etc/my.cnf文件。它包含6條命令,並且這6條命令被組織在3個配置段中。這些配置段與Samba配置文件中的配置段相似,並且含有功能組名稱和相關的命令。本文將逐行的說明這個文件的默認版本。如果用戶進行了任何修改,將需要確保MySQL啟動腳本(即/etc/rc.d/init.d/MySQLd)中的命令一致。

  [MySQLd]

  在這個配置段之內,將會看到與MySQL守護進程相關的命令。

  datadir=/var/lib/MySQL

  MySQL服務器把數據庫存儲在由datadir變量所定義的目錄中。

  Socket=/var/lib/mysql/MySQL.sock

  MySQL套接字把數據庫程序局部的或通過網絡連接到MySQL客戶。

  提示:MySQL被配置成使用InnoDB存儲器引擎。如果用戶在自己的系統上還沒有一個InnoDB數據庫,將需要給[MySQLd]配置段添加skip-innodb語句。

  [MySQL.server]

  在這個配置段之內,將會看到MySQL服務器守護進程有關的命令。這個配置段的較早期版本被命名為[mysql_server]。如果使用MySQL4.X或MySQL4.X以上版本,將必須把這個配置段標題改成[mysql_server]。當啟動MySQL服務時,它使用這個配置段中的選項。

  user=MySQL

  與MySQL服務相關聯的標准用戶名是mysql。它應該是/etc/passwd文件的一部分;如果在這個文件中沒有發現它,用戶可能還沒有安裝Red Hat Enterprise Linux MySQL-server RPM程序包。

  basedir=/var/lib

  這表示MySQL數據庫的頂級目錄。它充當MySQL系統上的一個根目錄;這個數據庫中的其它目錄都是相對於這個目錄。

  [safe_MySQLd]

  這個配置段包含MySQL啟動腳本所引用的命令。如果使用MySQL4.X或4.X以上版本,必須把這個配置段改成[MySQLd_safe]。

  err-log=/var/log/MySQLd.log

  這是MySQL所關聯的錯誤被發送到的這個文件。如果使用MySQL4.X或4.X以上版本,必須使用log-error指令替換這條命令。

  pid-file=/var/run/mysqld/MySQLd.pid

  最後,pid-file指令定義MySQL服務器在運作期間的進程標識符(PID)。如果MySQL服務器當前沒有運行,這個文件應該不存在。

  提示:用戶可以配置與用戶特定相關的MySQL配置文件;為此,只需給指定用戶主目錄中的.my.cnf隱含文件添加所選的配置命令即可。

  my-samll-cnf

  在本文中,將說明my-small-cnf配置文本中的所有命令。當回顧其它MySQL樣本配置文件時,將參考本文所解釋的各條命令和指令的含義。先從下面這個配置段開始分析該文件中的有效命令和指令:

  [clIEnt]

  這個配置把指令傳遞給與MySQL服務器相關的客戶。

  port=3306

  MySQL所相關的標准TCP/IP端口是3306。如果需要修改這個端口號(可以增強安全),必須確保用於MySQL客戶與服務器的所有相應配置文件中均修改這個號。

  socket=/var/lib/mysql/MySQL.sock

  正像默認的/etc/my.cnf文件中所定義的那樣,這是控制MySQL客戶與服務器間通信的標准套接字文件。

  [MySQLd]

  當啟動MySQL服務器時,它由[MySQLd]配置段中所定義的命令來控制。

  port=3306

  socket=/var/lib/mysql/MySQL.sock

  當然,與同一個MySQL數據庫相關的客戶與服務器需要使用相同的TCP/IP端口和套接字。

  skip-locking

  多個客戶可能會訪問同一個數據庫,因此這防止外部客戶鎖定MySQL服務器。這個skip-locking命令是MySQL4.X或4.X以上版本中的skip-external-locking命令。

  一般來說,如果正在使用MySQL4.X或4.X上以版本,這個set-variable指令沒有必要帶有這個列表中的這些命令。

  set-variable=key_buffer=16k

  這個緩沖區確實很小;如果一個數據庫在一個文本文件中包含不止幾百行數據,它將會超載這個緩沖區的容量。這個數據庫可能不會超載一個文本文件地址簿的容量。如果這不只是一個供個人使用的數據庫,這個限額很快就會被達到。假使那樣的話,可能需要考慮與其它配置文件之一相關的那些限額。

  set-variable=max_allowed_packet=1M

  當然,與一個數據庫相關的信息會增加到超出實際數據。在默認的情況下,如果該信息在一個服務器上超過1MB以上,MySQL將會產生一條錯誤信息。

  set-variable=thread_stack=64k

  這條指令限定用於每個數據庫線程的棧大小。默認設置足以滿足大多數應用。

  set-variable=table_cache=4

  用戶可以限定一個數據庫中打開表的數量;越小的限額(默認值是64)適合越小規模的數據庫。

  set-variable=sort_buffer=64k

  在處理一個數據庫時,用戶可能需要內存中附加的緩沖區空間。

  set-variable=net_buffer_length=2k

  正如net_buffer_length指令所定義的,MySQL服務器還給傳入的請求保留了空間。

  server-id=1

  一般來說,如果有一個MySQL主服務器,應該把它的server-id設置成1;應該把MySQL從屬服務器的server-id設置成2;

  [MySQLdump]

  用戶可以在不同類型的SQL數據庫之間傳輸數據,這由[MySQLdump]配置段中的命令來控制。

  quick

  quick選項支持較大數據庫的轉儲。

  set-variable=max_allowed_packet=16M

  當然,用來傳輸數據庫表到其它數據庫的max_allowed_packet大於客戶與服務器之間的簡單通信所使用的信息包。

  [MySQL]

  no-auto-rehash

  這個配置段設置啟動MySQL服務的條件;在這種情況下,no-auto-rehash確保這個服務啟動得比較快。

  [isamchk]

  [myisamchk]

  像SQL這樣的關系數據庫用所謂的Indexed Sequential Access Method(索引順序存取方法,簡稱ISAM)來處理。這兩個配置段中的命令是相同的;這些命令與檢查並修復數據庫表的同名命令有關。

  set-variable=key_buffer=8M

  set-variable=sort_buffer=8M

  在前面談及MySQL服務器時,用戶己經見過這些變量。它們在這裡都比較大,以便支持數據庫的較快速檢查與修復。

  [MySQLhotcopy]

  interactive-timeout

  正如[MySQLhotcopy]配置段所指定的,在一個數據庫復制操作期間,連接會掛起。在默認情況下,interactive-timeout變量把一個數據傳輸的最大時間量設置為28800秒(8個小時)。

  my-medium.cnf文件

  與中等數據庫相關的MySQL配置文件含有和my-small-cnf配置文件中一樣的有效配置段。在[MySQLd]配置段中,下面這些命令支持較大規模的服務器數據庫:

  set-variable=key_buffer=16M

  set-variable=table_cache=64

  set-variable=sort_buffer=512K

  set-variable=net_buffer_length=8K

  log-bin

  一般來說,這個配置段中的命令支持服務器上的較大高速緩存與緩沖區長度。應該看到兩條新命令。

  set-variable=myisam_sort_buffer_size=8M

  log-bin

  myisam_sort_buffer_size命令允許MySQL索引數據庫,第二條命令支持二進制日志記錄方法。

  [isamchk]

  [myisamchk]

  當然,這兩個配置段中的緩沖區比用於數據庫傳輸的緩沖區大,這個文件包含下面這些命令;它們發送消息到服務器和接收來自服務器的消息。

  set-variable=read_buffer=2M

  set-variable=write_buffer=2M

  my-large.cnf文件

  與較大型數據庫相關的MySQL配置文件含有和my-samll-cnf配置文件中一樣的有效配置段。在本文中,將比較my-large-cnf與my-medium-cnf樣本文件中的各條命令。在[MySQLd]配置段中,下面這些命令支持較大型的服務器數據庫:

  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

  這個配置段中有3條附加的命令。record_buffer命令保存對一個數據庫中不同表的掃描結果。thread_cache命令對多請求有用;空閒線程被高速緩存起來,進而允許新的搜索操作采用己有的線程。只要這防止搜索操作啟動新的服務器進程,這就能減輕系統上的負荷。

  set-variable=record_buffer=1M

  set-variable=thread_cache=8

  set-variable=thread_concurrency=8

  thread_concurrency變量限定同時運行的線程數量。my-large.cnf樣本文件建議用戶應該把這個數量限定於本計算機上CPU數量的兩倍;這個特定設置相當於4個CPU。

  my-huge.cnf文件

  my-huge.cnf文件含有和my-large.cnf配置文件中一樣的命令。當然,分配給大多數指令的值比較大並適合較大型的數據庫。

  正如ww.mysql.com站點上所描述的,擁有大量數據庫的組織,比如:google、Sabre和NASA都采用MySQL。雖然我們猜測這些公司所使用的命令不同於用戶在my-huge.cnf文件中所看到的命令,但這至少讓用戶對MySQL企業級數據庫有一個概念。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved