MariaDB 11.8 配置参数详解

系统讲解 MariaDB 11.8 服务端核心配置参数,覆盖每个参数的详细说明、取值范围、使用方法与影响范围,并给出生产配置模板。所有默认值均在 MariaDB 11.8.9 真实环境实测

MariaDBMariaDB参数调优性能优化2026/09/27

MariaDB 11.8 配置参数详解

目标:系统讲解 MariaDB 11.8 服务端核心配置参数,覆盖每个参数的详细说明、取值范围、使用方法与影响范围,并给出生产配置模板。所有默认值均在 MariaDB 11.8.9 真实环境实测。

环境信息

  • 操作系统:Ubuntu 24.04(容器)
  • MariaDB 版本:11.8.9-MariaDB(mariadb.org binary distribution)
  • 配置文件:/etc/mysql/mariadb.conf.d/50-server.cnf(主配置)、/etc/mysql/mariadb.conf.d/60-galera.cnf(复制相关)
  • 参数采集方式:SHOW VARIABLES(全部为实测默认值)

前置条件

  • 已安装 MariaDB 11.8 并可本地登录
  • 了解配置文件体系:/etc/mysql/my.cnf include conf.d/(客户端)与 mariadb.conf.d/(服务端),服务端参数统一写在 [mysqld] 段下
  • 修改静态参数前做好重启窗口准备

参数查看与修改方式

查看参数

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';   -- 查看指定参数
SHOW VARIABLES LIKE '%binlog%';                  -- 模糊查询
SHOW VARIABLES;                                  -- 查看全部

修改方式对比

方式命令是否即时生效是否持久化适用参数
配置文件编辑 mariadb.conf.d 下 cnf需重启是所有参数
SET GLOBALSET GLOBAL max_connections=500;是否(重启丢失)仅动态参数

💡 说明:MariaDB 11.8 不支持 SET PERSIST(MySQL 8.0 的特性),动态参数在线修改用 SET GLOBAL,持久化只能写配置文件。判断参数是否动态:执行 SET GLOBAL 试错(静态参数报 Variable 'xxx' is a read only variable,实测 log_bin 即只读)。

参数总览

本文档覆盖的全部参数汇总(默认值均为 MariaDB 11.8.9 实测):

分类参数名称默认值(实测)配置示例动态
连接与网络port3306port = 3307否
连接与网络bind_address0.0.0.0bind_address = 127.0.0.1否
连接与网络max_connections151max_connections = 1000是
连接与网络max_connect_errors100max_connect_errors = 1000是
连接与网络wait_timeout28800wait_timeout = 600是
连接与网络max_allowed_packet16MBmax_allowed_packet = 256M是
内存与缓冲innodb_buffer_pool_size128MBinnodb_buffer_pool_size = 8G是
内存与缓冲key_buffer_size128MB—是
内存与缓冲aria_pagecache_buffer_size128MB—是
内存与缓冲tmp_table_size / max_heap_table_size16MBtmp_table_size = 64M是
内存与缓冲sort_buffer_size256KB—是
内存与缓冲thread_cache_size151(=max_connections)thread_cache_size = 64是
内存与缓冲table_open_cache2000—是
字符集character_set_serverutf8mb4—是
字符集collation_serverutf8mb4_uca1400_ai_ci—是
日志log_error/var/lib/mysql/<host>.err—否
日志log_binOFF(11.8 默认关)log_bin = /var/lib/mysql/mariadb-bin否
日志binlog_formatMIXED(未开时)/ ROW(开启后)binlog_format = ROW是
日志sync_binlog0sync_binlog = 1是
日志slow_query_log / long_query_timeOFF / 10sslow_query_log = ON是
InnoDBinnodb_flush_log_at_trx_commit1—是
InnoDBinnodb_io_capacity200innodb_io_capacity = 1000是
InnoDBinnodb_file_per_tableON—否
InnoDBskip_name_resolveON(MariaDB 默认开)—否
InnoDBtransaction_isolationREPEATABLE-READtransaction_isolation = READ-COMMITTED是
安全与 SQLsql_mode严格模式集合—是

一、连接与网络参数

port

属性值
默认值(实测)3306
动态否(需重启)

