Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql配置参数

MySQL 配置参数全解之参数含义、作用域与运维建议(完整配置文件)

作者:霖霖总总

MySQL配置文件参数解析表涵盖了多个配置段,如[client]、[mysql]、[mysqld]和[mysqld_safe],详细解释了每个参数的含义、当前值、默认值以及一些关键参数的作用和优化建议,感兴趣的朋友跟随小编一起看看吧

一、MySQL 配置文件参数解析表

配置段参数名含义说明当前值默认值
[client]loose-default-character-set客户端连接默认字符集;loose- 前缀表示若当前 MySQL 版本不支持该参数则忽略而不报错。utf8mb4无(继承系统 locale)
[mysql]no-auto-rehash禁用命令行 Tab 自动补全(如表名、列名),避免连接时拉取全量元数据,加快启动速度。(启用)OFF(即 auto-rehash 默认开启;
use --skip-auto-rehash to disable)
[mysql]prompt自定义 MySQL 命令行提示符格式:\u=用户,\h=主机,\d=数据库,\r:\m:\s=时:分:秒。\u@\h:\d\r:\m:\s>mysql>
[mysql]max_allowed_packet客户端与服务器间单个数据包最大大小,影响大结果集或 BLOB 传输。64M64M
[mysqld]user启动 mysqld 进程的操作系统用户,必须对 datadir 有读写权限。mysqlmysql(Linux 包安装)
[mysqld]portMySQL 监听的 TCP 端口。33063306
[mysqld]socket本地 Unix 域套接字路径,用于本地高效连接。/var/lib/mysql/mysql.sock/tmp/mysql.sock(源码编译)或 /var/run/mysqld/mysqld.sock(Debian)
[mysqld]bind-address监听的网络接口 IP;0.0.0.0 表示监听所有 IPv4 接口。0.0.0.0*(所有地址)
[mysqld]event_scheduler启用事件调度器,可定期执行 SQL 任务(类似 cron)。ONOFF
[mysqld]basedirMySQL 安装根目录。/usr依赖安装方式
[mysqld]datadir数据库数据文件存储目录。/var/lib/mysql/usr/local/mysql/data(源码)或 /var/lib/mysql(包管理)
[mysqld]tmpdir临时文件(如排序、临时表)存储目录。/tmp/tmp
[mysqld]log_error错误日志文件路径。/var/log/mysql/error.logstderr 或 syslog(未指定时)
[mysqld]pid-file记录 MySQL 主进程 ID 的文件路径。/var/run/mysqld/mysqld.pid$ {DATADIR}/host_name.pid
[mysqld]max_connections允许的最大并发连接数。512151
[mysqld]max_connect_errors同一主机连接失败超此后被屏蔽,需 FLUSH HOSTS 解除。100000100
[mysqld]back_log操作系统在 MySQL 处理前可排队的连接请求数(TCP listen backlog)。51250 + (max_connections / 5),上限 900
[mysqld]wait_timeout非交互连接空闲超时时间(秒),超时后断开。2880028800
[mysqld]interactive_timeout交互式连接(如 CLI)空闲超时时间(秒)。180028800
[mysqld]key_buffer_sizeMyISAM 引擎索引缓存大小;即使不用 MyISAM 也建议保留少量。32M8M
[mysqld]sort_buffer_size每个连接用于 ORDER BYGROUP BY 的排序内存,按需分配。4M256K
[mysqld]join_buffer_size用于无索引 JOIN 的连接缓冲区大小,每个 JOIN 分配一份。4M256K
[mysqld]read_buffer_size顺序扫描(如全表扫描)时的缓冲区大小。1M128K
[mysqld]read_rnd_buffer_size随机读取(如按排序结果回表)的缓冲区大小。2M256K
[mysqld]max_allowed_packet服务器允许的最大数据包大小,需 ≥ 客户端设置。64M64M
[mysqld]thread_cache_size线程缓存大小,缓存已断开连接的线程以加速新连接复用。64-1(自动)或 0(旧版本)
[mysqld]table_open_cache表描述符缓存数量,影响同时打开表的能力。40964000(8.0+),2000(5.7)
[mysqld]table_definition_cache表定义(.frm 等元数据)缓存数量,减少磁盘 IO。40962000(或自动计算)
[mysqld]open_files_limit操作系统允许 MySQL 打开的最大文件数(需系统 ulimit 支持)。65535min(5000, ulimit -n)
[mysqld]character-set-server服务端默认字符集。utf8mb4utf8mb4
[mysqld]collation-server服务端默认排序规则。utf8mb4_unicode_ciutf8mb4_0900_ai_ci(8.0)
[mysqld]log_error_verbosity错误日志详细级别(1=error, 2=+warning, 3=+note)。23(8.0+),2(5.7)
[mysqld]slow_query_log开启慢查询日志。ONOFF
[mysqld]slow_query_log_file慢查询日志文件路径。/var/log/mysql/mysql-slow.loghost_name-slow.log
[mysqld]long_query_timeSQL 执行时间超过此值(秒)记为慢查询。110.0
[mysqld]log_queries_not_using_indexes是否记录未使用索引的查询到慢日志。OFFOFF
[mysqld]general_log是否开启通用查询日志(记录所有 SQL)。OFFOFF
[mysqld]general_log_file通用查询日志文件路径。/var/log/mysql/mysql-general.loghost_name.log
[mysqld]server-id实例唯一标识,主从复制必需,集群内必须唯一。10(禁用复制)
[mysqld]log_bin启用二进制日志并指定路径前缀。/var/log/mysql/mysql-bin.logOFF(未设置)
[mysqld]binlog_format二进制日志格式,ROW 模式最安全,推荐用于复制。ROWROW(8.0+),STATEMENT(5.7)
[mysqld]expire_logs_days自动删除超过 N 天的 binlog(⚠️ 8.0.35+ 已废弃)。140(不自动清理)
[mysqld]max_binlog_size单个 binlog 文件最大大小,达到后轮转新文件。1G1G
[mysqld]sync_binlog每 N 次事务提交同步 binlog 到磁盘;1=每次提交都刷盘(最安全)。11(8.0+),0(5.7)
[mysqld]binlog_cache_size每个连接事务中 binlog 的内存缓存大小。128K32K
[mysqld]binlog_rows_query_log_eventsROW 格式下是否在 binlog 中记录原始 SQL(用于调试)。OFFOFF
[mysqld]innodb_buffer_pool_sizeInnoDB 缓冲池大小,缓存数据和索引,是最重要的性能参数。2G128M
[mysqld]innodb_buffer_pool_instances将缓冲池划分为多个实例,减少内部争用;建议每 1GB 缓冲池设 1 个实例。21(<1GB 时),8(≥1GB 且 ≥8.0.29)
[mysqld]innodb_max_dirty_pages_pct脏页占缓冲池比例超过此值时,后台线程加速刷新。7590
[mysqld]default_storage_engine默认存储引擎。InnoDBInnoDB
[mysqld]innodb_file_per_table每张表使用独立 .ibd 文件,便于管理与空间回收。ONON
[mysqld]innodb_flush_methodInnoDB 数据文件 I/O 方式,O_DIRECT 绕过 OS 缓存,避免双缓冲。O_DIRECTfsync(Linux)
[mysqld]innodb_flush_log_at_trx_commit事务提交时 redo log 刷盘策略;1=最安全(ACID),0/2=更高性能但可能丢数据。11
[mysqld]innodb_data_file_pathInnoDB 系统表空间初始大小及自动扩展策略。ibdata1:64M:autoextendibdata1:12M:autoextend
[mysqld]innodb_log_file_size单个 redo log 文件大小。2G48M(8.0.30 前),96M(8.0.30+)
[mysqld]innodb_log_files_in_groupredo log 文件数量(通常为 2)。22
[mysqld]innodb_log_buffer_sizeredo log 内存缓冲区大小,大事务可适当增大。16M16M
[mysqld]innodb_lock_wait_timeoutInnoDB 行锁等待超时时间(秒),超时后报错。5050
[mysqld]innodb_io_capacity后台任务(刷脏页等)的 I/O 能力基准值。200200
[mysqld]innodb_io_capacity_max后台任务突发 I/O 上限。20002000
[mysqld]innodb_buffer_pool_dump_at_shutdown关闭时将热数据页列表 dump 到磁盘,加速下次启动预热。ONON
[mysqld]innodb_buffer_pool_load_at_startup启动时加载之前 dump 的热数据页列表。ONON
[mysqld]innodb_print_all_deadlocks将所有死锁信息记录到错误日志,便于分析。ONOFF
[mysqld]default_authentication_plugin新建用户的默认认证插件,兼容旧客户端。mysql_native_passwordcaching_sha2_password(8.0+)
[mysqld]performance_schema启用性能模式,用于监控内部运行状态。ONON
[mysqld]performance_schema_max_table_instances限制 performance_schema 中表实例数量,控制内存使用。5000-1(自动)
[mysqld]gtid_mode启用 GTID(全局事务 ID)。ONOFF
[mysqld]enforce_gtid_consistency强制 GTID 安全语句(禁止非事务性操作)。ONOFF
[mysqld]log_slave_updates从库是否将 relay log 写入自己的 binlog(级联复制必需)。1OFF
[mysqld]read_only是否只读模式;从库应设为 1。0OFF
[mysqld]relay-log从库 relay log 文件路径前缀。/var/log/mysql/slave-relay-binhost_name-relay-bin
[mysqld]relay-log-indexrelay log 索引文件路径/var/log/mysql/slave-relay-bin.indexhost_name-relay-bin.index
[mysqld]master_info_repository主库连接信息存储方式(TABLE 表示存入 mysql.slave_master_info 表)。TABLEFILE(5.7),TABLE(8.0+)
[mysqld]relay_log_info_repositoryrelay log 位置信息存储方式(TABLE 表示存入 mysql.slave_relay_log_info 表)。TABLEFILE(5.7),TABLE(8.0+)
[mysqld]relay_log_recovery启动时自动恢复 relay log,避免数据不一致。ONOFF
[mysqld]slave_parallel_type并行复制分组策略,LOGICAL_CLOCK 基于事务 commit_parent 并行。LOGICAL_CLOCKDATABASE(5.7),LOGICAL_CLOCK(8.0+)
[mysqld]slave_parallel_workers从库并行应用 relay log 的工作线程数。80(串行)
[mysqld_safe]log-errormysqld_safe 启动脚本使用的错误日志路径。/var/log/mysql/error.log同 mysqld
[mysqld_safe]socketmysqld_safe 使用的 socket 路径。/var/lib/mysql/mysql.sock同 mysqld
[mysqld_safe]open-files-limit通过 mysqld_safe 启动时设置的系统 open files 限制。65535无(继承 shell)
[mysqldump]quick逐行检索结果而非缓存到内存,避免大表导出 OOM。(启用)ON
[mysqldump]max_allowed_packetmysqldump 客户端允许的最大包大小。256M24M
[mysqldump]single-transaction对 InnoDB 表使用一致性快照导出(不加锁),推荐用于备份。TRUEOFF
[mysqladmin]character-set-clientmysqladmin 工具连接时的客户端字符集。utf8mb4

