mysql5.7的配置文件優化,引用了別人的模板,根據自己的情況修改了一些參數,加上注釋,留着備用,感興趣的朋友可以借鑒一下,如果無法啟動可以查看一下error_log,修改相應的參數。
# 打開配置文件 vim /etc/my.cnf
內容說明
[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 #支持符號鏈接,就是可以通過軟連接的方式,管理其他目錄的數據庫,最好不要開啟,當一個磁盤或分區空間不夠時,可以開啟該參數將數據存儲到其他的磁盤或分區。 #http://blog.csdn.net/moxiaomomo/article/details/17092871 symbolic-links=0 ########basic settings######## server-id = 11 port = 3306 user = mysql #設置autocommit=0,則用戶將一直處於某個事務中,直到執行一條commit提交或rollback語句才會結束當前事務重新開始一個新的事務。set autocommit=0的好處是在頻繁開啟事務的場景下,減少一次begin的交互。 autocommit = 1 #utf8mb4編碼是utf8編碼的超集,兼容utf8,並且能存儲4字節的表情字符。 #采用utf8mb4編碼的好處是:存儲與獲取數據的時候,不用再考慮表情字符的編碼與解碼問題。 character_set_server=utf8mb4 skip_name_resolve = 1 max_connections = 800 # 對於同一主機,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST。 max_connect_errors = 1000 #數據庫隔離級別 transaction_isolation = READ-COMMITTED #MySQL在完成某些join(連接)需求的時候,為了減少參與join的“被驅動表”的讀取次數以提高性能,需要使用到join buffer來協助完成join操作當join buffer 太小,MySQL不會將該buffer存入磁盤文件而是先將join buffer中的結果與需求join的表進行操作,然后清空join buffer中的數據,繼續將剩余的結果集寫入次buffer中 join_buffer_size = 128M tmp_table_size = 64M tmpdir = /tmp #該值設置過小將導致單個記錄超過限制后寫入數據庫失敗,且后續記錄寫入也將失敗 max_allowed_packet = 64M #mysql在關閉一個交互的連接之前所要等待的秒數 interactive_timeout = 1200 #mysql在關閉一個非交互的連接之前所要等待的秒數 wait_timeout = 600 #MySQL讀入緩沖區的大小 read_buffer_size = 16M #MySQL的隨機讀緩沖區大小 read_rnd_buffer_size = 8M #MySQL的順序讀緩沖區大小 sort_buffer_size = 8M ########log settings######## log_error = /var/log/docker_log/mysql/error.log #開啟慢查詢日志 slow_query_log = 1 #超出次設定值的SQL即被記錄到慢查詢日志 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 #開啟復制從庫復制的慢查詢的日志 log_slow_slave_statements = 1 #設置每分鍾增長的沒有使用索引查詢的日志數量 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次事務提交之后,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。設置為零是讓系統自行決定 sync_binlog = 5 #開啟全局事務ID,GTID能夠保證讓一個從服務器到其他的從服務器那里實現數據復制而且能夠實現數據整合的 gtid_mode = on #開啟gtid,必須主從全開 enforce_gtid_consistency = 1 #從服務器的更新是否寫入二進制日志 log_slave_updates = 1 #三種模式 STATEMENT(有可能主從數據不一致,日質量小)、ROW(產生大量二進制日志)、MIXED binlog_format = mixed #relay-log日志記錄的是從服務器I/O線程將主服務器的二進制日志讀取過來記錄到從服務器本地文件,然后SQL線程會讀取relay-log日志的內容並應用到從服務器 relay_log = /var/log/docker_log/mysql/relay.log relay_log_recovery = 1 #開啟簡單gtid,開啟此項會提升mysql執行恢復的性能 binlog_gtid_simple_recovery = 1 slave_skip_errors = ddl_exist_errors ########innodb settings######## #這個參數在一開始初始化時就要加入my.cnf里,如果已經創建了表,再修改,啟動MySQL會報錯。最好為8K #innodb_page_size = 16K innodb_page_size = 8K #數據緩沖區buffer pool大小,建議使用物理內存的 75% innodb_buffer_pool_size = 2G #當buffer_pool的值較大的時候為1,較小的設置為8 innodb_buffer_pool_instances = 8 #運行時load緩沖池,快速預熱緩沖池,將buffer pool的內容(文件頁的索引)dump到文件中,然后快速load到buffer pool中。避免了數據庫的預熱過程,提高了應用訪問的性能 innodb_buffer_pool_load_at_startup = 1 #運行時dump緩沖池 innodb_buffer_pool_dump_at_shutdown = 1 #在innodb中處理用戶查詢后,其結果在內存空間的緩沖池已經發生變化,但是還未記錄到磁盤。這種頁面稱為臟頁,將臟頁記錄到磁盤的過程稱為刷臟 innodb_lru_scan_depth = 2000 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 #事務等待獲取資源等待的最長時間,超過這個時間還未分配到資源則會返回應用失敗,默認50s innodb_lock_wait_timeout = 30 #日志組所在的路徑,默認為data的home目錄; innodb_log_group_home_dir = /data/mysql/ #innodb_undo_directory = /data/mysql/undolog/ #這個參數控制着innodb數據文件及redo log的打開、刷寫模式,http://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獨享表空間,有點很多,缺點會導致單個表文件過大 #innodb_file_per_table = 1 #undo日志回滾段 默認為128 innodb_undo_logs = 128 #傳統機械硬盤建議使用,而對於固態硬盤可以關閉 #innodb_flush_neighbors = 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######## #半同步復制 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 #表示轉儲每個bp instance LRU上最熱的page的百分比。通過設置該參數可以減少轉儲的page數。 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 #該參數基於MySQL5.7 Group Replication組復制的,沒有使用不要設置 #transaction_write_set_extraction=MURMUR32 #http://www.cnblogs.com/hzhida/archive/2012/08/08/2628826.html show_compatibility_56=on