mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解
[client]
default-character-set = utf8mb4
[mysql]
#開啟 tab 補(bǔ)全
#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
禁用主機(jī)名解析
skip-name-resolve
默認(rèn)的數(shù)據(jù)庫引擎
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
server_id = 330759# 為保證 GTID 復(fù)制的穩(wěn)定, 行級(jí)日志
binlog_format = row
開啟 gtid 功能
gtid_mode = on
保障 GTID 事務(wù)安全
當(dāng)啟用enforce_gtid_consistency功能的時(shí)候,
MySQL只允許能夠保障事務(wù)安全, 并且能夠被日志記錄的SQL語句被執(zhí)行,
像create table ... select 和 create temporarytable語句,
以及同時(shí)更新事務(wù)表和非事務(wù)表的SQL語句或事務(wù)都不允許執(zhí)行
enforce-gtid-consistency = true# 以下兩條配置為主從切換, 數(shù)據(jù)庫高可用的必須配置
開啟 binlog 日志功能
log_bin = mysql57-bin
開啟從庫更新 binlog 日志
log-slave-updates = on
#slave復(fù)制進(jìn)程不隨mysql啟動(dòng)而啟動(dòng)
skip_slave_start=1### 慢查詢?nèi)罩?/p>
打開慢查詢?nèi)罩竟δ?/p>
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
自動(dòng)修復(fù)
記錄 relay.info 到數(shù)據(jù)表中
relay_log_info_repository = TABLE
記錄 master.info 到數(shù)據(jù)表中
master_info_repository = TABLE
啟用 relaylog 的自動(dòng)修復(fù)功能
relay_log_recovery = on
在 SQL 線程執(zhí)行完一個(gè) relaylog 后自動(dòng)刪除
relay_log_purge = 1### 數(shù)據(jù)安全性配置
wei關(guān)閉 master 創(chuàng)建 function 的功能
log_bin_trust_function_creators = on
每執(zhí)行一個(gè)事務(wù)都強(qiáng)制寫入磁盤
sync_binlog = 1# timestamp 列如果沒有顯式定義為 not null, 則支持null屬性
設(shè)置 timestamp 的列值為 null, 不會(huì)被設(shè)置為 current timestamp
explicit_defaults_for_timestamp=true### 優(yōu)化配置
優(yōu)化中文全文模糊索引
ft_min_word_len = 1# 默認(rèn)庫名表名保存為小寫, 不區(qū)分大小寫
lower_case_table_names = 1# 單條記錄寫入最大的大小限制
過小可能會(huì)導(dǎo)致寫入(導(dǎo)入)數(shù)據(jù)失敗
max_allowed_packet = 256M
半同步復(fù)制開啟
#rpl_semi_sync_master_enabled = 1#rpl_semi_sync_slave_enabled = 1# 半同步復(fù)制超時(shí)時(shí)間設(shè)置
#rpl_semi_sync_master_timeout = 1000# 復(fù)制模式(保持系統(tǒng)默認(rèn))
#rpl_semi_sync_master_wait_point = AFTER_SYNC
后端只要有一臺(tái)收到日志并寫入 relaylog 就算成功
#rpl_semi_sync_master_wait_slave_count = 1# 多線程復(fù)制
基于組提交的并行復(fù)制方式
slave_parallel_type = logical_clock
#并行的SQL線程數(shù)量,此參數(shù)只有設(shè)置 1
#經(jīng)過測(cè)試對(duì)比發(fā)現(xiàn), 如果主庫的連接線程為M, 只有M < N的情況下, 備庫的延遲才可以完全避免。
slave_parallel_workers = 4### 連接數(shù)限制
max_connections = 1500# 驗(yàn)證密碼超過20次拒絕連接
max_connect_errors = 200# back_log值指出在mysql暫時(shí)停止回答新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中
也就是說,如果MySql的連接數(shù)達(dá)到max_connections時(shí),新來的請(qǐng)求將會(huì)被存在堆棧中
以等待某一連接釋放資源,該堆棧的數(shù)量即back_log,如果等待連接的數(shù)量超過back_log
將不被授予連接資源
back_log = 500open_files_limit = 65535# 服務(wù)器關(guān)閉交互式連接前等待活動(dòng)的秒數(shù)
interactive_timeout = 3600# 服務(wù)器關(guān)閉非交互連接之前等待活動(dòng)的秒數(shù)
wait_timeout = 3600### 內(nèi)存分配
指定表高速緩存的大小。每當(dāng)MySQL訪問一個(gè)表時(shí),如果在表緩沖區(qū)中還有空間
該表就被打開并放入其中,這樣可以更快地訪問表內(nèi)容
table_open_cache = 1024# 為每個(gè)session 分配的內(nèi)存, 在事務(wù)過程中用來存儲(chǔ)二進(jìn)制日志的緩存
binlog_cache_size = 4M
在內(nèi)存的臨時(shí)表最大大小
tmp_table_size = 128M
創(chuàng)建內(nèi)存表的最大大小(保持系統(tǒng)默認(rèn), 不允許創(chuàng)建過大的內(nèi)存表)
如果有需求當(dāng)做緩存來用, 可以適當(dāng)調(diào)大此值
max_heap_table_size = 16M
順序讀, 讀入緩沖區(qū)大小設(shè)置
全表掃描次數(shù)多的話, 可以調(diào)大此值
read_buffer_size = 1M
隨機(jī)讀, 讀入緩沖區(qū)大小設(shè)置
read_rnd_buffer_size = 8M
高并發(fā)的情況下, 需要減小此值到64K-128K
sort_buffer_size = 1M
每個(gè)查詢最大的緩存大小是1M, 最大緩存64M 數(shù)據(jù)
query_cache_size = 64M
query_cache_limit = 1M
提到 join 的效率
join_buffer_size = 16M
線程連接重復(fù)利用
thread_cache_size = 64### InnoDB 優(yōu)化
內(nèi)存利用方面的設(shè)置
數(shù)據(jù)緩沖區(qū)
innodb_buffer_pool_size=2G
日志方面設(shè)置
事務(wù)日志大小
innodb_log_file_size = 256M
日志緩沖區(qū)大小
innodb_log_buffer_size = 4M
事務(wù)在內(nèi)存中的緩沖
innodb_log_buffer_size = 3M
主庫保持系統(tǒng)默認(rèn), 事務(wù)立即寫入磁盤, 不會(huì)丟失任何一個(gè)事務(wù)
innodb_flush_log_at_trx_commit = 1# mysql 的數(shù)據(jù)文件設(shè)置, 初始100, 以10M 自動(dòng)擴(kuò)展
#innodb_data_file_path = ibdata1:100M:autoextend
為提高性能, MySQL可以以循環(huán)方式將日志文件寫到多個(gè)文件
innodb_log_files_in_group = 3##其他設(shè)置
如果庫里的表特別多的情況,請(qǐng)?jiān)黾哟酥?/p>
#innodb_open_files = 800# 為每個(gè) InnoDB 表分配單獨(dú)的表空間
innodb_file_per_table = 1# InnoDB 使用后臺(tái)線程處理數(shù)據(jù)頁上寫 I/O(輸入)請(qǐng)求的數(shù)量
innodb_write_io_threads = 8# InnoDB 使用后臺(tái)線程處理數(shù)據(jù)頁上讀 I/O(輸出)請(qǐng)求的數(shù)量
innodb_read_io_threads = 8# 啟用單獨(dú)的線程來回收無用的數(shù)據(jù)
innodb_purge_threads = 1# 臟數(shù)據(jù)刷入磁盤(先保持系統(tǒng)默認(rèn), swap 過多使用時(shí), 調(diào)小此值, 調(diào)小后, 與磁盤交互增多, 性能降低)
innodb_max_dirty_pages_pct = 90# 事務(wù)等待獲取資源等待的最長時(shí)間
innodb_lock_wait_timeout = 120# 開啟 InnoDB 嚴(yán)格檢查模式, 不警告, 直接報(bào)錯(cuò) 1開啟 0關(guān)閉
innodb_strict_mode=1# 允許列索引最大達(dá)到3072
innodb_large_prefix = on
[mysqldump]
開啟快速導(dǎo)出
quick
default-character-set = utf8mb4
max_allowed_packet = 256M
總結(jié)
以上是生活随笔為你收集整理的mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕 TRX50 主板开始上市:支持线程
- 下一篇: 【视频】全天护眼,细节满满,荣耀100系