17、MySQL生產環境my.cnf配置文件解析

[client]

port = 3306    #端口號

socket = /ryzc/mysql/data/mysql.sock         #sock文件路徑


[mysqld]

port = 3306            

socket = /ryzc/mysql/data/mysql.sock                   # 服務端sock文件路徑

pid-file        = /ryzc/mysql/data/localhost.pid       # pid文件存放路徑

datadir         = /ryzc/mysql/data                     # 數據存放目錄

log-error           = /ryzc/mysql/data/err.log         # 日誌錯誤目錄

slow-query-log-file  =/ryzc/mysql/data/mysql-slow.log  # 慢查詢日誌文件和目錄

slow-query-log = 0          #開啓慢查詢日誌,0爲關閉,1爲開啓,此是5.6配置文件,5.5跟5.6打開方法不一樣

long_query_time = 2    #慢查詢時間 超過2秒則爲慢查詢,默認爲10秒

innodb_data_home_dir = /ryzc/mysql/data/              #這是InnoDB表的目錄共用設置

innodb_log_group_home_dir = /ryzc/mysql/data/         #InnoDB 日誌文件的路徑


master-info-file=master.info    #master信息文件

relay-log=relay-bin-2    # 中繼日誌路徑和文件名,都可以自定義

relay-log-index=relay-bin.index     # 中繼日誌index文件

relay-log-info-file=relay-log.info    # 中繼日誌信息文件可以定定義名字和路徑,這裏只定義名字

replicate-ignore-db=mysql    #用來設置不需要同步的庫

replicate-wild-ignore-table=mysql.%   #用來設置不需要同步的庫

innodb_data_file_path=ibdata1:1G:autoextend

log-slave-updates #這個參數用來配置從服務器的更新是否寫入二進制日誌,這個選項默認是不打開的,但是,如果這個從服務器B是服務器A的從服務器,同時還作爲服務器C的主服務器,那麼就需要開發這個選項,這樣它的從服務器C才能獲得它的二進制日誌進行同步操作

binlog_cache_size = 4M   # 一個事務,在沒有提交的時候,產生的日誌,記錄到Cache中;等到事務提交需要提交的時候,則把日誌持久化到磁盤。默認binlog_cache_size大小32K


server-id = 2   #sever-id號主跟從不能一樣


binlog-format    = ROW

expire_logs_days = 10        #超過10天的binlog日誌文件刪除

#max_binlog_cache_size = 8M  # 最大binlog緩存大小

#max_binlog_size = 512M      # 最大binlog大小

log-bin          = mysql-bin    # 開啓binlog日誌

open_files_limit = 65535    # MySQL打開的文件描述符限制,默認最小1024;當open_files_limit沒有被配置的時候,比較max_connections*5和ulimit -n的值,哪個大用哪個,當open_file_limit被配置的時候,比較open_files_limit和max_connections*5的值,哪個大用哪個。

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

skip-external-locking    ##MySQL選項以避免外部鎖定。該選項默認開啓

#lower_case_table_names     #實現表名不區分大小寫,慎用

skip-name-resolve   ## 禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。但需要注意,如果開啓該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求

sync_binlog=1  #在MySQL中系統默認的設置是sync_binlog=0,也就是不做任何強制性的磁盤刷新指令,這時候的性能是最好的,但是風險也是最大的。因爲一旦系統Crash,在binlog_cache中的所有binlog信息都會被丟失。而當設置爲“1”的時候,是最安全但是性能損耗最大的設置。因爲當設置爲1的時候,即使系統Crash,也最多丟失binlog_cache中未完成的一個事務,對實際數據沒有任何實質性影響。

event_scheduler = ON  #開啓事件調度器,事件調度器event_scheduler的語法主要包括創建,修改,刪除

max_allowed_packet = 128M   #MySQL根據配置文件會限制Server接受的數據包大小。有時候大的插入和更新會受 max_allowed_packet 參數限制,導致寫入或者更新失敗。

