[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 # 客户端连接默认字符集