mysql配置文件完全_MySQL配置文件my.cnf详解
以下是Mysql數(shù)據(jù)庫服務(wù)器配置文件/etc/my.cnf的詳細(xì)配置。應(yīng)用場(chǎng)合是InnoDB引擎,4核CPU, 32位SUSE。
[client]
port= 3306
socket= /tmp/mysql.sock
# The MySQL server
[mysqld]
bind-address = 192.168.0.11
port= 3306
socket= /tmp/mysql.sock
##設(shè)置表的默認(rèn)類型。和default-storage-engine同義
default-table-type = innodb
#以下是網(wǎng)絡(luò)傳輸配置
#連接進(jìn)程幀聽隊(duì)列的大小
back_log = 50
#之前有過經(jīng)驗(yàn),connections超過370的時(shí)候,線程的棧空間被占滿,mysqld無法工作,所以限制為200
max_connections=200
#連接500次發(fā)生錯(cuò)誤之后,屏蔽從該host的所有連接
max_connect_errors = 500
#通信緩沖區(qū)的最大長度。包或任何生成的/中間字符串的最大大小。
max_allowed_packet = 32M
在查詢之間將通信緩沖區(qū)重設(shè)為該值。如果語句超出該長度,緩沖區(qū)自動(dòng)擴(kuò)大,直到max_allowed_packet字節(jié)。
net_buffer_length = 8K
#以下是查詢優(yōu)化
#避免外部鎖定(默認(rèn)是ON). 對(duì)應(yīng)variable的skip_external_locking
skip-locking
#索引緩沖區(qū)(僅作用于MYISAM表和臨時(shí)表),決定了數(shù)據(jù)庫索引處理的速度
key_buffer_size = 10M
#所有線程打開的表的數(shù)目(一個(gè)表使用2個(gè)文件描述符),表數(shù)量多,就要大一些。增大該值可以增加mysqld需要的文件描述符的數(shù)量。可以檢查Opened_tables(已經(jīng)打開的表的數(shù)量)狀態(tài)變量來檢查你是否需要增加表緩存。
table_cache = 2048
#每個(gè)排序線程分配的緩沖區(qū)的大小。增加該值可以加快ORDER BY或GROUP BY操作
sort_buffer_size = 5M
#用于完全聯(lián)接的緩沖區(qū)的大小(當(dāng)不使用索引的時(shí)候使用聯(lián)接操作)。
#一般情況獲得快速聯(lián)接的最好方法是添加索引。當(dāng)增加索引時(shí)不可能通過增加join_buffer_size值來獲得快速完全聯(lián)接。
#將為兩個(gè)表之間的每個(gè)完全聯(lián)接分配聯(lián)接緩沖區(qū)。對(duì)于多個(gè)表之間不使用索引的復(fù)雜聯(lián)接,需要多聯(lián)接緩沖區(qū)。
join_buffer_size = 8M
#服務(wù)器應(yīng)緩存多少線程以便重新使用。當(dāng)客戶端斷開連接時(shí),如果線程少于thread_cache_size,則客戶端的線程被放入緩存。
#如果狀態(tài)變量Threads_created(創(chuàng)建用來處理連接的線程數(shù))較大,你可能要增加thread_cache_size值。緩存訪問率的計(jì)算方法Threads_created/Connections(試圖連接到(不管是否成功)MySQL服務(wù)器的連接數(shù))
thread_cache_size = 8
#使應(yīng)用程序向線程系統(tǒng)提供需要同時(shí)運(yùn)行的期望的線程數(shù)目的提示
thread_concurrency = 8
#為緩存查詢結(jié)果分配的內(nèi)存的數(shù)量,加快查詢的速度。默認(rèn)值是0,即禁用查詢緩存。
query_cache_size = 64M
#不要緩存大于該值的結(jié)果,默認(rèn)值是1048576(1MB)。
query_cache_limit = 2M
#ft_min_word_len和ft_max_word_len表示FULLTEXT索引的最小和最大字長
ft_min_word_len = 4
#每個(gè)線程的堆棧大小
thread_stack = 192K
#事務(wù)隔離級(jí)別。READ-UNCOMMITTED: 未提交讀會(huì)出現(xiàn)臟讀、不可重復(fù)讀、幻讀 ( 隔離級(jí)別最低,并發(fā)性能高 ) ;READ-COMMITTED: 提交讀會(huì)出現(xiàn)不可重復(fù)讀、幻讀問題(鎖定正在讀取的行);REPEATABLE-READ: 默認(rèn)值,可重復(fù)讀會(huì)出幻讀(鎖定所讀取的所有行);SERIALIZABLE: 序列化保證所有的情況不會(huì)發(fā)生(鎖表)
transaction_isolation = REPEATABLE-READ
#聯(lián)合查詢或者view的時(shí)候,可能會(huì)建立臨時(shí)表,如果在磁盤上建的話,會(huì)導(dǎo)致性能低,設(shè)置此值可以一定程度上加快速度
tmp_table_size = 64M
#每個(gè)線程連續(xù)掃描時(shí)為掃描的每個(gè)表分配的緩沖區(qū)的大小,如果進(jìn)行多次連續(xù)掃描,可能需要增加該值
read_buffer_size = 1M
#當(dāng)排序后按排序后的順序讀取行時(shí),則通過該緩沖區(qū)讀取行,避免搜索硬盤。將該變量設(shè)置為較大的值可以大大改進(jìn)ORDER BY的性能。但是,這是為每個(gè)客戶端分配的緩沖區(qū),因此你不應(yīng)將全局變量設(shè)置為較大的值。相反,只為需要運(yùn)行大查詢的客戶端更改會(huì)話變量。
read_rnd_buffer_size = 2M
#以下是主從同步配置
# Replication Master Server (default)
#主機(jī)是1。備機(jī)從2開始。
server-id??? = 1
#啟動(dòng)數(shù)據(jù)庫更新二進(jìn)制日志記錄,日志文件名前綴為mysql-bin
log-bin=mysql-bin
#在事務(wù)過程中容納二進(jìn)制日志SQL語句的緩存大小,
#二進(jìn)制日志緩存是服務(wù)器支持事務(wù)存儲(chǔ)引擎并且服務(wù)器啟用了二進(jìn)制日志(–log-bin選項(xiàng))的前提下為每個(gè)客戶端分配的內(nèi)存。
#如果經(jīng)常使用大的,多語句事務(wù),可以增加該值以獲得更有的性能
binlog_cache_size = 5M
#是否記錄慢查詢,默認(rèn)OFF。用long_query_time變量的值來確定“慢查詢”。
log_slow_queries
#超過2S的query將記slow query日志
long_query_time = 2
#沒有使用索引的查詢也作為慢速查詢記錄到慢速日志里
#或者用log-queries-not-using-indexes
log_long_format
#告訴主服務(wù)器,如果當(dāng)前的數(shù)據(jù)庫(即USE選定的數(shù)據(jù)庫)是db_name,不應(yīng)將更新保存到二進(jìn)制日志中。
binlog-ignore-db = information_schema
binlog-ignore-db = cluster
binlog-ignore-db = mysql
#告訴從服務(wù)器限制默認(rèn)數(shù)據(jù)庫(由USE所選擇)為db_name的語句的復(fù)制
replicate-do-db = test1
replicate-do-db = test2
#跨庫更新表要用到如下配置。告訴從服務(wù)器線程限制復(fù)制更新的表匹配指定的數(shù)據(jù)庫和表名模式的語句。模式可以包含‘%’和‘_’通配符,與LIKE模式匹配操作符具有相同的含義。要指定多個(gè)表,應(yīng)多次使用該選項(xiàng),每個(gè)表使用一次。該選項(xiàng)可以跨數(shù)據(jù)庫進(jìn)行更新。
replicate-wild-do-table = test1.%
replicate-wild-do-table = test2.%
#當(dāng)Slave從Master數(shù)據(jù)庫讀取日志時(shí)更新新寫入日志中。如果只啟動(dòng)log-bin 而沒有啟動(dòng)log-slave-updates則Slave只記錄針對(duì)自己數(shù)據(jù)庫操作的更新
log-slave-updates
#以下是InnoDB引擎配置
#InnoDB 不會(huì)自己建立目錄,必須自己使用操作系統(tǒng)命令建立相應(yīng)的目錄。檢查你的 MySQL 服務(wù)程序在 datadir 目錄里有足夠的權(quán)限建立文件(mysql用戶組擁有)。
#這是InnoDB表的目錄共用設(shè)置。如果沒有設(shè)置,InnoDB 將使用MySQL的 datadir 目錄為缺省目錄。如果設(shè)定一個(gè)空字串,可以在 innodb_data_file_path 中設(shè)定絕對(duì)路徑。
innodb_data_home_dir = /data/dbdata/
#單獨(dú)指定數(shù)據(jù)文件的路徑與大小。數(shù)據(jù)文件的完整路徑由 innodb_data_home_dir 與這里所設(shè)定值的組合。文件大小以 MB 單位指定。因此在文件大小指定后必有“M”。 InnoDB 也支持縮寫“G”, 1G = 1024M。從 3.23.44 開始,在那些支持大文件的操作系統(tǒng)上可以設(shè)置數(shù)據(jù)文件大小大于 4 GB。而在另一些操作系統(tǒng)上數(shù)據(jù)文件必須小于 2 GB。
#如果用 autoextend 選項(xiàng)描述最后一個(gè)數(shù)據(jù)文件,當(dāng) InnoDB 用盡所有表自由空間后將會(huì)自動(dòng)擴(kuò)充最后一個(gè)數(shù)據(jù)文件,每次增量為8MB
#InnoDB是不會(huì)注意你的OS文件尺寸限制的,在一些文件系統(tǒng)中你可能要設(shè)定最大容量2G限制:
#innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M
#這里應(yīng)當(dāng)預(yù)先創(chuàng)建好10個(gè)2048M的文件,目前還沒有創(chuàng)建
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 日志文件的路徑。如果沒有明確指定將默認(rèn)在 MySQL 的 datadir 目錄下建立兩個(gè) 5 MB 大小的ib_logfile0和ib_logfile1文件。
#將日志文件與數(shù)據(jù)文件分別放在不同的物理硬盤中對(duì)提高性能通常是很有益的
innodb_log_group_home_dir = /data/dbdata/
#主要用來存儲(chǔ)表結(jié)構(gòu)和數(shù)據(jù)字典,表越多要求內(nèi)存就越大
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
#表和索引數(shù)據(jù)的內(nèi)存緩沖區(qū),越大性能越高。但不能超過物理內(nèi)存的50%。若64位OS,該值可以更大
#32位OS受2G內(nèi)存的限制,不能將內(nèi)存使用設(shè)置太高, glibc 會(huì)把進(jìn)程堆增長到線程堆棧之上,這將會(huì)使服務(wù)器崩潰。下面的接近或超過于 2G 將會(huì)很危險(xiǎn):
#innodb_buffer_pool_size + key_buffer +max_connections * (sort_buffer_size + record_buffer_size + binlog_cache_size) + max_connections * 2 MB
#每個(gè)線程將使用 2MB(MySQL AB 二進(jìn)制版本為 256 KB)的堆棧,在最壞的環(huán)境下還會(huì)使用 sort_buffer_size + record_buffer_size 的附加內(nèi)存。
innodb_buffer_pool_size = 1G
#InnoDB 中的文件 I/O 線程。通常設(shè)置為 4
innodb_file_io_threads = 4
#并發(fā)線程。2*(內(nèi)核數(shù)量+磁盤數(shù)量)
innodb_thread_concurrency = 16
#1表示每次事務(wù)結(jié)束都寫日志并刷新磁盤;2表示每次事務(wù)寫日志但不刷新磁盤(每秒刷新);0(默認(rèn)值)表示每秒寫日志并刷新磁盤。0表示最多丟失1秒的數(shù)據(jù),但性能最好。
innodb_flush_log_at_trx_commit = 0
#InnoDB 將日志寫入日志磁盤文件前的緩沖大小。理想值為 1M 至 8M。大的日志緩沖允許事務(wù)運(yùn)行時(shí)不需要將日志保存入磁盤而只到事務(wù)被提交(commit)。因此,如果有大的事務(wù),設(shè)置大的日志緩沖可以減少磁盤I/O。
innodb_log_buffer_size = 8M
# Set .._log_file_size to 25 % of buffer pool size
#日志文件大小設(shè)置。增大該值可減少刷新日志頻率,但會(huì)延長mysql啟動(dòng)和災(zāi)難恢復(fù)的時(shí)間。
#日志組中的每個(gè)日志文件的大小(單位 MB)。如果 n 是日志組(innodb_log_files_in_group)中日志文件的數(shù)目,那么理想的數(shù)值為 1M 至緩沖池(innodb_log_buffer_size)大小的 1/n。較大的值,可以減少刷新緩沖池的次數(shù),從而減少磁盤 I/O。但是大的日志文件意味著在崩潰時(shí)需要更長的時(shí)間來恢復(fù)數(shù)據(jù)。
innodb_log_file_size = 256M
#日志組中的日志文件數(shù)目。InnoDB 以環(huán)型方式(circular fashion)寫入文件。數(shù)值 3 被推薦使用
innodb_log_files_in_group = 3
#InnoDB行鎖導(dǎo)致的死鎖等待時(shí)間(默認(rèn)值是50S)
innodb_lock_wait_timeout = 30
#是否支持分布式事務(wù),關(guān)閉以提高性能(默認(rèn)是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
總結(jié)
以上是生活随笔為你收集整理的mysql配置文件完全_MySQL配置文件my.cnf详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: log4j 禁止类输出日志_Spring
- 下一篇: 远控时其他用户登录到这台计算机,如何远程