67 lines
4.8 KiB
INI
67 lines
4.8 KiB
INI
[mysqld]
|
||
# 基础配置
|
||
port = 3306 # 端口号(默认3306,如需修改需同步防火墙)
|
||
socket = /var/run/mysqld/mysqld.sock # 套接字文件路径(Linux)
|
||
pid-file = /var/run/mysqld/mysqld.pid # PID文件路径
|
||
datadir = /var/lib/mysql # 数据存储目录(需确保权限正确)
|
||
default-storage-engine = InnoDB # 默认存储引擎(InnoDB支持事务、外键)
|
||
character-set-server = utf8mb4 # 服务器默认字符集(utf8mb4支持emoji)
|
||
collation-server = utf8mb4_general_ci # 服务器默认排序规则
|
||
lower_case_table_names = 1 # 表名不区分大小写(0:区分,1:不区分,仅Linux有效)
|
||
skip-name-resolve # 禁用DNS解析(加快连接速度,避免连接超时)
|
||
|
||
# 连接与并发配置
|
||
max_connections = 500 # 最大连接数(根据服务器内存调整,8G内存建议500-1000)
|
||
max_user_connections = 400 # 单个用户最大连接数(避免某用户耗尽连接)
|
||
wait_timeout = 300 # 空闲连接超时时间(秒,默认8小时,建议5-10分钟)
|
||
interactive_timeout = 300 # 交互式连接超时时间(与wait_timeout保持一致)
|
||
back_log = 100 # 连接队列长度(当连接数达max_connections时,排队等待的连接数)
|
||
|
||
# InnoDB 引擎优化(核心性能配置)
|
||
innodb_buffer_pool_size = 4G # InnoDB缓冲池大小(建议设为服务器内存的50%-70%,如8G内存设4G)
|
||
innodb_buffer_pool_instances = 4 # 缓冲池实例数(与CPU核心数匹配,16G以上内存建议4-8个)
|
||
innodb_flush_log_at_trx_commit = 1 # 事务提交时日志写入策略(1:实时写入,最安全;0:每秒写入,性能高但可能丢数据)
|
||
innodb_log_buffer_size = 16M # 日志缓冲区大小(大事务场景可增大至32M)
|
||
innodb_log_file_size = 1G # 单个日志文件大小(建议1G-2G,太大影响恢复速度,太小影响写入性能)
|
||
innodb_log_files_in_group = 2 # 日志文件组数量(默认2个,通常无需修改)
|
||
innodb_flush_method = O_DIRECT # 数据刷新方式(Linux推荐O_DIRECT,避免操作系统缓存二次缓存)
|
||
innodb_read_io_threads = 8 # 读IO线程数(根据CPU核心数调整,建议8-16)
|
||
innodb_write_io_threads = 8 # 写IO线程数(同上)
|
||
innodb_file_per_table = 1 # 每个表使用独立表空间(便于管理和回收空间)
|
||
innodb_max_dirty_pages_pct = 75 # 脏页占比上限(达到后触发刷新,默认75%)
|
||
|
||
# 查询缓存(MySQL 8.0已移除查询缓存,无需配置)
|
||
|
||
# 日志配置(关键:便于问题排查和性能优化)
|
||
slow_query_log = 1 # 开启慢查询日志(1:开启,0:关闭)
|
||
slow_query_log_file = /var/log/mysql/slow.log # 慢查询日志路径(需确保mysql用户有写入权限)
|
||
long_query_time = 2 # 慢查询阈值(秒,超过此时间的查询记录到日志)
|
||
log_queries_not_using_indexes = 1 # 记录未使用索引的查询(便于优化无索引SQL)
|
||
log_error = /var/log/mysql/error.log # 错误日志路径
|
||
general_log = 0 # 关闭通用查询日志(1:开启,会记录所有SQL,性能影响大)
|
||
# general_log_file = /var/log/mysql/general.log
|
||
|
||
# 其他优化
|
||
table_open_cache = 2048 # 表缓存数量(缓存打开的表,建议2048-4096)
|
||
table_definition_cache = 1024 # 表定义缓存(建议1024-2048)
|
||
max_allowed_packet = 64M # 最大数据包大小(避免大字段插入/更新失败,建议32M-128M)
|
||
sort_buffer_size = 4M # 排序缓冲区大小(每个连接独立分配,不宜过大)
|
||
read_buffer_size = 2M # 顺序读缓冲区大小
|
||
read_rnd_buffer_size = 8M # 随机读缓冲区大小
|
||
join_buffer_size = 4M # 连接缓冲区大小(影响多表关联性能)
|
||
|
||
[mysqld_safe]
|
||
log-error = /var/log/mysql/error.log # 与mysqld部分的错误日志路径保持一致
|
||
socket = /var/run/mysqld/mysqld.sock
|
||
pid-file = /var/run/mysqld/mysqld.pid
|
||
|
||
[mysql]
|
||
default-character-set = utf8mb4 # 客户端默认字符集
|
||
prompt = "\u@\h [\d] > " # 客户端命令提示符(显示用户名@主机名 [数据库名])
|
||
|
||
[client]
|
||
port = 3306
|
||
socket = /var/run/mysqld/mysqld.sock # 与mysqld部分的socket路径一致
|
||
default-character-set = utf8mb4 # 客户端连接默认字符集
|
||
|