MySQL 配置参数详解(全版本 · 按用途与作用分类)

MySQL 的系统变量(即"配置参数")数量非常庞大------5.7/8.0/8.4/9.x 各版本累计定义超过 1000 个,且随版本不断新增、弃用和改名。要把每一个都逐一列出并不现实,但可以按作用域把它们完整地归类,再逐类说明每个参数的用途、作用与版本差异。下面这份按类别组织的参考,覆盖了 MySQL 主要参数族(InnoDB、连接、内存、日志复制、字符集、优化器、安全、组件等),并标注了关键版本变化。

阅读约定

  • 版本标注:5.7 / 8.0 / 8.4 / 9.x;未标注者多为跨版本通用。
  • 作用层级:GLOBAL(全局,影响新会话)/ SESSION(会话级);"动态"指可 SET 在线修改,"静态"指需重启。
  • 参数来源优先级(决定"改了是否生效"):命令行 > SET PERSIST 持久化值 > 配置文件 > 编译默认值。
  • 查看方式:SHOW VARIABLES LIKE 'xxx';、SELECT @@global.xxx;;来源与范围可查 performance_schema.variables_info(VARIABLE_SOURCE 含 COMPILED/GLOBAL/SERVER/EXPLICIT/EXTRA/USER/LOGIN/COMMAND_LINE/PERSISTED/DYNAMIC)。

一、参数体系总览

维度 说明
参数 vs 状态量 参数(variable)可设置;状态量(status)只读,如 Threads_connected、Slow_queries
作用域 全局 GLOBAL / 会话 SESSION
生效方式 动态(可 SET)/ 静态(需重启)
持久化 8.0 起支持 SET PERSIST,写入持久化文件
命名族 innodb_*、binlog_*、replica_*/slave_*、group_replication_*、performance_schema_*、character_set_*、optimizer_*、admin_*、audit_log*、validate_password* 等

二、InnoDB 参数(核心)

2.1 缓冲池与内存

参数 用途与作用 版本
innodb_buffer_pool_size InnoDB 缓存表与索引数据的内存区,最核心的性能参数;过大易启动失败或 OOM 5.7/8.0/8.4/9.x
innodb_buffer_pool_instances 将缓冲池拆分为多个实例以降低争用;>1 时缓冲池不能小于 1GiB 5.7+
innodb_buffer_pool_chunk_size 缓冲池扩容/缩容的块粒度 5.7.5+
innodb_buffer_pool_dump_at_shutdown / _load_now / _dump_now 关机时转储、启动时预热缓冲池,减少冷启动抖动 5.6+
innodb_change_buffer_max_size change buffer 占缓冲池上限比例 5.6+
innodb_log_buffer_size redo 日志内存缓冲大小 通用
innodb_sort_buffer_size 创建索引时排序缓冲 通用
innodb_additional_mem_pool_size 旧版内部数据结构内存池(已移除) 5.6 及更早

2.2 刷盘与 I/O

参数 用途与作用 版本
innodb_flush_log_at_trx_commit 事务提交时 redo 刷盘策略(1 最安全,0/2 性能优先但有丢数据窗口) 通用
innodb_flush_log_at_timeout 非 1 时的日志刷盘周期 通用
innodb_flush_method 数据/日志文件刷新方式;8.4 实测 Unix 默认仍为 fsync(网传 O_DIRECT 不实) 通用
innodb_flush_neighbors 刷脏页时是否顺带刷相邻页 5.6+
innodb_flush_sync 是否允许在 checkpoint 压力下突破 io_capacity 上限 8.0+
innodb_io_capacity / innodb_io_capacity_max 后台任务每秒可用 IOPS 预算;page cleaner 据此批量刷脏页 通用
innodb_read_io_threads / innodb_write_io_threads 读/写 I/O 线程数 通用
innodb_use_native_aio 是否使用 OS 原生异步 I/O 通用
innodb_use_fdatasync 用 fdatasync 替代 fsync 8.0.26+
innodb_fsync_threshold 控制 fsync 聚合阈值 8.0+
innodb_doublewrite_dir / innodb_doublewrite_pages doublewrite 目录与页数 8.0+
innodb_disable_sort_file_cache 禁用排序临时文件缓存 通用
innodb_fast_shutdown 关机模式(0/1/2) 通用
innodb_force_recovery 崩溃恢复级别 0--6,应急启动用 通用
innodb_force_load_corrupted 强制加载损坏页 通用

