Mysql配置檔案my.cnf詳解

yantaicuiwei發表於2011-01-29

以下是Mysql資料庫伺服器配置檔案/etc/my.cnf的詳細配置。應用場合是InnoDB引擎,4CPU 32SUSE

[client]
port        = 3306
socket      = /tmp/mysql.sock
# The MySQL server
[mysqld]
bind-address = 192.168.0.11
port         = 3306
socket       = /tmp/mysql.sock
 
##設定表的預設型別。和default-storage-engine同義
default-table-type = innodb
 
#以下是網路傳輸配置
#連線程式幀聽佇列的大小
back_log = 50
 
#之前有過經驗,connections超過370的時候,執行緒的棧空間被佔滿,mysqld無法工作,所以限制為200
max_connections=200
 
#連線500次發生錯誤之後,遮蔽從該host的所有連線
max_connect_errors = 500
 
#通訊緩衝區的最大長度。包或任何生成的/中間字串的最大大小。
max_allowed_packet = 32M
 
在查詢之間將通訊緩衝區重設為該值。如果語句超出該長度,緩衝區自動擴大,直到max_allowed_packet位元組。
net_buffer_length = 8K
 
#以下是查詢最佳化
#避免外部鎖定(預設是ON). 對應variableskip_external_locking
skip-locking
 
#索引緩衝區(僅作用於MYISAM表和臨時表),決定了資料庫索引處理的速度
key_buffer_size = 10M
 
#所有執行緒開啟的表的數目(一個表使用2個檔案描述符),表數量多,就要大一些。增大該值可以增加mysqld需要的檔案描述符的數量。可以檢查Opened_tables(已經開啟的表的數量)狀態變數來檢查你是否需要增加表快取。
table_cache = 2048
 
#每個排序執行緒分配的緩衝區的大小。增加該值可以加快ORDER BYGROUP BY操作
sort_buffer_size = 5M
 
#用於完全聯接的緩衝區的大小(當不使用索引的時候使用聯接操作)
#一般情況獲得快速聯接的最好方法是新增索引。當增加索引時不可能透過增加join_buffer_size值來獲得快速完全聯接。
#將為兩個表之間的每個完全聯接分配聯接緩衝區。對於多個表之間不使用索引的複雜聯接,需要多聯接緩衝區。
join_buffer_size = 8M
 
#伺服器應快取多少執行緒以便重新使用。當客戶端斷開連線時,如果執行緒少於thread_cache_size,則客戶端的執行緒被放入快取。
#如果狀態變數Threads_created(建立用來處理連線的執行緒數)較大,你可能要增加thread_cache_size值。快取訪問率的計算方法Threads_created/Connections(試圖連線到(不管是否成功)MySQL伺服器的連線數)
thread_cache_size = 8
 
#使應用程式向執行緒系統提供需要同時執行的期望的執行緒數目的提示
thread_concurrency = 8
 
#為快取查詢結果分配的記憶體的數量,加快查詢的速度。預設值是0,即禁用查詢快取。
query_cache_size = 64M
 
#不要快取大於該值的結果,預設值是1048576(1MB)
query_cache_limit = 2M
 
#ft_min_word_lenft_max_word_len表示FULLTEXT索引的最小和最大字長
ft_min_word_len = 4
 
#每個執行緒的堆疊大小
thread_stack = 192K
 
#事務隔離級別。READ-UNCOMMITTED: 未提交讀 會出現髒讀、不可重複讀、幻讀 ( 隔離級別最低,併發效能高 ) READ-COMMITTED: 提交讀 會出現不可重複讀、幻讀問題(鎖定正在讀取的行);REPEATABLE-READ: 預設值,可重複讀 會出幻讀(鎖定所讀取的所有行) SERIALIZABLE: 序列化 保證所有的情況不會發生(鎖表)
transaction_isolation = REPEATABLE-READ
 
