mysql5.7的配置文件優化,引用了別人的模板,根據自己的情況修改了一些參數,加上注釋,留著備用,感興趣的朋友可以借鑒一下,如
mysql5.7的(de)配置文件優化(hua),引用了(le)別人的(de)模板,根據自己的(de)情(qing)況修改了(le)一些參(can)數,加上注釋,留著備用,感興(xing)趣的(de)朋友可以(yi)借鑒一下,如(ru)果無法(fa)啟動可以(yi)查看一下error_log,修改相(xiang)應的(de)參(can)數。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
#支持(chi)符號鏈接,就是可以(yi)通過(guo)軟連接的(de)方式,管理-目錄的(de)數(shu)據(ju)庫,最好不要開啟,當(dang)一(yi)個(ge)磁盤或(huo)分(fen)區空(kong)間不夠時,可以(yi)開啟該參數(shu)將數(shu)據(ju)存儲到(dao)-的(de)磁盤或(huo)分(fen)區。
#//blog.csdn.net/moxiaomomo/article/details/17092871
symbolic-links=0
########basic settings########
server-id = 11
port = 3306
user = mysql
#設(she)置autocommit=0,則用戶將(jiang)一(yi)直處(chu)于(yu)某(mou)個事務(wu)中(zhong),直到執行一(yi)條commit提交或rollback語句(ju)才會結束當前事務(wu)重新(xin)開始一(yi)個新(xin)的(de)事務(wu)。set autocommit=0的(de)好處(chu)是在頻繁開啟事務(wu)的(de)場景下,減(jian)少一(yi)次begin的(de)交互。
autocommit = 1
#utf8mb4編碼是(shi)utf8編碼的(de)超集,兼容utf8,并且(qie)能存(cun)儲4字節的(de)表(biao)情字符。
#采用utf8mb4編(bian)碼的(de)好處是:存儲與獲(huo)取數(shu)據的(de)時候,不用再(zai)考慮(lv)表情字(zi)符的(de)編(bian)碼與解碼問題。
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
# 對于同一主機,如果有超出該(gai)參數值個數的(de)中斷(duan)錯誤(wu)連接(jie),則該(gai)主(zhu)機將被禁止連接(jie)。如需對該(gai)主(zhu)機進(jin)行解禁,執(zhi)行:FLUSH HOST。
max_connect_errors = 1000
#數據庫(ku)隔離級(ji)別
transaction_isolation = READ-COMMITTED
#MySQL在(zai)完成某(mou)些join(連接)需求(qiu)的(de)時候,為(wei)了減少參(can)與join的(de)“被(bei)驅動表(biao)”的(de)讀(du)取次數以提高(gao)性能(neng),需要使用到join buffer來協(xie)助(zhu)完成join操(cao)作當join buffer 太小,MySQL不會將(jiang)(jiang)該buffer存入(ru)磁盤文件而是(shi)先將(jiang)(jiang)join buffer中(zhong)的(de)結果與需求(qiu)join的(de)表(biao)進行操(cao)作,然后清空join buffer中(zhong)的(de)數據,繼續將(jiang)(jiang)剩(sheng)余的(de)結果集寫入(ru)次buffer中(zhong)
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
#該(gai)值設置過(guo)小(xiao)將導致單個(ge)記錄(lu)超過(guo)-后(hou)寫入數據庫失敗(bai),且后(hou)續記錄(lu)寫入也將失敗(bai)
max_allowed_packet = 64M
#mysql在關閉一個交(jiao)互的連接之前所(suo)要等(deng)待的秒數(shu)
interactive_timeout = 1200
#mysql在關閉一個(ge)非交互的連接(jie)之前(qian)所要等待(dai)的秒數(shu)
wait_timeout = 600
#MySQL讀入緩沖區的大小
read_buffer_size = 16M
#MySQL的隨機讀緩沖區大(da)小
read_rnd_buffer_size = 8M
#MySQL的順序讀緩沖區大小(xiao)
sort_buffer_size = 8M
########log settings########
log_error = /var/log/docker_log/mysql/error.log
#開啟慢查詢日(ri)志(zhi)
slow_query_log = 1
#超出次設定(ding)值的SQL即(ji)被記錄到慢查詢日志
long_query_time = 6
slow_query_log_file = /var/log/docker_log/mysql/slow.log
#表示記錄下沒(mei)有(you)使(shi)用索(suo)引的查詢
log_queries_not_using_indexes = 1
#記錄管(guan)理語句
log_slow_admin_statements = 1
#開啟復(fu)制(zhi)從庫復(fu)制(zhi)的慢查詢(xun)的日志
log_slow_slave_statements = 1
#設(she)置每分鐘增長的(de)(de)沒(mei)有使用索引查詢的(de)(de)日志(zhi)數量
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100
########replication settings########
#將master.info和relay.info保存在表中
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
#當每進(jin)行(xing)n次事務提交之后,MySQL將進(jin)行(xing)一次fsync之類的磁(ci)盤(pan)同(tong)步指令來將binlog_cache中的數據(ju)強制寫入磁(ci)盤(pan)。設置為零是(shi)讓系統自(zi)行(xing)決(jue)定
sync_binlog = 5
#開啟全局事務ID,GTID能夠保證讓一個從服務器到-的從(cong)服務器那里(li)實現數據復制而且能夠實現數據整合的
gtid_mode = on
#開(kai)啟(qi)gtid,必須(xu)主從全開(kai)
enforce_gtid_consistency = 1
#從服務器的更(geng)新是否(fou)寫入(ru)二(er)進制日志
log_slave_updates = 1
#三(san)種模(mo)式 STATEMENT(有可能主從數據不(bu)一致(zhi),日(ri)質量小)、ROW(產生大量二進制日(ri)志)、MIXED
binlog_format = mixed
#relay-log日志(zhi)記錄的是(shi)從(cong)服(fu)務(wu)(wu)器(qi)I/O線程(cheng)將主服(fu)務(wu)(wu)器(qi)的二進制日志(zhi)讀(du)取過來記錄到從(cong)服(fu)務(wu)(wu)器(qi)本(ben)地文件,然后(hou)SQL線程(cheng)會讀(du)取relay-log日志(zhi)的內容并應用到從(cong)服(fu)務(wu)(wu)器(qi)
relay_log = /var/log/docker_log/mysql/relay.log
relay_log_recovery = 1
#開(kai)啟簡單gtid,開(kai)啟此(ci)項(xiang)會提升(sheng)mysql執(zhi)行恢(hui)復的性能
binlog_gtid_-_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
#這個參(can)數在一(yi)開始初始化(hua)時就要加入my.cnf里,如果已經創(chuang)建(jian)了表,再修改(gai),啟動MySQL會(hui)報錯。最好(hao)為8K
#innodb_page_size = 16K
innodb_page_size = 8K
#數據緩沖區buffer pool大小,建議使(shi)用(yong)物理(li)內存(cun)的(de) 75%
innodb_buffer_pool_size = 2G
#當buffer_pool的(de)值較大的(de)時候為(wei)1,較小(xiao)的(de)設(she)置(zhi)為(wei)8
innodb_buffer_pool_instances = 8
#運行時load緩(huan)沖(chong)池,快速(su)預熱(re)緩(huan)沖(chong)池,將buffer pool的(de)內容(文件(jian)頁的(de)索引)dump到(dao)文件(jian)中,然后快速(su)load到(dao)buffer pool中。避免了數據庫(ku)的(de)預熱(re)過程,提高了應用訪問的(de)性能
innodb_buffer_pool_load_at_startup = 1
#運行時dump緩沖池
innodb_buffer_pool_dump_at_shutdown = 1
#在innodb中處(chu)理用戶查詢后,其結果在內存空間的緩沖池已經(jing)發生變化(hua),但是還未記錄到(dao)磁盤。這種(zhong)頁(ye)(ye)面稱(cheng)為臟(zang)頁(ye)(ye),將臟(zang)頁(ye)(ye)記錄到(dao)磁盤的過(guo)程稱(cheng)為刷臟(zang)
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#事務等待獲取資源等待的最長時間(jian),超過這個時間(jian)還未分(fen)配到(dao)資源則會返回應用失敗(bai),默(mo)認(ren)50s
innodb_lock_wait_timeout = 30
#日志(zhi)組所在(zai)的(de)路徑,默認(ren)為data的(de)home目錄;
innodb_log_group_home_dir = /data/mysql/
#innodb_undo_directory = /data/mysql/undolog/
#這個參數控制著innodb數據文件及REDo log的打(da)開(kai)、刷寫模式(shi),//blog.csdn.net/gua___gua/article/details/44916207
#innodb_flush_method = O_DIRECT-不經過系統緩存直接存入磁盤,
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
#innodb獨享(xiang)表(biao)空間,有點(dian)很多,缺點(dian)會導致單個表(biao)文件過大
#innodb_file_per_table = 1
#undo日(ri)志回滾段 默認為128
innodb_undo_logs = 128
#傳統機械硬盤建議使用(yong),而對(dui)于固態硬盤可以關閉
#innodb_flush_nei-ors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
#控制是否使用獨立purge線程
innodb_purge_threads = 1
#改為ON時,允許單列(lie)索引最(zui)大達到3072。否則最(zui)大為767
innodb_large_prefix = 1
innodb_thread_concurrency = 8
#開啟后會將所(suo)有的死鎖記錄到(dao)error_log中(zhong)
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 16M
########semi sync replication settings########
#半同步復制(zhi)
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000
#表示轉(zhuan)儲每個bp instance LRU上最熱的page的百(bai)分比。通過設(she)置(zhi)該參數可(ke)以減少轉(zhuan)儲的page數。
innodb_buffer_pool_dump_pct = 40
#刷臟(zang)的進程N-1
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
#控制回收(收縮(suo)(suo))undo log的(de)頻率.undo log空間(jian)在(zai)它的(de)回滾段沒有得到釋放(fang)之前不會收縮(suo)(suo),
innodb_purge_rseg_truncate_frequency = 128
log_timestamps=system
#該參(can)數基于(yu)MySQL5.7 Group Replication組復制的,沒有使用(yong)不要設置
#transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
微(wei)信掃碼關注 億華聯眾(zhong) 公眾(zhong)號