日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解

發布時間:2023/12/4 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[client]

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

server_id = 330759# 為保證 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

#經過測試對比發現, 如果主庫的連接線程為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表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。