
一、基础配置[mysqld] # 声明以下配置属于MySQL服务器mysqld[mysqld]配置文件的模块标识表示这是 MySQL 服务器的配置段。二、路径与基础设置datadir/var/lib/mysql socket/var/lib/mysql/mysql.sock pid-file/var/run/mysqld/mysqld.pid character-set-serverutf8mb4 collation-serverutf8mb4_unicode_cidatadir数据库文件存储路径表数据、索引等。socketUnix 套接字文件路径本地客户端通过此文件连接 MySQL。pid-fileMySQL 进程 ID 文件路径用于管理 MySQL 服务。character-set-server服务器默认字符集utf8mb4支持所有 Unicode 字符包括 emoji。collation-server字符集排序规则utf8mb4_unicode_ci表示不区分大小写。三、内存配置最核心innodb_buffer_pool_size5G innodb_log_buffer_size64M key_buffer_size64Minnodb_buffer_pool_sizeInnoDB 存储引擎的缓存池大小缓存数据和索引。建议设为服务器内存的 50%-70%示例中 8GB 内存分配 5GB。值越大磁盘 IO 越少性能越好。innodb_log_buffer_sizeInnoDB 日志缓冲区大小临时存储待写入磁盘的事务日志。建议写操作频繁时调大如 64M-128M减少磁盘 IO。key_buffer_sizeMyISAM 引擎的索引缓存InnoDB 用户可设小值。建议若全用 InnoDB设为 32M-64MMySQL 5.7 默认 InnoDBMyISAM 已淘汰。四、连接管理max_connections500 wait_timeout300 interactive_timeout300 max_user_connections100max_connections允许的最大并发连接数。建议根据业务峰值调整如电商秒杀场景可设 1000。注意每个连接约占 1-4MB 内存避免设置过大导致内存溢出。wait_timeout/interactive_timeout非交互式 / 交互式连接的空闲超时时间秒。建议设为 300 秒5 分钟避免空闲连接长期占用资源。max_user_connections单个用户的最大连接数。建议设为 100-200防止单个用户耗尽连接资源。五、InnoDB 引擎优化重点innodb_flush_log_at_trx_commit1 innodb_file_per_table1 innodb_flush_methodO_DIRECT innodb_io_capacity2000 innodb_read_io_threads4 innodb_write_io_threads4innodb_flush_log_at_trx_commit事务日志刷新策略影响安全性与性能。1默认每次事务提交立即刷盘最安全性能略低2提交后写入操作系统缓存每秒刷盘性能好断电可能丢 1 秒数据0每秒刷盘性能最好风险最高。建议生产环境优先选1非核心场景可选2。innodb_file_per_table是否为每个表创建独立的.ibd文件。建议设为1开启方便单独管理表空间如删除表释放磁盘空间。innodb_flush_method日志 / 数据文件的刷盘方式。建议Linux 设为O_DIRECT避免双重缓存Windows 忽略此参数。innodb_io_capacityInnoDB 的 IO 吞吐量上限影响后台刷盘效率。建议机械硬盘设 1000SSD 设 2000-20000根据实际性能调整。innodb_read/write_io_threads读写 IO 线程数提升并发 IO 能力。建议根据 CPU 核心数调整如 4-8 核设为 4-8默认值为 4。六、查询优化slow_query_log1 long_query_time1 slow_query_log_file/var/log/mysql/slow.log join_buffer_size512K sort_buffer_size2Mslow_query_log是否开启慢查询日志记录执行时间超过阈值的 SQL。建议必须开启设为1用于定位需要优化的 SQL。long_query_time慢查询阈值秒。建议设为 1 秒敏感业务可设 0.5 秒。slow_query_log_file慢查询日志存储路径。建议确保路径存在且 MySQL 有写入权限。join_buffer_size/sort_buffer_size表连接JOIN和排序ORDER BY的缓存大小。建议不宜过大每个连接独立分配避免内存溢出。七、其他重要参数max_allowed_packet128M table_open_cache2048 thread_cache_size32 log_error/var/log/mysql/error.logmax_allowed_packet单个 SQL 语句 / 数据包的最大大小。建议若有大字段如 TEXT/BLOB或批量插入设为 128M-1G避免 “Packet too large” 错误。table_open_cache表缓存缓存打开的表文件描述符。建议根据数据库表数量调整如 1000 张表设 2048减少重复打开表的开销。thread_cache_size线程缓存复用空闲线程减少创建 / 销毁开销。建议并发高时调大如 32-64可通过Threads_created状态值判断是否足够。log_error错误日志路径。建议必须开启用于排查 MySQL 启动 / 运行错误如崩溃、权限问题。八、配置验证命令修改配置后可通过以下命令验证参数是否生效-- 查看所有配置模糊搜索SHOWVARIABLESLIKE参数名;-- 示例查看innodb_buffer_pool_sizeSHOWVARIABLESLIKEinnodb_buffer_pool_size;-- 查看MySQL状态如连接数、缓存命中率SHOWSTATUS;九、注意事项重启生效修改配置文件后需重启 MySQL 服务systemctl restart mysqld。动态调整部分参数支持在线修改无需重启例如SET GLOBAL max_connections500;仅临时生效重启后恢复配置文件值。监控与迭代定期分析慢查询日志用pt-query-digest工具优化高频低效 SQL。通过理解每个参数的作用你可以根据服务器硬件和业务特点灵活调整配置实现 MySQL 性能的最大化。