mysql5.7的配置文件優(yōu)化,引用了別人的模板,根據(jù)自己的情況修改了一些參數(shù),加上注釋,留著備用,感興趣的朋友可以借鑒一下,如
mysql5.7的配置文件優(yōu)化,引用了別人的模板,根據(jù)自己的情況修改了一些參數(shù),加上注釋,留著備用,感興趣的朋友可以借鑒一下,如果無法啟動可以查看一下error_log,修改相應(yīng)的參數(shù)。
[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
#支持符號鏈接,就是可以通過軟連接的方式,管理-目錄的數(shù)據(jù)庫,最好不要開啟,當一個磁盤或分區(qū)空間不夠時,可以開啟該參數(shù)將數(shù)據(jù)存儲到-的磁盤或分區(qū)。
#http://blog.csdn.net/moxiaomomo/article/details/17092871
symbolic-links=0
########basic settings########
server-id = 11
port = 3306
user = mysql
#設(shè)置autocommit=0,則用戶將一直處于某個事務(wù)中,直到執(zhí)行一條commit提交或rollback語句才會結(jié)束當前事務(wù)重新開始一個新的事務(wù)。set autocommit=0的好處是在頻繁開啟事務(wù)的場景下,減少一次begin的交互。
autocommit = 1
#utf8mb4編碼是utf8編碼的超集,兼容utf8,并且能存儲4字節(jié)的表情字符。
#采用utf8mb4編碼的好處是:存儲與獲取數(shù)據(jù)的時候,不用再考慮表情字符的編碼與解碼問題。
character_set_server=utf8mb4
skip_name_resolve = 1
max_connections = 800
# 對于同一主機,如果有超出該參數(shù)值個數(shù)的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執(zhí)行:FLUSH HOST。
max_connect_errors = 1000
#數(shù)據(jù)庫隔離級別
transaction_isolation = READ-COMMITTED
#MySQL在完成某些join(連接)需求的時候,為了減少參與join的“被驅(qū)動表”的讀取次數(shù)以提高性能,需要使用到j(luò)oin buffer來協(xié)助完成join操作當join buffer 太小,MySQL不會將該buffer存入磁盤文件而是先將join buffer中的結(jié)果與需求join的表進行操作,然后清空join buffer中的數(shù)據(jù),繼續(xù)將剩余的結(jié)果集寫入次buffer中
join_buffer_size = 128M
tmp_table_size = 64M
tmpdir = /tmp
#該值設(shè)置過小將導(dǎo)致單個記錄超過-后寫入數(shù)據(jù)庫失敗,且后續(xù)記錄寫入也將失敗
max_allowed_packet = 64M
#mysql在關(guān)閉一個交互的連接之前所要等待的秒數(shù)
interactive_timeout = 1200
#mysql在關(guān)閉一個非交互的連接之前所要等待的秒數(shù)
wait_timeout = 600
#MySQL讀入緩沖區(qū)的大小
read_buffer_size = 16M
#MySQL的隨機讀緩沖區(qū)大小
read_rnd_buffer_size = 8M
#MySQL的順序讀緩沖區(qū)大小
sort_buffer_size = 8M
########log settings########
log_error = /var/log/docker_log/mysql/error.log
#開啟慢查詢?nèi)罩?
slow_query_log = 1
#超出次設(shè)定值的SQL即被記錄到慢查詢?nèi)罩?
long_query_time = 6
slow_query_log_file = /var/log/docker_log/mysql/slow.log
#表示記錄下沒有使用索引的查詢
log_queries_not_using_indexes = 1
#記錄管理語句
log_slow_admin_statements = 1
#開啟復(fù)制從庫復(fù)制的慢查詢的日志
log_slow_slave_statements = 1
#設(shè)置每分鐘增長的沒有使用索引查詢的日志數(shù)量
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
#當每進行n次事務(wù)提交之后,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數(shù)據(jù)強制寫入磁盤。設(shè)置為零是讓系統(tǒng)自行決定
sync_binlog = 5
#開啟全局事務(wù)ID,GTID能夠保證讓一個從服務(wù)器到-的從服務(wù)器那里實現(xiàn)數(shù)據(jù)復(fù)制而且能夠?qū)崿F(xiàn)數(shù)據(jù)整合的
gtid_mode = on
#開啟gtid,必須主從全開
enforce_gtid_consistency = 1
#從服務(wù)器的更新是否寫入二進制日志
log_slave_updates = 1
#三種模式 STATEMENT(有可能主從數(shù)據(jù)不一致,日質(zhì)量小)、ROW(產(chǎn)生大量二進制日志)、MIXED
binlog_format = mixed
#relay-log日志記錄的是從服務(wù)器I/O線程將主服務(wù)器的二進制日志讀取過來記錄到從服務(wù)器本地文件,然后SQL線程會讀取relay-log日志的內(nèi)容并應(yīng)用到從服務(wù)器
relay_log = /var/log/docker_log/mysql/relay.log
relay_log_recovery = 1
#開啟簡單gtid,開啟此項會提升mysql執(zhí)行恢復(fù)的性能
binlog_gtid_-_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
#這個參數(shù)在一開始初始化時就要加入my.cnf里,如果已經(jīng)創(chuàng)建了表,再修改,啟動MySQL會報錯。最好為8K
#innodb_page_size = 16K
innodb_page_size = 8K
#數(shù)據(jù)緩沖區(qū)buffer pool大小,建議使用物理內(nèi)存的 75%
innodb_buffer_pool_size = 2G
#當buffer_pool的值較大的時候為1,較小的設(shè)置為8
innodb_buffer_pool_instances = 8
#運行時load緩沖池,快速預(yù)熱緩沖池,將buffer pool的內(nèi)容(文件頁的索引)dump到文件中,然后快速load到buffer pool中。避免了數(shù)據(jù)庫的預(yù)熱過程,提高了應(yīng)用訪問的性能
innodb_buffer_pool_load_at_startup = 1
#運行時dump緩沖池
innodb_buffer_pool_dump_at_shutdown = 1
#在innodb中處理用戶查詢后,其結(jié)果在內(nèi)存空間的緩沖池已經(jīng)發(fā)生變化,但是還未記錄到磁盤。這種頁面稱為臟頁,將臟頁記錄到磁盤的過程稱為刷臟
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
#事務(wù)等待獲取資源等待的最長時間,超過這個時間還未分配到資源則會返回應(yīng)用失敗,默認50s
innodb_lock_wait_timeout = 30
#日志組所在的路徑,默認為data的home目錄;
innodb_log_group_home_dir = /data/mysql/
#innodb_undo_directory = /data/mysql/undolog/
#這個參數(shù)控制著innodb數(shù)據(jù)文件及REDo log的打開、刷寫模式,http://blog.csdn.net/gua___gua/article/details/44916207
#innodb_flush_method = O_DIRECT-不經(jīng)過系統(tǒng)緩存直接存入磁盤,
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
#innodb獨享表空間,有點很多,缺點會導(dǎo)致單個表文件過大
#innodb_file_per_table = 1
#undo日志回滾段 默認為128
innodb_undo_logs = 128
#傳統(tǒng)機械硬盤建議使用,而對于固態(tài)硬盤可以關(guān)閉
#innodb_flush_nei-ors = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
#控制是否使用獨立purge線程
innodb_purge_threads = 1
#改為ON時,允許單列索引最大達到3072。否則最大為767
innodb_large_prefix = 1
innodb_thread_concurrency = 8
#開啟后會將所有的死鎖記錄到error_log中
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 16M
########semi sync replication settings########
#半同步復(fù)制
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
#表示轉(zhuǎn)儲每個bp instance LRU上最熱的page的百分比。通過設(shè)置該參數(shù)可以減少轉(zhuǎn)儲的page數(shù)。
innodb_buffer_pool_dump_pct = 40
#刷臟的進程N-1
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
#控制回收(收縮)undo log的頻率.undo log空間在它的回滾段沒有得到釋放之前不會收縮,
innodb_purge_rseg_truncate_frequency = 128
log_timestamps=system
#該參數(shù)基于MySQL5.7 Group Replication組復(fù)制的,沒有使用不要設(shè)置
#transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
微信掃碼關(guān)注 億華聯(lián)眾 公眾號