1. 程式人生 > >Mysql-my-innodb-heavy-4G.cnf配置文件註解

Mysql-my-innodb-heavy-4G.cnf配置文件註解

mysql

Mysql-同Nginx等一樣具備多實例的特點,簡單的講就是在一臺服務器上同時開啟多個不同的服務端口(3306,3307)同時運行多個Mysql服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。這些Mysql多實例公用一套Mysql安裝程序,使用不同的my.conf配置文件、啟動程序和數據文件。

以下是主配文件以及單實例配置文件的註解

cat my-innodb-heavy-4G.cnf 
#BEGIN CONFIG INFO  #開始配置信息
#DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries #描述:4GB內存, InnoDB, ACID, 幾個連接數, heavy查詢
#TYPE: SYSTEM #類型:系統
#END CONFIG INFO #結束配置信息

#
# This is a MySQL example config file for systems with 4GB of memory  
#這是4GB內存系統-主要運行只有 InnoDB 表的 MySQL 並使用幾個連接數執行復雜的查詢-的一個MySQL實例配置文件
# running mostly MySQL using InnoDB only tables and performing complex 
#主要運行MySQL,僅使用InnoDB表和執行復雜操作
# queries with few connections. 
#查詢連接很少
# 
# MySQL programs look for option files in a set of 
#MySQL程序在一組中查找選項文件
# locations which depend on the deployment platform. 
#位置取決於部署平臺
# You can copy this option file to one of those 
#你可以將這個選項文件復制到其中之一
# locations. For information about these locations, see: 
#有關這些位置的信息,請參閱:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports. 
#在這個文件中,您可以使用程序支持的所有長選項。
# If you want to know which options a program supports, run the program 
#如果您想知道程序支持哪些選項,請運行該程序
# with the "--help" option. 
#用“--help”選項。
#
# More detailed information about the individual options can also be
# found in the manual. #有關各個選項的更多詳細信息也可以在手冊中找到。
#

#

#下面的選項將被MySQL客戶端應用程序讀取。請註意,只保證MySQL發布的客戶端應用程序。
如果你想要自己的MySQL客戶端程序 遵守這些值,則需要將其指定為在一個選項 
#MySQL客戶端庫初始化。

[client] #客戶端
#password   = [your_password]
port        = 3306  #客戶端服務端口
socket      = /application/mysql-5.5.32/tmp/mysql.sock 

# *** Application-specific options follow here ***

#
# The MySQL server #server 端
#
[mysqld]

# generic configuration options #通用配置選項
port        = 3306 #Mysql服務運行時端口
socket      = /application/mysql-5.5.32/tmp/mysql.sock
     #sock文件是在Linux、Unix環境下特有的,用戶在Linux/Unix環境下客戶端連接可以不通過TCP/IP網絡而直接使用unix. socket連接mysql

     #back_log是操作系統可以保持的連接數偵聽隊列,在MySQL連接管理器線程之前
     處理它們。如果你有非常高的連接速度和經驗“連接被拒絕”錯誤,您可能需要增加此值。檢查您的OS文檔以獲取此參數的最大值。試圖設置back_log高於您的操作系統限制。將不起作用

back_log = 50 

     #back_log參數的值,在Mysql暫時停止響應新請求之前,短時間內的多個請求可以被存在堆棧中,如果系統在短時間內有很多連接,則需要增加該參數的值,該參數值指定到來的TCP/IP連接的監聽隊列的大小。不同的操作
     系統在這個隊列的大小上有自己的限制。如果試圖將back_log設置高於操作系統的限制將是無效,其默認值為50.對於Linux系統而言,推薦設置小於512的整數值

     #不要在TCP/IP端口上監聽。這可以是一種安全的機制。如果所有進程都需要連接到mysqld運行,則增強。
     在同一個主機上。所有與mysqld的交互都必須通過Unix進行。
     套接字或命名管道,註意,在Windows上不啟用命名管道,使用此選項。(通過“啟用-命名管道”選項)將使mysqld無效!
#skip-networking

     #MySQL服務器的並發會話的最大數量。允許的。其中一個連接將為用戶保留。超級特權,允許管理員登錄,
     即使。連接限制已經達到極限。
max_connections = 100

     # 每個主機允許的最大錯誤數量。 如果達到這個限制,主機將被阻止連接到MySQL服務器,
     直到“FLUSH HOSTS”已運行或服務器已重新啟動。 無效
     在連接階段輸入密碼和其他錯誤。增加這個值。請參見“aborted_connect”狀態變量,
     全局計數器。