2.3 redo / undo 日志

参数 用途与作用 版本
innodb_redo_log_capacity ⭐ redo 日志总容量,取代旧参数 8.0.30+
innodb_log_file_size / innodb_log_files_in_group 旧版 redo 文件大小与个数,乘积决定 redo 总量 5.7 用;8.0.30 弃用,8.4 仅兼容保留
innodb_log_write_ahead_size redo 预写对齐 通用
innodb_log_checksums redo 校验和 8.0+
innodb_log_compressed_pages 压缩页是否记入 redo 通用
innodb_log_wait_for_flush_spin_hwm 等待刷盘的自旋阈值 8.0+
innodb_log_checkpoint_now / _fuzzy_now 手动触发 checkpoint 调试用
innodb_undo_directory undo 表空间目录 通用
innodb_undo_tablespaces / innodb_undo_logs undo 表空间/回滚段数量 通用
innodb_undo_log_truncate / innodb_max_undo_log_size undo 自动截断与上限 通用
innodb_rollback_segments 回滚段数量 通用
innodb_purge_threads / innodb_purge_batch_size 清除线程数与批量 通用
innodb_max_purge_lag / _delay purge 滞后限流 通用

2.4 并发、锁与死锁

参数 用途与作用 版本
innodb_thread_concurrency 并发进入内核线程数上限(0=不限) 通用
innodb_thread_sleep_delay / innodb_concurrency_tickets 并发控制相关 通用
innodb_lock_wait_timeout 行锁等待超时秒数 通用
innodb_deadlock_detect 死锁检测开关 8.0+
innodb_print_all_deadlocks 是否把所有死锁写入错误日志 通用
innodb_rollback_on_timeout 锁超时是否回滚整个事务 通用
innodb_spin_wait_delay / _pause_multiplier 自旋等待 通用
innodb_sync_array_size / innodb_sync_spin_loops 同步对象与自旋 通用
innodb_autoinc_lock_mode 自增锁模式(0/1/2) 通用
innodb_commit_concurrency 提交并发 通用
innodb_table_locks 是否让 LOCK TABLES 生效于 InnoDB 通用
innodb_support_xa XA 支持(8.0 移除) 5.7

2.5 表空间与文件

参数 用途与作用 版本
innodb_data_file_path / innodb_data_home_dir 系统表空间文件与目录 通用
innodb_file_per_table 每表独立表空间 通用
innodb_temp_data_file_path / innodb_temp_tablespaces_dir 临时表空间 通用
innodb_open_files 打开文件数上限 通用
innodb_page_size 页大小(4K/8K/16K/32K/64K) 通用
innodb_default_row_format 默认行格式 5.7.9+
innodb_strict_mode 严格模式 通用
innodb_online_alter_log_max_size 在线 DDL 日志上限 通用
innodb_autoextend_increment 表空间自动扩展步长 通用
innodb_validate_tablespace_paths 启动校验表空间路径 8.0+
innodb_directories 额外扫描的数据目录 8.0+

2.6 统计信息与优化器辅助

参数 用途与作用
innodb_stats_auto_recalc 统计信息自动重算
innodb_stats_persistent 持久化统计信息
innodb_stats_on_metadata 元数据查询时是否更新统计
innodb_stats_method NULL 值统计处理
innodb_stats_include_delete_marked 统计是否含删除标记行

2.7 全文索引、压缩、监控

参数 用途与作用
innodb_ft_min_token_size / _max_token_size 全文索引词长范围
innodb_ft_cache_size / _sort_pll_degree 全文索引缓存与并行度
innodb_ft_enable_stopword / _enable_diag_print / _aux_table 停用词与调试
innodb_compression_level / _failure_threshold_pct / _pad_pct_max 页压缩
innodb_checksum_algorithm / innodb_checksums 校验算法
innodb_monitor_enable/disable/reset 内部监控开关(调试)
innodb_status_output / _locks 是否周期性输出引擎状态/锁信息