特别说明

1.loose前缀的作用是允许配置文件中包含对当前 MySQL 版本不可用的参数时,MySQL 会忽略这些带有loose前缀的未知参数,而不会导致服务器启动失败
2.server-id的值在配置文件中不能使用变量,需要在实际使用手动修改或者配合脚本进行变更
3. expire_logs_days 废弃警告:
若使用 MySQL ≥8.0.35,应替换为:

binlog_expire_logs_seconds = 1209600  # 14 * 24 * 3600

binlog_expire_logs_seconds参数是在MySQL8.0中新增的参数
binlog_expire_logs_seconds参数和expire_logs_days 参数是互相排斥的,在MySQL服务器中只能选择其中一个参数使用
4.no-auto-rehash参数解析

在命令行临时启用: 临时想用 Tab 补全命令

mysql --auto-rehash -u user -p

--auto-rehash参数的主要功能就是自动补全

5.配置文件 [mysql] 段设置的参数,只影响使用 mysql 命令行工具的行为,无法用 SHOW VARIABLES LIKE ‘xxx’ 命令查到
因为这些参数是客户端选项,不是服务端系统变量

二、完整版配置文件

[client]
# CLIENT SETTINGS - Applied to all client programs
loose-default-character-set = utf8mb4 # Default character set for clients
[mysql]
# MYSQL CLIENT SPECIFIC SETTINGS
no-auto-rehash # Disable automatic tab completion for faster connection
prompt = "\\u@\\h : \\d \\r:\\m:\\s> " # Custom prompt format
(user@host:database time)
max_allowed_packet = 64M
#Define the maximum number of bytes for a single data packet transfer between the
MySQL server and the client
[mysqld]
# CORE SERVER SETTINGS
user = mysql
port = 3306
socket = /var/lib/mysql/mysql.sock
bind-address = 0.0.0.0 # IP address to bind to (use internal IP in production)
event_scheduler = ON # Enable the event scheduler
# DIRECTORIES
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
log_error = /var/log/mysql/error.log
pid-file = /var/run/mysqld/mysqld.pid
# CONNECTIONS
max_connections = 512 # Maximum number of simultaneous connections
max_connect_errors = 100000 # Maximum connection errors before host blocking
back_log = 512 # Connection backlog queue size
wait_timeout = 600 # Timeout for non-interactive connections (seconds)
interactive_timeout = 1800 # Timeout for interactive connections (seconds)
wait_timeout = 28800
# MEMORY & CACHE (ADJUST BASED ON YOUR RAM!)
# -- Global Cache --
key_buffer_size = 32M # Key buffer size for MyISAM (recommended even if not
using MyISAM)
# -- Per-Connection Memory --
sort_buffer_size = 4M # Buffer size for ORDER BY and GROUP BY operations
join_buffer_size = 4M # Buffer size for joins without indexes
read_buffer_size = 1M # Buffer size for sequential table scans
read_rnd_buffer_size = 2M # Buffer size for random-read buffer
max_allowed_packet = 64M # Maximum packet size
thread_cache_size = 64 # Thread cache size for faster connection handling
# TABLE DEFINITION
table_open_cache = 4096 # Number of open tables cache
table_definition_cache = 4096 # Number of table definition cache
open_files_limit = 65535 # Maximum number of open files
# CHARACTER SET & COLLATION
character-set-server = utf8mb4 # Default server character set
collation-server = utf8mb4_unicode_ci # Default server collation
# LOGGING
# Error Log
log_error = /var/log/mysql/error.log
log_error_verbosity = 2 # Error log verbosity level
# Slow Query Log
slow_query_log = ON # Enable slow query log
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1 # Threshold for slow queries (seconds)
log_queries_not_using_indexes = OFF # Don't log queries not using indexes
# General Query Log (usually disabled in production)
general_log = OFF
general_log_file = /var/log/mysql/mysql-general.log
# BINARY LOGGING (For Replication & Point-in-Time Recovery)
server-id = 1 # Unique server ID for replication
log_bin = /var/log/mysql/mysql-bin.log # Binary log path
binlog_format = ROW # Binary log format (ROW recommended)
expire_logs_days = 14 # Binary log expiration period (days)
max_binlog_size = 1G # Maximum binary log file size
sync_binlog = 1 # Sync binary log to disk (1=safest)
binlog_cache_size = 128K # Binary log cache size
binlog_rows_query_log_events = OFF # Log original SQL in ROW format (for
debugging)
# -- InnoDB Buffer Pool --
innodb_buffer_pool_size = 2G # Most important cache (50-80% of system RAM)
innodb_buffer_pool_instances = 2 # Number of buffer pool instances (1 per GB
recommended)
innodb_max_dirty_pages_pct = 75 #Control the threshold for refreshing dirty
pages
# FILE FORMAT
default_storage_engine = InnoDB # Default storage engine
innodb_file_per_table = ON # Use separate tablespace for each InnoDB table
innodb_flush_method = O_DIRECT # InnoDB flush method (direct I/O)
innodb_flush_log_at_trx_commit = 1 # Flush log to disk on transaction commit
(1=safest)
# INNODB SPECIFIC
innodb_data_file_path = ibdata1:64M:autoextend # InnoDB system tablespace
configuration
innodb_log_file_size = 2G # InnoDB redo log file size (recommended 1-2G)
innodb_log_files_in_group = 2 # Number of InnoDB redo log files
innodb_log_buffer_size = 16M # InnoDB log buffer size
innodb_lock_wait_timeout = 50 # InnoDB lock wait timeout (seconds)
innodb_io_capacity = 200 # InnoDB I/O capacity (adjust based on storage
performance)
innodb_io_capacity_max = 2000 # Maximum InnoDB I/O capacity
innodb_buffer_pool_dump_at_shutdown = ON # Dump buffer pool at shutdown
innodb_buffer_pool_load_at_startup = ON # Load buffer pool at startup
innodb_print_all_deadlocks = ON # Log all deadlocks to error log
# MYSQL 8.0 AUTHENTICATION PLUGIN SETTINGS
default_authentication_plugin = mysql_native_password # Maintain compatibility
with older clients
# PERFORMANCE SCHEMA (Adjust based on monitoring needs)
performance_schema = ON # Enable performance schema
performance_schema_max_table_instances = 5000 # Limit performance schema memory
usage
#GTID
gtid_mode=ON
enforce_gtid_consistency=ON
# Slave Variables
log_slave_updates =1 #Control whether the slave library writes the received
changes of the master library to its own binary log
read_only = 0
relay-log = /var/log/mysql/slave-relay-bin
relay-log-index = /var/log/mysqlslave-relay-bin.index
master_info_repository=TABLE # Control the storage method of replication status
information
relay_log_info_repository=TABLE #Control the storage method of replication status
information
relay_log_recovery=ON # Trigger the automatic recovery process
slave_parallel_type=LOGICAL_CLOCK #Define the transaction grouping policy for
parallel replication
slave_parallel_workers=8 # Set the number of parallel execution threads
[mysqld_safe]
# MYSQL SAFE STARTUP SETTINGS
log-error = /var/log/mysql/error.log
socket = /var/lib/mysql/mysql.sock
open-files-limit = 65535
[mysqldump]
# MYSQLDUMP SETTINGS
quick
max_allowed_packet = 256M
single-transaction = TRUE # Recommended for InnoDB backups
[mysqladmin]
# MYSQLADMIN SETTINGS
character-set-client = utf8mb4

到此这篇关于MySQL 配置参数全解之参数含义、作用域与运维建议(完整配置文件)的文章就介绍到这了,更多相关mysql配置参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文