max_connect_errors = 10
     #max_connect_errors設置每個主機的連接請求異常中斷的最大次數,當超過該次數,
     MySQL服務器將禁止host的連接請求,直到MySQL服務器重啟或通過flush hosts命令清空此host的相關信息

table_open_cache = 2048
     #table_open_cache設置表告訴緩存的數目。每個連接進行,都會至少打開一個表緩存。
     因此,table_cache的大小英語max_connections的設置有關。例如,對於200個並行運行的連接,
     應該讓表的緩存至少有200xN,這裏N是應用可以執行的查詢的一個聯接種表的最大數量,此外還需要為臨時表和文件保留一些額外的文件描述符

max_allowed_packet = 16M

binlog_cache_size = 1M
     #binlog_cache_size在一個事務中binlog為了記錄sql狀態所持有的cache大小,如果你經常使用大的,多聲明的事務,
     可以增加此值來獲取更大的性能,所有從事務來的狀態都被緩沖在binlog緩沖中,然後再提交後一次性寫入到binlog中,
     如果事務比此值大,會使用磁盤上的臨時文件來替代,此緩沖在每個鏈接的事務第一次更新狀態時被創建

max_heap_table_size = 64M
     #獨立的內存表所允許的最大容量

read_buffer_size = 2M
     #read_buffer_size讀查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每個鏈接獨享  

read_rnd_buffer_size = 16M
     #read_rnd_buffer_size設置進行隨機讀的時候使用的緩沖區。此參數和read_buffer_size所設置的Buffer相反,一個是順序讀的時候使用,
     一個是隨機讀的時候使用。但是兩者都是針對線程的設置,每個線程都可以產生兩種Buffer中的任何一個。默認值是256KB,最大值4GB

sort_buffer_size = 8M
     #設置查詢排序時所能使用的緩沖區大小,系統默認大小為8MB
     註意:該參數對應的分配內存是每個連接獨占的,如果有100個鏈接,那麽實際分配的總排序緩沖區大小為100*6=600MB,所以對於在4GB左右的服務器來說,推薦將其設置為6MB~8MB

join_buffer_size = 8M
     #聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每個連接獨享

thread_cache_size = 8
     #設置Thread Cache池中可以緩存的連接線程最大數量,可設置0~16384,默認為8,這個值表示可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那麽客戶端的線程江北放到緩存中;
     如果線程重新被請求,那麽請從緩存中讀取,如果緩存中是空的或者是新的請求,那麽這個線程將被重新創建,如果有很多線程,增加這個值可以改善系統性能。通過比較Connections和Threads_created狀態的變量,
     可以看到這個變量的作用。1GB內存我們配置為8,2GB內存我們配置為16,3GB內存我們配置32,4GB或4GB以上我們給此值為64或更大的值

thread_concurrency = 8
     #該參數取值為服務器邏輯CPU數量x2,在本例中,服務器有兩個物理CPU,而每個物理CPU又支持H.T超線程,所以實際取值為4 x 2 = 8.這也是雙核主流服務器的配置

query_cache_size = 64M
     #指定MySQL查詢緩沖區的大小,可以通過MySQL控制臺觀察,如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖區不夠的情況,如果Qcache_hits的值非常大,則表明查詢緩沖區使用得非常頻繁。
     另外如果改值較小反而會影響效率,那麽可以考慮不用查詢緩沖,對於Qcache_free_blocks,如果該值非常大,則表明緩沖區中碎片很多。

query_cache_limit = 2M
     #只有小於此設置值的結果才會被緩存

ft_min_word_len = 4
     #如果果是英文默認值是比較合理的,但是中文絕大部分都是2個字符,這就導致小於4個字的詞不能被索引,全文索引功能就形同虛設了

default-storage-engine = MYISAM
     #如果在創建表的語句中沒有指定,當創建一個新表時所使用的默認表類型

thread_stack = 192K
     #設置MySQL每個線程的堆棧大小,默認值足夠大,可滿足普通操作。可設置範圍為128KB至4GB,默認為192kb

transaction_isolation = REPEATABLE-READ
     #數據庫隔離級別
      READ UNCOMMITTED=讀取未提交內容
      READ COMMITTED=讀取提交內容
      REPEATABLE READ=可重讀
      SERIALIZABLE=可串行化

