MySQL 5.7 my.cnf配置文件詳解
default-character-set = utf8mb4
[mysql]
#開啟 tab 補全
#auto-rehash
default-character-set = utf8mb4
[mysqld]
port=3306
basedir=/data/server/mysql57/
datadir=/data/server/mysql57/data/
socket=/data/server/mysql57/data/mysql.sock
symbolic-links=0
log-error=/data/logs/mysql57/mysqld.log
pid-file=/data/server/mysql57/data/mysqld57.pid
禁用主機名解析
skip-name-resolve
默認的數據庫引擎
default-storage-engine = InnoDB
innodb-file-per-table=1innodb_force_recovery = 1#一些坑
group_concat_max_len = 10240sql_mode=expire_logs_days = 7memlock
字符集配置
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=‘SET NAMES utf8mb4‘### GTID
binlog_format = row
開啟 gtid 功能
gtid_mode = on
保障 GTID 事務安全
當啟用enforce_gtid_consistency功能的時候,
MySQL只允許能夠保障事務安全, 並且能夠被日誌記錄的SQL語句被執行,
像create table ... select 和 create temporarytable語句,
以及同時更新事務表和非事務表的SQL語句或事務都不允許執行
enforce-gtid-consistency = true# 以下兩條配置為主從切換, 數據庫高可用的必須配置
開啟 binlog 日誌功能
log_bin = mysql57-bin
開啟從庫更新 binlog 日誌
log-slave-updates = on
#slave復制進程不隨mysql啟動而啟動
skip_slave_start=1### 慢查詢日誌
打開慢查詢日誌功能
slow_query_log = 1# 超過2秒的查詢記錄下來
long_query_time = 2# 記錄下沒有使用索引的查詢
log_queries_not_using_indexes = 0slow_query_log_file =/data/logs/mysql57/slow.log
#log=/data/logs/mysql57/all.log
自動修復
記錄 relay.info 到數據表中
relay_log_info_repository = TABLE
記錄 master.info 到數據表中
master_info_repository = TABLE
啟用 relaylog 的自動修復功能
relay_log_recovery = on
在 SQL 線程執行完一個 relaylog 後自動刪除
relay_log_purge = 1### 數據安全性配置
wei關閉 master 創建 function 的功能
log_bin_trust_function_creators = on
每執行一個事務都強制寫入磁盤
sync_binlog = 1# timestamp 列如果沒有顯式定義為 not null, 則支持null屬性
設置 timestamp 的列值為 null, 不會被設置為 current timestamp
explicit_defaults_for_timestamp=true### 優化配置
優化中文全文模糊索引
ft_min_word_len = 1# 默認庫名表名保存為小寫, 不區分大小寫
lower_case_table_names = 1# 單條記錄寫入最大的大小限制
過小可能會導致寫入(導入)數據失敗
max_allowed_packet = 256M
半同步復制開啟
#rpl_semi_sync_master_enabled = 1#rpl_semi_sync_slave_enabled = 1# 半同步復制超時時間設置
#rpl_semi_sync_master_timeout = 1000# 復制模式(保持系統默認)
#rpl_semi_sync_master_wait_point = AFTER_SYNC
後端只要有一臺收到日誌並寫入 relaylog 就算成功
#rpl_semi_sync_master_wait_slave_count = 1# 多線程復制
基於組提交的並行復制方式
slave_parallel_type = logical_clock
#並行的SQL線程數量,此參數只有設置 1<N的情況下才會才起N個線程進行SQL重做。
#經過測試對比發現, 如果主庫的連接線程為M, 只有M < N的情況下, 備庫的延遲才可以完全避免。
slave_parallel_workers = 4### 連接數限制
max_connections = 1500# 驗證密碼超過20次拒絕連接
max_connect_errors = 200# back_log值指出在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中
也就是說,如果MySql的連接數達到max_connections時,新來的請求將會被存在堆棧中
以等待某一連接釋放資源,該堆棧的數量即back_log,如果等待連接的數量超過back_log
將不被授予連接資源
back_log = 500open_files_limit = 65535# 服務器關閉交互式連接前等待活動的秒數
interactive_timeout = 3600# 服務器關閉非交互連接之前等待活動的秒數
wait_timeout = 3600### 內存分配
指定表高速緩存的大小。每當MySQL訪問一個表時,如果在表緩沖區中還有空間
該表就被打開並放入其中,這樣可以更快地訪問表內容
table_open_cache = 1024# 為每個session 分配的內存, 在事務過程中用來存儲二進制日誌的緩存
binlog_cache_size = 4M
在內存的臨時表最大大小
tmp_table_size = 128M
創建內存表的最大大小(保持系統默認, 不允許創建過大的內存表)
如果有需求當做緩存來用, 可以適當調大此值
max_heap_table_size = 16M
順序讀, 讀入緩沖區大小設置
全表掃描次數多的話, 可以調大此值
read_buffer_size = 1M
隨機讀, 讀入緩沖區大小設置
read_rnd_buffer_size = 8M
高並發的情況下, 需要減小此值到64K-128K
sort_buffer_size = 1M
每個查詢最大的緩存大小是1M, 最大緩存64M 數據
query_cache_size = 64M
query_cache_limit = 1M
提到 join 的效率
join_buffer_size = 16M
線程連接重復利用
thread_cache_size = 64### InnoDB 優化
內存利用方面的設置
數據緩沖區
innodb_buffer_pool_size=2G
日誌方面設置
事務日誌大小
innodb_log_file_size = 256M
日誌緩沖區大小
innodb_log_buffer_size = 4M
事務在內存中的緩沖
innodb_log_buffer_size = 3M
主庫保持系統默認, 事務立即寫入磁盤, 不會丟失任何一個事務
innodb_flush_log_at_trx_commit = 1# mysql 的數據文件設置, 初始100, 以10M 自動擴展
#innodb_data_file_path = ibdata1:100M:autoextend
為提高性能, MySQL可以以循環方式將日誌文件寫到多個文件
innodb_log_files_in_group = 3##其他設置
如果庫裏的表特別多的情況,請增加此值
#innodb_open_files = 800# 為每個 InnoDB 表分配單獨的表空間
innodb_file_per_table = 1# InnoDB 使用後臺線程處理數據頁上寫 I/O(輸入)請求的數量
innodb_write_io_threads = 8# InnoDB 使用後臺線程處理數據頁上讀 I/O(輸出)請求的數量
innodb_read_io_threads = 8# 啟用單獨的線程來回收無用的數據
innodb_purge_threads = 1# 臟數據刷入磁盤(先保持系統默認, swap 過多使用時, 調小此值, 調小後, 與磁盤交互增多, 性能降低)
innodb_max_dirty_pages_pct = 90# 事務等待獲取資源等待的最長時間
innodb_lock_wait_timeout = 120# 開啟 InnoDB 嚴格檢查模式, 不警告, 直接報錯 1開啟 0關閉
innodb_strict_mode=1# 允許列索引最大達到3072
innodb_large_prefix = on
[mysqldump]
開啟快速導出
quick
default-character-set = utf8mb4
max_allowed_packet = 256M
MySQL 5.7 my.cnf配置文件詳解