#聯合查詢或者view的時候,可能會建立臨時表,如果在磁碟上建的話,會導致效能低,設定此值可以一定程度上加快速度
tmp_table_size = 64M
 
#每個執行緒連續掃描時為掃描的每個表分配的緩衝區的大小,如果進行多次連續掃描,可能需要增加該值
read_buffer_size = 1M
 
#當排序後按排序後的順序讀取行時,則透過該緩衝區讀取行,避免搜尋硬碟。將該變數設定為較大的值可以大大改進ORDER BY的效能。但是,這是為每個客戶端分配的緩衝區,因此你不應將全域性變數設定為較大的值。相反,只為需要執行大查詢的客戶端更改會話變數。
read_rnd_buffer_size = 2M
 
#以下是主從同步配置
# Replication Master Server (default)
#主機是1。備機從2開始。
server-id    = 1
 
#啟動資料庫更新二進位制日誌記錄,日誌檔名字首為mysql-bin
log-bin=mysql-bin
 
#在事務過程中容納二進位制日誌SQL語句的快取大小,
#二進位制日誌快取是伺服器支援事務儲存引擎並且伺服器啟用了二進位制日誌(–log-bin選項)的前提下為每個客戶端分配的記憶體。
#如果經常使用大的,多語句事務,可以增加該值以獲得更有的效能
binlog_cache_size = 5M
 
#是否記錄慢查詢,預設OFF。用long_query_time變數的值來確定“慢查詢”。
log_slow_queries
 
#超過2Squery將記slow query日誌
long_query_time = 2
 
#沒有使用索引的查詢也作為慢速查詢記錄到慢速日誌裡
#或者用log-queries-not-using-indexes
log_long_format
 
#告訴主伺服器,如果當前的資料庫(USE選定的資料庫)db_name,不應將更新儲存到二進位制日誌中。
binlog-ignore-db = information_schema
binlog-ignore-db = cluster
binlog-ignore-db = mysql
 
#告訴從伺服器限制預設資料庫(USE所選擇)db_name的語句的複製
replicate-do-db = test1
replicate-do-db = test2
 
#跨庫更新表要用到如下配置。告訴從伺服器執行緒限制複製更新的表匹配指定的資料庫和表名模式的語句。模式可以包含‘%’和‘_’萬用字元,與LIKE模式匹配運算子具有相同的含義。要指定多個表,應多次使用該選項,每個表使用一次。該選項可以跨資料庫進行更新。
replicate-wild-do-table = test1.%
replicate-wild-do-table = test2.%
 
#SlaveMaster資料庫讀取日誌時更新新寫入日誌中 。如果只啟動log-bin 而沒有啟動log-slave-updatesSlave只記錄針對自己資料庫操作的更新
log-slave-updates
 
#以下是InnoDB引擎配置
#InnoDB 不會自己建立目錄,必須自己使用作業系統命令建立相應的目錄。檢查你的MySQL 服務程式在 datadir 目錄裡 有足夠的許可權建立檔案(mysql使用者組擁有)
#這是InnoDB表的目錄共用設定。如果沒有設定,InnoDB 將使用MySQL datadir 目錄為預設目錄。如果設定一個空字串,可以在 innodb_data_file_path 中設定絕對路徑。
innodb_data_home_dir = /data/dbdata/
 
#單獨指定資料檔案的路徑與大小。資料檔案的完整路徑由 innodb_data_home_dir 與這裡所設定值的組合。 檔案大小以 MB 單位指定。因此在檔案大小指定後必有“M”。InnoDB 也支援縮寫“G”, 1G = 1024M。從 3.23.44 開始,在那些支援大檔案的作業系統上可以設定資料檔案大小大於 4 GB。而在另一些作業系統上資料檔案必須小於 2 GB
#如果用 autoextend 選項描述最後一個資料檔案,當 InnoDB 用盡所有表自由空間後將會自動擴充最後一個資料檔案,每次增量為8MB
#InnoDB是不會注意你的OS檔案尺寸限制的, 在一些檔案系統中你可能要設定最大容量2G限制:
#innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M
#這裡應當預先建立好102048M的檔案,目前還沒有建立
innodb_data_file_path = ibdata1:2000M;ibdata2:2000M;ibdata3:2000M;ibdata4:2000M;ibdata5:2000M;ibdata6:2000M;ibdata7:2000M;ibdata8:2000M;ibdata9:2000M;ibdata10:2000M:autoextend
 