tmp_table_size = 64M
     #設置內存臨時表最大字號,如果超過該值,則會將臨時表寫入磁盤,其範圍1kb指4GB

log-bin=mysql-bin
binlog_format=mixed
     #表示開啟binlog日誌   

slow_query_log
     #記錄慢查詢,慢查詢是指消耗超過“long_query_time”中定義的總時間的查詢,如果“ log_short_format”沒有啟用,不使用索引的查詢。

long_query_time = 2
     #記錄慢查詢的時間,所有超過該時間的查詢都將被視為緩慢的。

# ***  Replication related settings 

server-id = 1
    #1到32之間的唯一服務器標識號,如果是主從或多實例ID號不能相同

key_buffer_size = 32M
     #指定用於索引的緩沖區大小,增加它可以得到更好的索引處理性能。對於內存在4GB左右的服務器來說,此參數可以設置256MGB或384MB

bulk_insert_buffer_size = 64M
     #如果經常性的需要使用批量插入的特殊語語句來插入數據,可以適當調整參數至16MB~32MB,建議8M,設置0則禁用該優化

myisam_sort_buffer_size = 128M
     #當MySQL需要REPAIR、OPTIMEIZE、ALTER表語句重建索引,以及LOAD DATA INFILE到一個空表時,該緩沖區被分配。可設置範圍48tytes至4GB

myisam_max_sort_file_size = 10G
     #當重新建索引(REPAIR,ALTER,TABLE,或者LOAD,DATA,TNFILE)時,MySQL被允許使用臨時文件的最大值。

myisam_repair_threads = 1
     #如果一個表擁有超過一個索引,MyISAM可以通過並行排序使用超過一個線程去修復

myisam_recover
     #自動檢查和修復沒有正確關閉的MyISAM表

innodb_file_io_threads = 4
     #InnoDB中的文件I/O線程,通常設置為4。如果是windows可以設置更大的值以提高磁盤I/O
innodb_additional_mem_pool_size = 16M
     #用來設置InnoDB存儲的數據目錄信息和其他內部數據結構的內存池大小,應用程序裏的表越多,你需要在這裏分配越多的內存。
     對於一個相對穩定的應用,這個參數的大小也是相對應的。如果InnoDB用光了這個池內的內存,InnoDB開始從操作系統分配內存,
     並且往MySQL錯誤日誌寫警告信息。當發現錯誤日誌中已經有相關的警告信息時,就應該適當的增加該參數的大小。

innodb_buffer_pool_size = 2G
     #InnoDB使用一個緩沖池來保存索引和原始數據,設置越大,在存取裏面數據時需要的磁盤I/O越少。強烈建議不要講InnoDB的buffer pool值配置為物理內存的50%-80%,應根據具體環境而定。

innodb_data_file_path = ibdata1:10M:autoextend
     #設置配置一個可擴展大小的尺寸為10M的單獨未見,名為ibdata1沒有給出文件的位置,所以默認是在MySQL的數據目錄內,還可以自己制定數量,autoextend代表自增

innodb_write_io_threads = 8
     #此處代表MySQL Innodb對I/O讀寫線程的支持,配太多也沒用,因為IO能力有限,需要配合特殊機型
innodb_read_io_threads = 8
     #在MySQL5.1.x版本中使用參數:innodb_file_io_threads:作用後臺線程處理數據頁上的讀寫IO請求數量;而在
     MySQL5.5.x中用innodb_read_io_threads和Innodb_write_io_threads取代此版本之前參數,該參
     數值之和=2*cpu個數*cpu核數;如果你的系統讀>寫,可以設置innodb_read_io_threads值相對大點;反之,也可以.

#innodb_force_recovery=1

innodb_thread_concurrency = 16
     #innoDB內核裏面允許線程數量,最佳的高度取決於應用程序、硬件以及操作系統的調讀屬性。太高的值可能導致線程顛簸

innodb_flush_log_at_trx_commit = 1
     #如果設置為1,InnoDB在每次提交(提供完整的 ACID行為)時刷新事務到磁盤。
     如果你想安全地進行折中,並且你正在運行小事務,你可以為0或者2來減少日誌的磁盤I/O。
     值0代表只被寫入到日誌文件,並且日誌文件大約每1秒刷新到磁盤
     值2代表日誌在每次提交時被寫入到日誌,但是日誌文件知識大約每秒一次刷新到磁盤

