前言
MySQL配置文件可以根據(jù)不同的服務(wù)器配置(4核8G)掀亩,進(jìn)行相應(yīng)的優(yōu)化,我這個(gè)版本僅做參考
配置文件詳解
# mysql的shell腳本,用來啟動mysql。nice命令是用來設(shè)定優(yōu)先權(quán)歪架,
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
# mysql用哪個(gè)用戶啟動
user = mysql
# 對應(yīng)的pid和sock文件位置
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
# 對應(yīng)端口矫夷,有的單機(jī)啟多個(gè)服務(wù)器的葛闷,每個(gè)服務(wù)器要用不同的端口
port = 3306
# MySQL目錄对扶,數(shù)據(jù)目錄双絮,緩存目錄攻礼,ubuntu修改datadir還有個(gè)坑豌拙,見我的收藏
basedir = /usr
datadir = /data/mysql
tmpdir = /tmp
# 消息錯(cuò)誤的語言,可以看這目錄下的文件,一般不改
lc-messages-dir = /usr/share/mysql
# 跳過外部鎖定摔踱,僅對MyISAM引擎表有用
skip-external-locking
# 允許外部IP訪問鹦牛,如果改成0.0.0.0考婴,則每個(gè)外部服務(wù)器都能訪問到剔蹋,有安全問題
bind-address = 127.0.0.1
# MySQL所允許的同時(shí)會話數(shù)上限赤嚼,如果該值設(shè)的少旷赖,很容易出現(xiàn) Too many connections
max_connections = 1000
# 每個(gè)客戶端連接的最大錯(cuò)誤允許數(shù),如果達(dá)到這個(gè)數(shù)的限制更卒,這個(gè)客戶端將會被MySQL
# 服務(wù)阻止直到執(zhí)行 Flush Hosts 或者服務(wù)重啟
max_connect_errors = 50
# 設(shè)置最大包等孵,限制server接收的數(shù)據(jù)包大小,避免超長SQL的執(zhí)行問題
max_allowed_packet = 16M
# 關(guān)鍵詞緩沖區(qū)大小蹂空,用來緩沖MyISAM表的索引塊俯萌,決定了數(shù)據(jù)庫索引處理的速度
# 尤其是讀取的速度
key_buffer_size = 3M
thread_stack = 192K
# 服務(wù)端線程緩存
thread_cache_size = 300
# 這個(gè)值應(yīng)該為CPU核數(shù)的兩倍,用于充分使用多核性能上枕。
# 這個(gè)變量是針對Solaris系統(tǒng)的咐熙,而且MYSQL5.6就去掉了,千萬注意1嫫肌棋恼!
#thread_concurrency = 4
# 自動修復(fù)MyISAM表,有幾個(gè)選項(xiàng)锈玉,自己查閱文檔吧
myisam-recover-options = BACKUP
# 每個(gè)連接需要用到buffer時(shí)分配的內(nèi)存大小爪飘,這個(gè)值不是越大越好,高并發(fā)用大值拉背,容易
# 導(dǎo)致內(nèi)存耗盡师崎,簡單計(jì)算1000個(gè)連接時(shí)用1000*1m =1G內(nèi)存
sort_buffer_size = 1M
# join表時(shí)用的緩存
join_buffer_size = 8M
# 單次查詢緩沖區(qū)大小
query_cache_limit = 2M
# 查詢緩存大小。當(dāng)一次查詢完了之后椅棺,MySQL會把查詢的結(jié)果緩存犁罩,當(dāng)下次有相同查詢
# 就把緩存中的結(jié)果直接返回。牢記如果值設(shè)大了两疚,而你的數(shù)據(jù)庫場景是多寫床估,會影響寫入
# 的效率。具體的原因查閱文檔
query_cache_size = 128M
# mysql常規(guī)日志鬼雀,牢記線上環(huán)境別輕易開啟顷窒,寫入的日志量非常龐大。
# 如果有什么需要調(diào)試和檢查錯(cuò)誤源哩,可以開啟一下
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
# mysql的錯(cuò)誤日志鞋吉,有助于你查詢mysql問題
log_error = /var/log/mysql/error.log
# mysql的慢查詢?nèi)罩荆ㄗh開啟励烦,一般超過1秒就是慢查詢谓着,如果擔(dān)心可以設(shè)的長一點(diǎn)
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
# 和binlog相關(guān)的,暫不處理坛掠,主從復(fù)制需要用到
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
# 設(shè)置做MyISAM表全表掃描時(shí)的緩沖大小
read_buffer_size =2M
# 在排序后從排序好的數(shù)據(jù)讀取行時(shí)赊锚,行數(shù)據(jù)從這個(gè)緩存區(qū)讀出,合理設(shè)置這個(gè)值屉栓∠掀眩可以提升
# order by的性能。注意:MySQL會為每個(gè)客戶端連接申請?jiān)摼彌_區(qū)友多,并發(fā)過大牲平,該值過大會
# 造成性能開銷過大
read_rnd_buffer_size = 1M
# MyISAM表發(fā)生變化時(shí)候重新排序需要的緩存
myisam_sort_buffer_size = 8M
# innodb用來緩存來保存索引和原始數(shù)據(jù),正確設(shè)置這個(gè)值域滥,可以有效減少讀取數(shù)據(jù)需要的磁盤# IO纵柿,比如書里面設(shè)置的數(shù)據(jù)是4G
innodb_buffer_pool_size = 128M
# 數(shù)據(jù)日志文件的大小。
innodb_log_file_size = 128M
# 日志文件的緩存
innodb_log_buffer_size = 8M
# 預(yù)寫日志的方式启绰,復(fù)雜昂儒,自己看文檔吧
innodb_flush_log_at_trx_commit =1
# 再被回滾之前,一個(gè)innodb的事務(wù)應(yīng)該等一個(gè)鎖被批準(zhǔn)多久委可。如果用了lock tables這種指令
# 這時(shí)這個(gè)超時(shí)就非常有效果
innodb_lock_wait_timeout =50
結(jié)語
針對不同的機(jī)器配置渊跋,優(yōu)化自己的mysql配置文件是有非常顯著的效果。