#InnoDB 日誌檔案的路徑。如果沒有明確指定將預設在 MySQL  datadir 目錄下建立兩個5 MB 大小的ib_logfile0ib_logfile1檔案。
#將日誌檔案與資料檔案分別放在不同的物理硬碟中對提高效能通常是很有益的
innodb_log_group_home_dir = /data/dbdata/
 
#主要用來儲存表結構和資料字典,表越多要求記憶體就越大
innodb_additional_mem_pool_size = 16M
 
# You can set .._buffer_pool_size up to 50 – 80 %
# of RAM but beware of setting memory usage too high
#表和索引資料的記憶體緩衝區,越大效能越高。但不能超過實體記憶體的50%。若64OS,該值可以更大
#32OS2G記憶體的限制,不能將記憶體使用設定太高, glibc 會把程式堆增長到執行緒堆疊之上,這將會使伺服器崩潰。下面的接近或超過於 2G 將會很危險:
#innodb_buffer_pool_size + key_buffer +    max_connections * (sort_buffer_size + record_buffer_size + binlog_cache_size) + max_connections * 2 MB
#每個執行緒將使用 2MB(MySQL AB 二進位制版本為 256 KB)的堆疊,在最壞的環境下還會使用 sort_buffer_size + record_buffer_size 的附加記憶體。
innodb_buffer_pool_size = 1G
 
#InnoDB 中的檔案 I/O 執行緒。 通常設定為 4
innodb_file_io_threads = 4
 
#併發執行緒。2*(核心數量+磁碟數量)
innodb_thread_concurrency = 16
 
#1表示每次事務結束都寫日誌並重新整理磁碟;2表示每次事務寫日誌但不重新整理磁碟(每秒重新整理)0(預設值)表示每秒寫日誌並重新整理磁碟。0表示最多丟失1秒的資料,但效能最好。
innodb_flush_log_at_trx_commit = 0
 
#InnoDB 將日誌寫入日誌磁碟檔案前的緩衝大小。理想值為 1M  8M。大的日誌緩衝允許事務執行時不需要將日誌儲存入磁碟而只到事務被提交(commit) 因此,如果有大的事務,設定大的日誌緩衝可以減少磁碟I/O
innodb_log_buffer_size = 8M
 
# Set .._log_file_size to 25 % of buffer pool size
#日誌檔案大小設定。增大該值可減少重新整理日誌頻率,但會延長mysql啟動和災難恢復的時間。
#日誌組中的每個日誌檔案的大小(單位 MB)。如果 n 是日誌組(innodb_log_files_in_group)中日誌檔案的數目,那麼理想的數值為 1M 至緩衝池(innodb_log_buffer_size)大小的 1/n。較大的值,可以減少重新整理緩衝池的次數,從而減少磁碟 I/O。但是大的日誌檔案意味著在崩潰時需要更長的時間來恢復資料。
innodb_log_file_size = 256M
 
#日誌組中的日誌檔案數目。InnoDB 以環型方式(circular fashion)寫入檔案。數值 3 被推薦使用
innodb_log_files_in_group = 3
 
#InnoDB行鎖導致的死鎖等待時間(預設值是50S)
innodb_lock_wait_timeout = 30
 
#是否支援分散式事務,關閉以提高效能(預設是ON)
innodb_support_xa = OFF
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
 
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
 
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout

轉載本站文章請註明,轉載自:

本文連結: 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21601207/viewspace-686491/,如需轉載,請註明出處,否則將追究法律責任。

相關文章