三、连接与会话参数

参数 用途与作用 版本
max_connections 最大并发连接数;枢纽参数,派生 thread_cache_size/host_cache_size/back_log,并参与 open_files_limit 预算 通用
back_log 未完成握手的连接队列 通用
thread_cache_size 线程缓存数(默认 8+max_connections/100,上限 100) 通用
host_cache_size 主机名解析缓存 通用
thread_handling 连接处理模型 通用
thread_pool_* 线程池(企业版/Percona) 企业版
max_connect_errors 连接失败次数阈值 通用
connect_timeout 连接握手超时 通用
wait_timeout / interactive_timeout 空闲连接超时 通用
net_read_timeout / net_write_timeout 读写超时 通用
net_retry_count 网络重试次数 通用
net_buffer_length 网络缓冲初始大小 通用
max_allowed_packet 单包/单行最大字节数 通用
admin_address / admin_port 管理端口(注意其连接也占用 max_connections) 8.0+
admin_ssl_* / admin_tls_* 管理端口 TLS 配置 8.0+
connection_memory_limit / global_connection_memory_limit / connection_memory_chunk_size 连接级内存限额 8.0+
skip_name_resolve 关闭 DNS 反解 通用
skip_external_locking 关闭外部锁定 通用
max_execution_time SELECT 最大执行毫秒数 5.7.8+

四、内存与临时对象参数

参数 用途与作用
sort_buffer_size 排序缓冲;仅在排序落盘时增大才有效
join_buffer_size 连接缓冲;8.0 作为 hash join 内存预算可 spill
read_buffer_size / read_rnd_buffer_size 顺序/随机读缓冲
tmp_table_size / max_heap_table_size 内存临时表阈值(取较小值),超出转磁盘
internal_tmp_mem_storage_engine 内部临时表引擎(TempTable/MEMORY,8.0)
internal_tmp_disk_storage_engine 磁盘临时表引擎(5.7)
max_length_for_sort_data 排序行长度阈值
max_sort_length 排序使用字节数
query_alloc_block_size / range_alloc_block_size 解析/范围分配块
large_pages / large_page_size 大页支持
bulk_insert_buffer_size MyISAM 批量插入缓冲
key_buffer_size / key_cache_block_size MyISAM 索引缓存

五、日志、二进制日志与复制参数

5.1 通用日志

参数 用途与作用
general_log / general_log_file 通用查询日志开关与文件
slow_query_log / slow_query_log_file 慢查询日志开关与文件
long_query_time 慢查询阈值秒数
log_output 日志输出目的地(FILE/TABLE/NONE)
log_slow_admin_statements / log_slow_replica_statements 管理/复制语句是否记慢日志
log_slow_extra 慢日志是否记录额外信息
min_examined_row_limit 慢日志最小检查行数
log_timestamps 日志时间戳时区
log_error / log_error_verbosity 错误日志位置与详细度

5.2 二进制日志

参数 用途与作用 版本
log_bin 二进制日志开关(复制与备份基础) 通用
log_bin_basename / log_bin_index binlog 路径与索引 通用
binlog_format 格式(ROW/STATEMENT/MIXED);8.0 默认 ROW 通用
binlog_cache_size / binlog_stmt_cache_size 事务/非事务 binlog 缓存 通用
binlog_checksum binlog 校验 通用
binlog_row_image 行镜像(FULL/MINIMAL/NOBLOB) 通用
binlog_row_event_max_size / binlog_rows_query_log_events 行事件大小与原 SQL 记录 8.0+
binlog_expire_logs_seconds binlog 保留秒数 8.0+
expire_logs_days binlog 保留天数(旧参数,8.0 弃用) 5.7
binlog_error_action binlog 写失败时行为 通用
binlog_encryption / binlog_rotate_encryption_master_key_at_startup binlog 加密 8.0+
binlog_transaction_compression / _level_zstd 事务压缩 8.0+
binlog_group_commit_sync_delay / _no_delay_count 组提交延迟 通用
binlog_transaction_dependency_tracking / _history_size 并行复制依赖跟踪 5.7.22+
sync_binlog 每次提交刷 binlog 策略(1 最安全) 通用
sql_log_bin 当前会话是否记 binlog 通用
max_binlog_size 单个 binlog 文件大小 通用