innodb_log_buffer_size = 8M
     #InnoDB緩沖日誌數據所使用的緩沖區大小,一旦它滿了,InnoDB將它刷新到磁盤。

innodb_log_file_size = 256M
     #一個日誌組中每個日誌文件的大小,你可以設置日誌的聯合大小為你緩沖池大小的25%-100%,
     以避免對日誌文件不必要的緩沖池動態刷新重寫

innodb_log_files_in_group = 3
     #日誌組中文件的總數,通常值為2-3就已經足夠

innodb_max_dirty_pages_pct = 90
     #InnoDB緩沖池中允許的臟頁面的最大百分比,如果它達到了,InnoDB將開始積極清理,以免消耗完所有的幹凈頁面,這是一個軟限制,不保證能夠一直保持

innodb_lock_wait_timeout = 120
     ##InnoDB事務被回滾之前可以等待一個鎖定的超時描述,InnoDB在它自己的鎖定表中自動檢測事務死鎖並且回滾事務。InnoDB用local tables語句註意到鎖表設置

[mysqldump]

quick

max_allowed_packet = 16M
     #設定在網絡傳輸中一次消息量的最大值,最大值是1GB,必須設置為1024的倍數,單位為字節。
[mysql]
no-auto-rehash

# Only allow UPDATEs and DELETEs that use keys.
     #只允許使用鍵值的updates和delete
#safe-updates

[myisamchk]
key_buffer_size = 512M
     #指定用於索引的緩沖區大小,增加它可以更好的索引處理性能,對於內存4GB左右的服務器來說,該參數可以設置為256MB或384MB
sort_buffer_size = 512M
     #設置查詢排序時所能使用的緩沖區大小。
     註意:該參數對應的分配內存是每個連接獨占的,如果有100個鏈接,那麽實際上分配的總排序緩沖區大小為100x6=600MB,所以對於在4GB左右的服務器來說推薦將其設置6MB~8MB
read_buffer = 8M

write_buffer = 8M

[mysqlhotcopy]
interactive-timeout

[mysqld_safe]
#Increase the amount of open files allowed per process. Warning: Make
#sure you have set the global system limit high enough! The high value
#is required for a large number of opened tables
open-files-limit = 8192
     #增加每次處理所允許打開的文件數量,確保你已經設置全局系統限制足夠高。對於一個大數量的打開表,高值是必須的

【my.cnf】-配置文件註解