说明: MariaDB 服务监听的 TCP 端口。

[mysqld]
port = 3307

影响范围: 修改后所有客户端连接串、防火墙规则同步修改。

bind_address

属性值
默认值(实测)0.0.0.0(所有网卡)
动态否

说明: 服务监听的网卡地址。

[mysqld]
bind_address = 127.0.0.1   # 只允许本机访问,最安全

影响范围: 设错 IP(本机不存在该地址)会导致启动失败。

max_connections

属性值
默认值(实测)151
取值范围1 ~ 100000
动态是

说明: 最大并发客户端连接数,超出报 Too many connections。

SET GLOBAL max_connections = 1000;   -- 动态生效,重启丢失

影响范围: 每个连接消耗内存(连接缓冲 + 线程栈),盲目调大导致内存耗尽。经验公式:最大连接数 × 单连接平均内存 < 物理内存 60%。

max_connect_errors

属性值
默认值(实测)100
动态是

说明: 同一主机连续连接失败超过该次数被拉黑,报 Host 'xxx' is blocked。

SET GLOBAL max_connect_errors = 1000;
FLUSH HOSTS;   -- 解除拉黑

wait_timeout

属性值
默认值(实测)28800(8 小时)
动态是

说明: 空闲连接超时时间。生产建议 300~1800 秒,且要小于应用连接池的回收时间。

SET GLOBAL wait_timeout = 600;

max_allowed_packet

属性值
默认值(实测)16777216(16MB,注意与 MySQL 8 的 64MB 不同)
动态是

说明: 单个数据包最大长度。MariaDB 默认只有 16MB,批量导入大 BLOB 或大批量 INSERT 时报 Packet for query is too large,需调大。

SET GLOBAL max_allowed_packet = 256 * 1024 * 1024;   -- 256MB

二、内存与缓冲参数

innodb_buffer_pool_size

属性值
默认值(实测)134217728(128MB)
动态是

说明: InnoDB 缓冲池大小,缓存热数据页,数据库读性能第一决定因素。

SET GLOBAL innodb_buffer_pool_size = 8 * 1024 * 1024 * 1024;   -- 8GB

影响范围: 生产专用库服务器建议设物理内存 50%~70%。观察命中率:SHOW STATUS LIKE 'Innodb_buffer_pool_read%';。

key_buffer_size(MyISAM 索引缓存)

属性值
默认值(实测)134217728(128MB,远大于 MySQL 8 的 8MB)
动态是

说明: MyISAM 表的索引缓存。MariaDB 默认 128MB(内存充足时按物理内存的 25% 分配),8.0 之后 InnoDB 是默认引擎,此参数仅影响 MyISAM 表。若全部使用 InnoDB 可调小。

aria_pagecache_buffer_size(Aria 引擎页缓存)

属性值
默认值(实测)134217728(128MB)
动态是

说明: MariaDB 特有。Aria 引擎(MyISAM 的下一代)的页缓存。mysql 系统库表使用 Aria,此参数影响系统库与临时表性能。

tmp_table_size / max_heap_table_size

属性值
默认值(实测)16777216(16MB)
动态是

说明: 内存临时表上限(两者取较小值生效),超出转磁盘临时表(Aria),性能下降一个数量级。

SET GLOBAL tmp_table_size = 64 * 1024 * 1024;

thread_cache_size

属性值
默认值(实测)151(自动跟随 max_connections)
动态是

说明: 缓存空闲线程数,减少连接建立/销毁开销。MariaDB 特性:默认与 max_connections 一致。

三、字符集

character_set_server / collation_server

属性值
默认值(实测)utf8mb4 / utf8mb4_uca1400_ai_ci
动态是

说明: 服务端默认字符集。注意 MariaDB 的默认排序规则是 utf8mb4_uca1400_ai_ci,与 MySQL 8 的 utf8mb4_0900_ai_ci 不同,迁移数据时需注意排序差异。

四、日志参数

log_error

属性值
默认值(实测)/var/lib/mysql/<hostname>.err
动态否

说明: 错误日志路径,排障第一入口。

log_bin(binlog)

属性值
默认值(实测)OFF(MariaDB 11.8 默认关闭 binlog,与 MySQL 8.0 默认开启不同)
动态否(实测报 Variable 'log_bin' is a read only variable)