5.3 复制(主从 / 副本)

参数 用途与作用 版本
server-id 实例唯一标识(复制必需) 通用
gtid_mode / gtid_executed / gtid_next / gtid_owned GTID 复制 5.6+
enforce_gtid_consistency GTID 一致性 5.7+
replica_* / slave_* 副本行为(8.0.22 起 slave_* 逐步改名为 replica_*,旧名保留) 8.0+
replica_parallel_workers / slave_parallel_workers 并行复制工作线程数 通用
replica_parallel_type / slave_parallel_type 并行策略 5.7
replica_skip_errors / slave_skip_errors 跳过指定错误 通用
replica_transaction_retries / slave_transaction_retries 事务重试 通用
replica_checkpoint_group / _period 副本 checkpoint 通用
replica_compressed_protocol 复制协议压缩 通用
replica_exec_mode / slave_exec_mode 复制执行模式(IDEMPOTENT/STRICT) 通用
replica_allow_higher_version_source 允许复制更高版本源 8.0.28+
log_replica_updates / log_slave_updates 副本是否写自己的 binlog 通用
read_only / super_read_only 只读控制 通用
relay_log / relay_log_basename / relay_log_index / relay_log_info_file relay log 配置 通用
max_relay_log_size relay log 大小 通用
relay_log_purge / relay_log_recovery relay log 清理与恢复 通用
sync_relay_log / sync_source_info / sync_master_info 刷盘策略 通用
rpl_semi_sync_master_enabled / _wait_for_slave_count / rpl_semi_sync_slave_enabled 半同步复制 插件
source_verify_checksum / master_verify_checksum 校验源 binlog 通用
report_host / report_port / report_password 副本上报信息 通用
auto_increment_increment / auto_increment_offset 自增步长/偏移(多主) 通用
master_info_repository / relay_log_info_repository 元数据存储位置(8.0.23 起固定为表) 5.7/8.0
pseudo_replica_mode / pseudo_slave_mode 伪复制模式(内部) 通用
require_row_format 要求行格式复制 8.0+

5.4 Group Replication(MGR)

参数 用途与作用
group_replication_group_name 复制组名
group_replication_start_on_boot 启动时自动加入组
group_replication_local_address 本地通信地址
group_replication_group_seeds 种子成员
group_replication_single_primary_mode 单主/多主模式
group_replication_bootstrap_group 引导组(仅首次)
group_replication_auto_increment_increment 组内自增步长
group_replication_member_expel_timeout 成员驱逐超时
group_replication_autorejoin_tries 自动重加入次数
group_replication_exit_state_action 退出状态动作
group_replication_flow_control_* 流控阈值
group_replication_message_cache_size 消息缓存
group_replication_consistency 一致性级别
group_replication_transaction_size_limit 事务大小上限
group_replication_recovery_* / _tls_* 恢复与 TLS

六、字符集与排序规则

参数 用途与作用
character_set_server 服务器默认字符集
character_set_database 默认库字符集
character_set_client 客户端发送语句的字符集
character_set_connection 连接层字符集
character_set_results 结果集字符集
character_set_filesystem 文件系统字符集(默认 binary)
character_set_system 系统元数据字符集(通常 utf8mb3)
character_sets_dir 字符集目录
collation_server / collation_database / collation_connection 对应排序规则
default_collation_for_utf8mb4 utf8mb4 默认排序规则
lc_time_names 日期时间本地化语言

排查乱码时按"客户端→连接→库→结果集→服务器"逐层比对 character_set_* 是否一致。


七、SQL 语义与优化器参数