table_open_cache = 2048  #表描述符緩存大小,可減少文件打開/關閉次數;默認爲64,偏小

wait_timeout = 100      #指的是mysql在關閉一個非交互的連接之前所要等待的秒數,其取值範圍爲1-2147483(Windows),1-31536000(linux),默認值28800。

interactive_timeout = 100  #指的是mysql在關閉一個交互的連接之前所要等待的秒數(交互連接如mysql gui tool中的連接),其取值範圍隨wait_timeout變動,默認值28800。

net_buffer_length = 1M     #此參數指定了一個緩存區的大小,用來存放用戶發送的SQL語句。

read_buffer_size = 8M          # MySQL讀入緩衝區大小。

read_rnd_buffer_size = 8M      #主要用於表順序掃描的緩存大小

max_connections = 2000         # MySQL的最大連接數,如果服務器的併發連接請求量比較大,建議調高此值,以增加並行連接數量,當然這建立在機器能支撐的情況下,因爲如果連接數越多,介於MySQL會爲每個連接提供連接緩衝區,就會開銷越多的內存,所以要適當調整該值,不能盲目提高設值。可以過'conn%'通配符查看當前狀態的連接數量,以定奪該值的大小。

max_connect_errors = 1000000   # 對於同一主機,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST。

max_heap_table_size = 128M     # 定義了用戶可以創建的內存表(memory table)的大小。這個值用來計算內存表的最大行數值。這個變量支持動態改變

bulk_insert_buffer_size = 64M  # 批量插入緩存大小, 這個參數是針對MyISAM存儲引擎來說的。適用於在一次性插入100-1000+條記錄時, 提高效率。默認值是8M。可以針對數據量的大小,翻倍增加。

thread_cache_size = 1024  #線程緩存大小點

symbolic-links   = 0

query_cache_type = 0   #查詢結果放到查詢緩存中,0爲關閉,1爲開啓

myisam_sort_buffer_size = 8M    # MyISAM設置恢復表之時使用的緩衝區的尺寸,當在REPAIR TABLE或用CREATE INDEX創建索引或ALTER TABLE過程中排序 MyISAM索引分配的緩衝區

myisam_sort_buffer_size = 8M    # MyISAM設置恢復表之時使用的緩衝區的尺寸,當在REPAIR TABLE或用CREATE INDEX創建索引或ALTER TABLE過程中排序 MyISAM索引分配的緩衝區

myisam_max_sort_file_size = 10G # 如果臨時文件會變得超過索引,不要使用快速排序索引方法來創建一個索引。註釋:這個參數以字節的形式給出

myisam_repair_threads = 1       # 如果該值大於1,在Repair by sorting過程中並行創建MyISAM表索引(每個索引在自己的線程內)  

Myisam_revocer                  # 控制了Myisam查找和修復錯誤的方式。

innodb_log_files_in_group = 3   #日誌組中的日誌文件數目。InnoDB 以環型方式(circular fashion)寫入文件。數值 3 被推薦使用。在 my.cnf 中以數字格式設置。

thread_concurrency = 12   #默認設置爲 0,表示不限制併發數,現在設置成12個併發

innodb_file_io_threads = 6      #InnoDB 中的文件 I/O 線程。 通常設置爲 4,但是在 Windows 下可以設定一個更大的值以提高磁盤 I/O。在 my.cnf 中以數字格式設置。

innodb_write_io_threads = 6    #寫線程大小

innodb_read_io_threads = 6     #讀線程大小

innodb_thread_concurrency = 8   # InnoDB 會試圖將 InnoDB 服務的使用的操作系統進程小於或等於這裏所設定的數值。此參數默認值爲 8。如果計算機系統性能較低或 innodb_monitor 顯示有很多線程等侍信號,應該將這個值設小一點。