[client]                   ####客戶端  
port  = 3306               ####mysql客戶端連接時的默認端口號  
socket  = /application/mysql-5.5.32/tmp/mysql.sock  
[mysqld]  
port  = 3306               ####mysql服務器監聽的默認端口  
socket  = /application/mysql-5.5.32/tmp/mysql.sock  
back_log = 50              ####是指保持在操作系統監聽隊列的連接數量,即在MySQL連接管理器線程處理他們之前的連接數量  
max_connections = 100      ####MySQL允許的並發會話的最大數量  
max_connect_errors = 10    ####每個主機允許的最大錯誤數量  
table_open_cache = 2048    ####所有線程打開表的數字,文件描述符的大小  
max_allowed_packet = 16M   ####服務器一次能處理的最大的查詢包的值,也是服務器程序能夠處理的最大查詢  
binlog_cache_size = 1M     ####在一個事務中,二進制日誌能夠處理SQL語句的緩存的最大數字,如果你經常使用復雜語句的事務,你可以增大這個值獲得更好的性能,事務中所有的語句都會被緩存到binlog中並且一次性的提交後立刻寫入二進制日誌中。如果處理的事務大於這個值,磁盤上的臨時文件被代替使用,這個緩沖會在在事務中第一次有更改狀態時,被分配的每個鏈接上。  
max_heap_table_size = 64M  ####獨立的內存表所允許的最大容量  
read_buffer_size = 2M      ####MySql讀入緩沖區大小。  
read_rnd_buffer_size = 16M ####是MySql的隨機讀緩沖區大小。  
sort_buffer_size = 8M      #### 排序緩沖被用來處理類似ORDER BY以及GROUP BY隊列所引起的排序  
join_buffer_size = 8M      ####此緩沖被使用來優化全聯合(full JOINs 不帶索引的聯合).  
thread_cache_size = 8      ####我們在cache中保留多少線程用於重用  
thread_concurrency = 8     ####此允許應用程序給予線程系統一個提示在同一時間給予渴望被運行的線程的數量.  
query_cache_size = 64M     ####查詢緩沖的大小。查詢緩沖常被用來緩沖 SELECT 的結果並且在下一次同樣查詢的時候不再執行直接返回結果.  
query_cache_limit = 2M     ####只有小於此設定值的結果才會被緩沖  
ft_min_word_len = 4        #### 被全文檢索索引的最小的字長.  
default-storage-engine = MYISAM        ####當創建新表時作為默認使用的表類型  
thread_stack = 192K                    ####線程使用的堆大小. 此容量的內存在每次連接時被預留  
transaction_isolation = REPEATABLE-READ  
tmp_table_size = 64M                   ####內部(內存中)臨時表的最大大小  
log-bin=mysql-bin                      ####打開二進制日誌功能.  
binlog_format=mixed                    ####設定記錄二進制日誌的格式,有三種格式,基於語句 statement、 基於行 row、 混合方式 mixed  
slow_query_log                         ####記錄慢查詢,  
long_query_time = 2                    ####所有的超過這個參數時間的請求將被作為慢查詢  
server-id = 1                          ####唯一的服務標識號,它的取值在1到 2^32-1之間,這個值在主服務器和從服務器是被要求設置的。他的默認參數是1,如果是主機不需要設置,但是如果忽略此選項,MySQL不會作為master生效.   
key_buffer_size = 32M                  ####關鍵詞緩沖的大小, 一般用來緩沖MyISAM表的索引塊.  
bulk_insert_buffer_size = 64M          ####MyISAM 使用特殊的類似樹的cache來使得突發插入,(這些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA INFILE) 更快. 此變量限制每個進程中緩沖樹的字節數.   
myisam_sort_buffer_size = 128M         ####當需要對於執行REPAIR, OPTIMIZE, ALTER 語句重建索引時,MySQL會分配這個緩存,以及LOAD DATA INFILE會加載到一個新表,它會根據最大的配置認真的分配的每個線程。   
myisam_max_sort_file_size = 10G        ####當重新建索引(REPAIR,ALTER,TABLE,或者LOAD,DATA,TNFILE)時,MySQL被允許使用臨時文件的最大值。  
myisam_repair_threads = 1              ####如果一個表擁有超過一個索引, MyISAM 可以通過並行排序使用超過一個線程去修復他們.  
myisam_recover                         ####自動檢查和修復沒有適當關閉的 MyISAM 表.  
innodb_additional_mem_pool_size = 16M  ####附加的內存池被InnoDB用來保存 metadata 信息  
innodb_buffer_pool_size = 2G           ####InnoDB使用一個緩沖池來保存索引和原始數據,   
innodb_data_file_path = ibdata1:10M:autoextend  ####InnoDB 將數據保存在一個或者多個數據文件中成為表空間.  
innodb_write_io_threads = 8          
innodb_read_io_threads = 8             ####用來同步IO操作的IO線程的數量.  
innodb_thread_concurrency = 16         ####使用InnoDB引擎,內核被允許的線程數,這個最佳值取決於應用程序,硬件還有操作系統的調度程序。太高的值肯定會導致線程抖動。  
innodb_flush_log_at_trx_commit = 1     ####如果設置為1 ,InnoDB會在每次提交後刷新(fsync)事務日誌到磁盤上,  
innodb_log_buffer_size = 8M            ####用來緩沖日誌數據的緩沖區的大小.  
innodb_log_file_size = 256M            ####在日誌組中每個日誌文件的大小,  
innodb_log_files_in_group = 3          ####在日誌組中文件的總量,通常2-3就足夠了  
innodb_max_dirty_pages_pct = 90        ####在InnoDB緩沖池中最大允許的臟頁面的比例.  
innodb_lock_wait_timeout = 120         ####在被回滾前,一個InnoDB的事務應該等待一個鎖被批準多久.  
[mysqldump]  
quick  
max_allowed_packet = 16M    
[mysql]  
no-auto-rehash  
[myisamchk]  
key_buffer_size = 512M  
sort_buffer_size = 512M  
read_buffer = 8M  
write_buffer = 8M  
[mysqlhotcopy]  
interactive-timeout  
[mysqld_safe]  
open-files-limit = 8192               ####每個程序允許打開文件的數量 

Mysql-my-innodb-heavy-4G.cnf配置文件註解