说明: 二进制日志,用于复制与时间点恢复(PITR)。MariaDB 默认关闭,需配置文件开启后重启。

[mysqld]
log_bin = /var/lib/mysql/mariadb-bin
binlog_format = ROW

⚠️ 实测注意:若不配置直接 SET GLOBAL log_bin=ON 报错 1238(只读变量)。开启后 SHOW BINARY LOGS 可见 mariadb-bin.000001。

sync_binlog

属性值
默认值(实测)0(MariaDB 默认 0,MySQL 8 默认 1)
动态是

说明: binlog 刷盘策略。MariaDB 默认 0(由 OS 决定刷盘时机,性能好但断电可能丢最近事务),与 innodb_flush_log_at_trx_commit=1 组合时建议设 1 构成"双 1"。

slow_query_log / long_query_time

属性值
默认值(实测)OFF / 10.000000
动态是

说明: 慢查询日志开关与阈值,生产建议常开:

SET GLOBAL slow_query_log = ON;

五、InnoDB 核心参数

innodb_flush_log_at_trx_commit

属性值
默认值(实测)1
动态是

说明: redo log 刷盘策略,1=每事务 fsync 最安全(默认值即最佳实践)。

innodb_io_capacity

属性值
默认值(实测)200(注意 MariaDB 默认 200,MySQL 8 是 10000)
动态是

说明: 后台刷脏页的 IOPS 参考值。SSD 建议 1000~4000,机械盘 200 合适。MariaDB 默认保守,SSD 环境需调大。

innodb_file_per_table

属性值
默认值(实测)ON
动态否

说明: 独立表空间,支持 DROP/TRUNCATE 回收磁盘。

skip_name_resolve

属性值
默认值(实测)ON(MariaDB 默认开启跳过 DNS 反查,与 MySQL 8 默认 OFF 不同)
动态否

说明: 跳过 DNS 反查,避免连接延迟。开启后授权主机名只能用 IP 不能用域名。

transaction_isolation

属性值
默认值(实测)REPEATABLE-READ
动态是

说明: 默认事务隔离级别。高并发写场景可改 READ-COMMITTED 减少锁等待。

六、SQL 模式

sql_mode

属性值
默认值(实测)STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
动态是

说明: 与 MySQL 8.0 默认相比,MariaDB 缺少 NO_ZERO_DATE、NO_ZERO_IN_DATE、ONLY_FULL_GROUP_BY,行为更宽松。

⚠️ 迁移注意:从 MySQL 迁到 MariaDB 时,原 MySQL 默认的 ONLY_FULL_GROUP_BY 在 MariaDB 中不强制,GROUP BY 语义不同可能导致结果差异,需显式配置验证。

生产配置模板

[mysqld]
# 连接
max_connections = 500
wait_timeout = 600
max_allowed_packet = 64M

# 内存
innodb_buffer_pool_size = 8G        # 物理内存的 50%~70%
key_buffer_size = 64M               # 全 InnoDB 时可调小

# 日志
log_error = /var/log/mysql/error.log
log_bin = /var/lib/mysql/mariadb-bin
binlog_format = ROW
slow_query_log = ON
long_query_time = 3

# 安全
bind_address = 127.0.0.1
skip_name_resolve = ON

# 性能
innodb_io_capacity = 1000
innodb_flush_log_at_trx_commit = 1

与 MySQL 8 的默认值差异对照

参数MariaDB 11.8(实测)MySQL 8.0/8.4
max_allowed_packet16MB64MB
key_buffer_size128MB8MB
innodb_io_capacity20010000
log_binOFFON
sync_binlog01
collation_serverutf8mb4_uca1400_ai_ciutf8mb4_0900_ai_ci
skip_name_resolveONOFF
sql_mode无 ONLY_FULL_GROUP_BY含 ONLY_FULL_GROUP_BY
SET PERSIST不支持支持

💡 这些差异是 MySQL → MariaDB 迁移时的常见坑,建议迁移前逐项核对。

参考链接

本文档由 www.quzuo.net 平台开发

MariaDB 11.8 配置参数详解 - Quzuo