MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例,自己根据实际情况修改。 安装MySql8.4时,MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件,大概可看到下面这样的参数列表,可能不同版本的mysql参数多少会有一些不一致:

[client]

# 客户端连接 MySQL 服务器的端口号,通常是 3306。

port = 3306

# MySQL 服务器的套接字文件路径,用于本地连接。

socket =/usr/local/mysql/mysql.sock

#编码

default-character-set = utf8mb4

[mysqld]

#Mysql服务的唯一编号 每个mysql服务Id需唯一

server-id=1

# MySQL 服务器监听的端口号,通常也是 3306。

port = 3306

# MySQL 服务器的套接字文件路径,用于本地连接。

socket = /usr/local/mysql/mysql.sock

# MySQL 的根目录路径,通常用于安装 MySQL 的根目录(default /usr)

basedir = /usr/local/mysql

# mysql存放数据库文件的目录路径,通常与basedir不在一个文件夹内

datadir=/var/lib/mysql

# 启用binglog日志文件,可以指定目录,如果不指定则放在数据目录下面

log_bin = mysql-bin

#存放 MySQL 进程 ID 的文件路径。

pid-file = /usr/local/mysql/data/mysql.pid

#错误日志路径

log_error = /usr/local/mysql/logs/mysql-error.log

#临时数据路径

tmpdir=/usr/local/mysql/tmp

#用于指定 MySQL 服务器绑定的 IP 地址,0.0.0.0 表示绑定到所有可用的 IP 地址。

bind-address = 0.0.0.0

# 跳过密码登录

#skip-grant-tables

#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)

#transaction_isolation=READ-COMMITTED

# 连接到 MySQL 服务器时初始化 SQL 命令。

init-connect = 'SET NAMES utf8mb4'

# 服务器默认的字符集。

character-set-server = utf8mb4

#允许在内核中等待的连接数量

back_log = 300

# 允许的最大并发连接数。

max_connections = 1000

# 最大连接错误数

max_connect_errors = 6000

# 打开的文件数限制。

open_files_limit = 65535

# 表缓存大小。

table_open_cache = 128

# 单个查询的最大允许数据包大小

max_allowed_packet = 4M

# 二进制日志缓存大小

binlog_cache_size = 1M

#内部内存临时表的最大值 ,设置成128M。

#比如大数据量的group by ,order by时可能用到临时表,

#超过了这个值将写入磁盘,系统IO压力增大

# 最大堆表大小

max_heap_table_size = 8M

# 临时表大小

tmp_table_size = 16M

# 读取缓冲区大小

read_buffer_size = 2M

# 随机读取缓冲区大小

read_rnd_buffer_size = 8M

# 排序缓冲区大小

sort_buffer_size = 8M

# 连接缓冲区大小

join_buffer_size = 8M

# 键缓冲区大小

key_buffer_size = 4M

# 线程缓存大小

thread_cache_size = 8

#禁用mysql的缓存查询结果集功能

#后期根据业务情况测试决定是否开启

#大部分情况下关闭下面两项

# 查询缓存类型 (1 表示启用)

#query_cache_type = 0

# 查询缓存大小

#query_cache_size = 8M

# 查询缓存限制

#query_cache_limit = 2M

# 全文索引最小词长度

ft_min_word_len = 4

# 二进制日志文件的格式

binlog_format = mixed

# 二进制日志文件自动清理天数

expire_logs_days = 30

#慢查询sql日志设置

# 启用慢查询日志 (1 表示启用)

#slow_query_log = 1

#慢查询sql日志路径

#slow_query_log_file = /usr/local/mysql/logs/mysql-slow.log

# 定义慢查询的阈值时间

#long_query_time = 1

#检查未使用到索引的sql

log_queries_not_using_indexes=1

# 性能模式 (0 表示禁用)

performance_schema = 0

#明确指定 MySQL 是否应该使用严格的模式来检查日期和时间值:TIMESTAMP如果没有显示声明NOT NULL,允许NULL值

explicit_defaults_for_timestamp=true

# 表名大小写不敏感 (1 表示启用:不区分大小写)

lower_case_table_names = 1

# 禁用外部锁定,用于控制表级锁定

skip-external-locking

# 默认存储引擎 (InnoDB)

default_storage_engine = InnoDB

# 每个表使用单独的 InnoDB 文件

innodb_file_per_table = 1

# InnoDB 可以打开的最大文件数

innodb_open_files = 500

# InnoDB 缓冲池大小

innodb_buffer_pool_size = 64M

# InnoDB 写 I/O 线程数

innodb_write_io_threads = 4

# InnoDB 读 I/O 线程数

innodb_read_io_threads = 4

# InnoDB 线程并发度

innodb_thread_concurrency = 0

# InnoDB 清理线程数

innodb_purge_threads = 1

# InnoDB 日志刷新行为

innodb_flush_log_at_trx_commit = 2

# InnoDB 日志缓冲大小

innodb_log_buffer_size = 2M

# InnoDB 日志文件大小

innodb_log_file_size = 32M

# InnoDB 日志文件组数

innodb_log_files_in_group = 3

# InnoDB 最大脏页百分比

innodb_max_dirty_pages_pct = 90

# InnoDB 锁等待超时时间

innodb_lock_wait_timeout = 120

# 批量插入缓冲区大小

bulk_insert_buffer_size = 8M

#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭

#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效

# 交互超时时间

interactive_timeout = 28800

# 等待超时时间

wait_timeout = 28800

[mysqldump]

quick

# mysqldump 最大允许数据包大小,如果有BLOB对象建议修改成1G

max_allowed_packet = 100M

[myisamchk]

# MyISAM 检查工具的键缓冲区大小

key_buffer_size = 8M

# MyISAM 检查工具的排序缓冲区大小

sort_buffer_size = 8M

# 读缓存大小

read_buffer = 4M

# 写缓存大小

write_buffer = 4M