mysql之my.cnf詳解

值,若是該值爲0,則默認值爲max_binlog_size(1G);若是不爲0,則max_relay_log_size則爲最大的relay_log文件大小;

relay-log-purge = 1
#是否自動清空再也不須要中繼日誌時。默認值爲1(啓用)
expire_logs_days = 30
#超過 30 天的 binlog 刪除
binlog_cache_size = 1M
# 在一個事務中 binlog 爲了記錄 SQL 狀態所持有的 cache 大小,若是你常用大的,多聲明的事務,你能夠增長此值來獲取更大的性能.全部從事務來的狀態都將被緩衝在 binlog 緩衝中而後在提交後一次性寫入到 binlog 中,若是事務比此值大, 會使用磁盤上的臨時文件來替代.此緩衝在每一個鏈接的事務第一次更新狀態時被建立.session 級別
replicate-wild-ignore-table = mysql.%
#複製時忽略數據庫及表 slave_skip_errors=all
#定義複製過程當中從服務器能夠自動跳過的錯誤號,當複製過程當中遇到定義的錯誤號,就能夠自動跳過,直接執行後面的SQL語句。 slave_skip_errors選項有四個可用值,分別爲:off,all,ErorCode,ddl_exist_errors。 默認狀況下該參數值是off,咱們能夠列出具體的error code,也能夠選擇all,mysql5.6及MySQL Cluster NDB 7.3以及後續版本增長了參數ddl_exist_errors,該參數包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146) 一些error code表明的錯誤以下: 1007:數據庫已存在,建立數據庫失敗 1008:數據庫不存在,刪除數據庫失敗 1050:數據表已存在,建立數據表失敗 1051:數據表不存在,刪除數據表失敗 1054:字段不存在,或程序文件跟數據庫有衝突 1060:字段重複,致使沒法插入 1061:重複鍵名 1068:定義了多個主鍵 1094:位置線程ID 1146:數據表缺失,請恢復數據庫 1053:複製過程當中主服務器宕機 1062:主鍵衝突 Duplicate entry '%s' for key %d #*** MyISAM 相關選項 ***# key_buffer_size = 256M
#指定用於索引的緩衝區大小,增長它可獲得更好的索引處理性能。若是是以InnoDB引擎爲主的DB,專用於MyISAM引擎的 key_buffer_size 能夠設置較小,8MB 已足夠 若是是以MyISAM引擎爲主,可設置較大,但不能超過4G. 在這裏,強烈建議不使用MyISAM引擎,默認都是用InnoDB引擎.注意:該參數值設置的過大反而會是服務器總體效率下降!
sort_buffer_size = 2M
#查詢排序時所能使用的緩衝區大小。排序緩衝被用來處理相似 ORDER BY 以及 GROUP BY 隊列所引發的排序.一個用來替代的基於磁盤的合併分類會被使用.查看 「Sort_merge_passes」 狀態變量. 在排序發生時由每一個線程分配 注意:該參數對應的分配內存是每鏈接獨佔!若是有 100 個鏈接,那麼實際分配的總共排序緩衝區大小爲 100 × 6 =600MB,因此,對於內存在 4GB 左右的服務器推薦設置爲 6-8M。
read_buffer_size = 2M
#讀查詢操做所能使用的緩衝區大小。和 sort_buffer_size 同樣,該參數對應的分配內存也是每鏈接獨享!用來作 MyISAM 表全表掃描的緩衝大小.當全表掃描須要時,在對應線程中分配.
join_buffer_size = 8M
#聯合查詢操做所能使用的緩衝區大小,和 sort_buffer_size 同樣,該參數對應的分配內存也是每鏈接獨享!此緩衝被使用來優化全聯合(full JOINs 不帶索引的聯合).相似的聯合在極大多數狀況下有很是糟糕的性能表現, 可是將此值設大可以減輕性能影響.經過 「Select_full_join」狀態變量查看全聯合的數量, 當全聯合發生時,在每一個線程中分配。
read_rnd_buffer_size = 8M
#MyISAM 以索引掃描(Random Scan)方式掃描數據的 buffer大小
bulk_insert_buffer_size = 64M
#MyISAM 使用特殊的相似樹的 cache 來使得突發插入(這些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATAINFILE) 更快. 此變量限制每一個進程中緩衝樹的字節數.設置爲 0 會關閉此優化.爲了最優化不要將此值設置大於 「key_buffer_size」.當突發插入被檢測到時此緩衝將被分配MyISAM 用在塊插入優化中的樹緩衝區的大小。註釋:這是一個 per thread 的限制 ( bulk 大量).此緩衝當 MySQL 須要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE到一個空表中引發重建索引時被分配.這在每一個線程中被分配.因此在設置大值時須要當心.
myisam_sort_buffer_size = 64M
#MyISAM 設置恢復表之時使用的緩衝區的尺寸,當在REPAIR TABLE 或用 CREATE INDEX 建立索引或 ALTER TABLE 過程當中排序 MyISAM 索引分配的緩衝區
myisam_max_sort_file_size = 10G
#mysql重建索引時容許使用的臨時文件最大大小
myisam_repair_threads = 1
#若是該值大於 1,在 Repair by sorting 過程當中並行建立MyISAM 表索引(每一個索引在本身的線程內).若是一個表擁有超過一個索引, MyISAM 能夠經過並行排序使用超過一個線程去修復他們.這對於擁有多個 CPU 以及大量內存狀況的用戶,是一個很好的選擇.
myisam_recover = 64K
#容許的 GROUP_CONCAT()函數結果的最大長度 transaction_isolation = REPEATABLE-READ # 設定默認的事務隔離級別.可用的級別以下:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ,SERIALIZABLE 1.READ UNCOMMITTED-讀未提交 2.READ COMMITTE-讀已提交 3.REPEATABLE READ -可重複讀 4.SERIALIZABLE -串行
# *** INNODB 相關選項 ***# skip-innodb
# 若是你的 MySQL 服務包含 InnoDB 支持可是並不打算使用的話,使用此選項會節省內存以及磁盤空間,而且加速某些部分
innodb_file_per_table = 1
# InnoDB爲獨立表空間模式,每一個數據庫的每一個表都會生成一個數據空間 獨立表空間優勢: 1.每一個表都有自已獨立的表空間。 2.每一個表的數據和索引都會存在自已的表空間中。 3.能夠實現單表在不一樣的數據庫中移動。 4.空間能夠回收(除drop table操做處,表空不能自已回收) 缺點: 1.單表增長過大,如超過100G 結論: 共享表空間在Insert操做上少有優點。其它都沒獨立表空間表現好。當啓用獨立表空間時,請合理調整:innodb_open_files
innodb_status_file = 1
#啓用InnoDB的status file,便於管理員查看以及監控等
innodb_open_files = 2048
# 限制Innodb能打開的表的數據,若是庫裏的表特別多的狀況,請增長這個。這個值默認是300
innodb_additional_mem_pool_size = 100M
#設置InnoDB存儲引擎用來存放數據字典信息以及一些內部數據結構的內存空間大小,因此當咱們一個MySQL Instance中的數據庫對象很是多的時候,是須要適當調整該參數的大小以確保全部數據都能存放在內存中提升訪問效率的。 