参数 用途与作用 版本
sql_mode SQL 语义模式集合;8.0 默认含 ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES 等 6 个安全位(5.7 还含 NO_AUTO_CREATE_USER) 通用
optimizer_switch 优化器特性开关集合 通用
optimizer_search_depth / optimizer_prune_level 优化器搜索深度与剪枝 通用
optimizer_trace 优化器追踪(调试) 5.6+
eq_range_index_dive_limit 等值范围索引下潜上限 通用
range_optimizer_max_mem_size 范围优化内存上限 通用
max_join_size 连接结果行数上限 通用
sql_big_selects 允许大结果集 通用
sql_buffer_result 强制缓冲结果 通用
sql_auto_is_null NULL 自动判断 通用
sql_safe_updates 安全更新(无 WHERE 拒改) 通用
sql_notes / sql_warnings 备注/告警信息 通用
sql_require_primary_key 建表必须带主键 8.0+
sql_generate_invisible_primary_key 自动生成隐藏主键 8.0.30+
big_tables 大表模式 通用
end_markers_in_json JSON 输出结束标记 通用
div_precision_increment 除法精度 通用
explicit_defaults_for_timestamp TIMESTAMP 默认行为 通用
updatable_views_with_limit 可更新视图限制 通用
multi_range_count 多范围读 通用
regexp_time_limit / regexp_stack_limit 正则资源限制 8.0+
information_schema_stats_expiry I_S 统计缓存过期 8.0+
terminology_use_previous 术语新旧命名兼容 8.0.26+

八、存储引擎与表缓存

参数 用途与作用 版本
default_storage_engine 默认存储引擎 通用
default_tmp_storage_engine 默认临时表引擎 通用
disabled_storage_engines 禁用引擎列表 通用
table_open_cache 表缓存槽数;过大耗内存且拖慢 shutdown,并受 open_files_limit 压制 通用
table_open_cache_instances 表缓存分片 通用
table_definition_cache 表定义缓存 通用
table_encryption_privilege_check 加密表权限校验 8.0+
open_files_limit 进程打开文件上限,反向钳制 max_connections/table_open_cache 通用
keep_files_on_create CREATE 覆盖是否保留旧文件 通用
lower_case_table_names 表名大小写敏感性(平台相关) 通用
large_files_support 大文件支持 通用
myisam_* MyISAM 恢复、排序、指针等 通用
ndb_* NDB Cluster 相关 NDB
ndbinfo NDB 配置信息表 NDB 8.0+

九、Performance Schema

参数 用途与作用
performance_schema PFS 总开关(默认 ON,8.0)
performance_schema_digests_size 语句摘要表大小
performance_schema_accounts_size / _error_size 账户/错误表大小
performance_schema_events_stages_history_long_size 阶段历史表大小
performance_schema_events_statements_history_long_size 语句历史表大小
performance_schema_events_transactions_history_long_size 事务历史表大小
performance_schema_events_waits_history_long_size 等待历史表大小
performance_schema_max_socket_classes / _instances socket 仪器
performance_schema_session_connect_attrs_size 连接属性大小

PFS 内部内存会随 max_connections 和 table_open_cache 自动定容,评估实例内存时需一并考虑。


十、安全、认证与加密

参数 用途与作用 版本
default_authentication_plugin 默认认证插件(8.0 默认 caching_sha2_password) 5.7/8.0
caching_sha2_password_* caching_sha2 密钥与格式 8.0+
sha256_password_* / mysql_native_password_proxy_users 认证代理 通用
authentication_ldap_* / _kerberos_* / _fido_* / _openid_connect_* 企业版外部认证 企业版
validate_password.* 密码强度策略(length、dictionary_file、check_user_name 等) 组件
validate_password.changed_characters_percentage 新旧密码差异要求 8.0+
default_password_lifetime / password_require_current 密码有效期与改密校验 5.7+/8.0+
require_secure_transport 强制加密传输 5.7+
secure_file_priv 文件导入导出目录白名单 通用
secure_auth 旧认证安全模式 5.7
local_infile 允许 LOAD DATA LOCAL 通用
disconnect_on_expired_password 密码过期是否断连 通用
table_encryption_privilege_check / default_table_encryption 表加密 8.0+
keyring_* 密钥环组件(如 HashiCorp、OCI) 组件
block_encryption_mode 块加密算法模式 通用
auto_generate_certs 自动生成 SSL 证书 8.0+
ssl_ca/cert/key/cipher/crl/capath、tls_version、tls_ciphersuites TLS 配置 通用
protocol_compression_algorithms 协议压缩算法 8.0+
activate_all_roles_on_login / mandatory_roles 角色激活 8.0+
check_proxy_users / proxy_user 代理用户 通用
offline_mode 离线模式(仅管理员可连) 5.7.5+