innodb_buffer_pool_size = 15G   #這個參數主要作用是緩存innodb表的索引,數據,插入數據時的緩衝,專用mysql服務器設置的大小: 操作系統內存的70%-80%最佳。

innodb_log_file_size = 256M    I#日誌組中的每個日誌文件的大小(單位 MB)。

innodb_log_buffer_size = 16M    #InnoDB 將日誌寫入日誌磁盤文件前的緩衝大小。理想值爲 1M 至 8M。

innodb_flush_log_at_trx_commit = 0  #通常設置爲 1,意味着在事務提交前日誌已被寫入磁盤, 事務可以運行更長以及服務崩潰後的修復能力。如果你願意減弱這個安全,或你運行的是比較小的事務處理,可以將它設置爲 0 ,以減少寫日誌文件的磁盤 I/O。這個選項默認設置爲 0。

innodb_support_xa = 0    #你設置innodb_support_xa爲0將減少磁盤刷新,有利於磁盤數據和二進制日誌的序列化。

innodb_flush_method = O_DIRECT    #這個參數僅僅與 Unix 相關。這個參數默認值爲 fdatasync。 另一個設置項爲 O_DSYNC。這僅僅影響日誌文件的轉儲,在 Unix 下以 fsync 轉儲數據。

innodb_additional_mem_pool_size = 16M     #InnoDB 用來存儲數據字典(data dictionary)信息和其它內部數據結構(internal data structures)的存儲器組合(memory pool)大小。理想的值爲 2M

innodb_sort_buffer_size = 16M   #排序緩衝大小

innodb_open_files = 3000   #限制Innodb能打開的表的數據,如果庫裏的表特別多的情況,請增加這個。這個值默認是300

key_buffer_size = 2G   #指定用於索引的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫),注意:該參數值設置的過大反而會是服務器整體效率降低

sort_buffer_size = 8M      # MySQL執行排序使用的緩衝大小。如果想要增加ORDER BY的速度,首先看是否可以讓MySQL使用索引而不是額外的排序階段。如果不能,可以嘗試增加sort_buffer_size變量的大小

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

slave_skip_errors = all   #跳過所有錯誤,避免了由於sql出錯導致的從複製失效。

query_cache_size = 64M   #MySQL查詢緩存大小

query_cache_limit = 4M     #指定單個查詢能夠使用的緩衝區大小,默認1M

tmp_table_size = 256M  MySQL的heap(堆積)表緩衝大小。

#default-storage-engine = InnoDB #默認存儲引擎

#default-table-type = InnoDB  #默認表類型

#innodb_local_wait_timeout = 120 #等待鎖超時時間

#innodb_file_per_table = 0  #獨立表空間,0表示關閉,1表示開啓

#innodb_max_dirty_pages_pct = 90 #是用來控制在 InnoDB Buffer Pool 中可以不用寫入數據文件中的Dirty Page 的比例(已經被修但還沒有從內存中寫入到數據文件的髒數據)。這個比例值越大,從內存到磁盤的寫入操作就會相對減少,所以能夠一定程度下減少寫入操作的磁盤IO。

#根據以往的經驗,重啓恢復的數據如果要超過1GB的話,啓動速度會比較慢,幾乎難以接受,所以建議不大於 1GB/innodb_buffer_pool_size(GB)*100 這個值。當然,如果你能夠忍受啓動時間比較長,而且希望儘量減少內存至磁盤的flush,可以將這個值調整到90,但不建議超過90


[mysqldump]

quick                      #通過quick參數可以加快mysql命令行下導出數據

max_allowed_packet = 128M  #服務器發送和接受的最大包長度




[mysql]            

no-auto-rehash     #sql語句沒有自動補全


[myisamchk]

key_buffer_size = 8M

sort_buffer_size = 8M

read_buffer = 8M

write_buffer = 8M


[mysqlhotcopy]

interactive-timeout   #服務器關閉交互式連接前等待活動的秒數,默認8小時


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章