innodb_buffer_pool_size = 2G
#包括數據頁、索引頁、插入緩存、鎖信息、自適應哈希因此、數據字典信息.InnoDB 使用一個緩衝池來保存索引和原始數據, 不像 MyISAM.這裏你設置越大,你在存取表裏面數據時所須要的磁盤 I/O 越少.在一個獨立使用的數據庫服務器上,你能夠設置這個變量到服務器物理內存大小的 80%,不要設置過大,不然,因爲物理內存的競爭可能致使操做系統的換頁顛簸.注意在 32 位系統上你每一個進程可能被限制在 2-3.5G 用戶層面內存限制,因此不要設置的過高.
innodb_write_io_threads = 4 innodb_read_io_threads = 4 # innodb使用後臺線程處理數據頁上的讀寫 I/O(輸入輸出)請求,根據你的 CPU 核數來更改,默認是4 # 注:這兩個參數不支持動態改變,須要把該參數加入到my.cnf裏,修改完後重啓MySQL服務,容許值的範圍從 1-64
innodb_data_home_dir = /usr/local/mysql/var/
#設置此選項若是你但願 InnoDB 表空間文件被保存在其餘分區.默認保存在 MySQL 的 datadir 中.
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend
#InnoDB將數據保存在一個或者多個數據文件中成爲表空間.若是你只有單個邏輯驅動保存你的數據,一個單個的自增文件就足夠好了.其餘狀況下.每一個設備一個文件通常都是個好的選擇.你也能夠配置 InnoDB 來使用裸盤分區 – 請參考手冊來獲取更多相關內容
innodb_file_io_threads = 4
#用來同步 IO 操做的 IO 線程的數量. 此值在 Unix 下被硬編碼爲 4,可是在 Windows 磁盤 I/O 可能在一個大數值下表現的更好.
innodb_thread_concurrency = 16
#在 InnoDb 核心內的容許線程數量,InnoDB 試着在 InnoDB 內保持操做系統線程的數量少於或等於這個參數給出的限制,最優值依賴於應用程序,硬件以及操做系統的調度方式.太高的值可能致使線程的互斥顛簸.默認設置爲 0,表示不限制併發數,這裏推薦設置爲0,更好去發揮CPU多核處理能力,提升併發量
innodb_flush_log_at_trx_commit = 1
#若是設置爲 1 ,InnoDB 會在每次提交後刷新(fsync)事務日誌到磁盤上,這提供了完整的 ACID 行爲.若是你願意對事務安全折衷, 而且你正在運行一個小的食物, 你能夠設置此值到 0 或者 2 來減小由事務日誌引發的磁盤 I/O 0 表明日誌只大約每秒寫入日誌文件而且日誌文件刷新到磁盤. 2 表明日誌寫入日誌文件在每次提交後,可是日誌文件只有大約每秒纔會刷新到磁盤上.
innodb_log_buffer_size = 8M
#用來緩衝日誌數據的緩衝區的大小.當此值快滿時, InnoDB 將必須刷新數據到磁盤上.因爲基本上每秒都會刷新一次,因此沒有必要將此值設置的太大(甚至對於長事務而言)
innodb_log_file_size = 500M
#事物日誌大小.在日誌組中每一個日誌文件的大小,你應該設置日誌文件總合大小到你緩衝池大小的5%~100%,來避免在日誌文件覆寫上沒必要要的緩衝池刷新行爲.不論如何, 請注意一個大的日誌文件大小會增長恢復進程所須要的時間.
innodb_log_files_in_group = 2
#在日誌組中的文件總數.一般來講 2~3 是比較好的.
innodb_log_group_home_dir = /usr/local/mysql/var/
# InnoDB 的日誌文件所在位置. 默認是 MySQL 的 datadir.你能夠將其指定到一個獨立的硬盤上或者一個 RAID1 捲上來提升其性能innodb_max_dirty_pages_pct = 90 #innodb 主線程刷新緩存池中的數據,使髒數據比例小於 90%,這是一個軟限制,不被保證絕對執行.
innodb_lock_wait_timeout = 50
#InnoDB 事務在被回滾以前能夠等待一個鎖定的超時秒數。InnoDB 在它本身的 鎖定表中自動檢測事務死鎖而且回滾事務。 InnoDB 用 LOCK TABLES 語句注意到鎖定設置。默認值是 50 秒
innodb_flush_method = O_DSYNC
# InnoDB 用來刷新日誌的方法.表空間老是使用雙重寫入刷新方法.默認值是 「fdatasync」, 另外一個是 「O_DSYNC」.
innodb_force_recovery=1
# 若是你發現 InnoDB 表空間損壞, 設置此值爲一個非零值可能幫助你導出你的表.從1 開始而且增長此值知道你可以成功的導出表.
innodb_fast_shutdown
# 加速 InnoDB 的關閉. 這會阻止 InnoDB 在關閉時作全清除以及插入緩衝合併.這可能極大增長關機時間, 可是取而代之的是 InnoDB 可能在下次啓動時作這些操做.

# *** 其餘 相關選項 ***# [mysqldump] quick
#支持較大數據庫的轉儲,在導出很是巨大的表時須要此項。增長該變量的值十分安全,這是由於僅當須要時纔會分配額外內存。例如,僅當你發出長查詢或mysqld必須返回大的結果行時mysqld纔會分配更多內存。該變量之因此取較小默認值是一種預防措施,以捕獲客戶端和服務器之間的錯誤信息包,並確保不會因偶然使用大的信息包而致使內存溢出。 若是你正是用大的BLOB值,並且未爲mysqld授予爲處理查詢而訪問足夠內存的權限,也會遇到與大信息包有關的奇怪問題。若是懷疑出現了該狀況,請嘗試在mysqld_safe腳本開始增長ulimit -d 256000,並重啓mysqld。 [mysql] auto-rehash
#容許經過 TAB 鍵提示
default-character-set = utf8
#數據庫字符集
connect-timeout = 3 [mysqld_safe]
open-files-limit = 8192

#增長每一個進程的可打開文件數量.確認你已經將全系統限制設定的足夠高!打開大量表須要將此值設大
複製代碼
相關文章
相關標籤/搜索