十一、审计、组件与插件

参数 用途与作用 版本
audit_log_buffer_size / audit_log.buffer_size 审计缓冲 企业版/组件
audit_log_file / audit_log_database / audit_log.max_size 审计输出位置与大小 企业版/组件
audit_log_connection_policy / audit_log.current_session 审计记录范围 企业版
audit_log_compression / audit_log_encryption 审计压缩与加密 8.0+
audit_log_read_buffer_size / audit_log_flush_interval_seconds 审计读取与刷盘 组件
audit_log_format_unix_timestamp / audit_log_password_history_keep_days 审计格式与密码历史 8.0+
clone_max_network_bandwidth / clone_delay_after_data_drop / clone_block_ddl Clone 插件 8.0+
component_masking.dictionaries_flush_interval_seconds 数据脱敏组件 8.0+
enterprise_encryption.rsa_support_legacy_padding 企业加密兼容 8.0+
version_tokens_* 版本令牌 5.7+
daemon_memcached_option memcached 插件 5.7/8.0
mysqlx_* X Plugin 5.7.12+
event_scheduler 事件调度器 通用
init_connect / init_file / init_replica 连接/启动初始化 通用

十二、其他服务器级参数

参数 用途与作用
datadir / basedir / tmpdir / pid_file / socket / port 路径与端口
plugin_dir 插件目录
server_id 服务器 ID
hostname / system_time_zone / time_zone 主机与时区
lower_case_file_system 文件系统大小写
flush_time 周期性刷盘间隔
locking_service 锁服务
timestamp / time_format / datetime_format 时间格式(旧/兼容)
have_query_cache 查询缓存是否存在(8.0 已移除,恒为 NO)
show_compatibility_56 5.7 兼容 5.6 视图
session_track_* 会话跟踪(schema/gtids/system_variables/state_change)
warning_count / error_count 会话告警/错误计数
version_comment / version_compile_machine / version_compile_os 版本信息(只读)
profiling_history_size 性能分析历史
pseudo_thread_id 伪线程 ID

十三、版本演进与弃用速查

变化 说明
查询缓存 query_cache_*、have_query_cache 在 8.0 移除
redo 参数 innodb_log_file_size、innodb_log_files_in_group 自 8.0.30 弃用 ,改用 innodb_redo_log_capacity
复制命名 slave_* → replica_*(8.0.22+),旧名保留
复制元数据 master_info_repository、relay_log_info_repository 在 8.0.23+ 固定为表
默认认证 8.0 默认 caching_sha2_password
默认 sql_mode 8.0 移除 NO_AUTO_CREATE_USER
默认字符集 8.0 默认 utf8mb4
临时表引擎 internal_tmp_disk_storage_engine(5.7)→ internal_tmp_mem_storage_engine(8.0)
flush_method 默认 8.4 实测 Unix 默认仍 fsync(并非网传 O_DIRECT)
参数来源诊断 8.0 起 performance_schema.variables_info 可查 VARIABLE_SOURCE

十四、常见误区

  1. 改配置文件不生效 :被命令行、SET PERSIST 或错误配置段覆盖------用 variables_info 的 VARIABLE_SOURCE 定位。
  2. 只调一个参数忽略联动 :max_connections ↔ open_files_limit ↔ table_open_cache 相互钳制;innodb_buffer_pool_instances>1 时缓冲池需 ≥1GiB。
  3. 参数与状态量混淆 :Slow_queries、Threads_connected 是状态量,不可 SET。
  4. "调大一定更好" :sort_buffer_size、table_open_cache、innodb_io_capacity 都有适用边界。
  5. 跨版本/跨产品套用同名参数 :innodb_flush_method、innodb_log_file_size 在 MySQL 与 MariaDB 之间行为不同。
  6. 管理端口不受连接数限制的误解 :admin_port 的连接同样消耗 max_connections。

说明 :MySQL 全版本系统变量累计超过 1000 个,上表按作用域归并覆盖了主要参数族及关键版本差异;个别仅存在于特定分支/插件/企业版的参数,请以目标实例的 SHOW VARIABLES 与对应版本文档为准。任何参数调整都应在测试环境验证后再用于生产。