参数参考

MYSQL 模块 11 项公开参数与固定平台约定。

MYSQL 角色刻意只公开 11 项参数。软件版本、端口、目录、字符集、TLS 路径与定时器表达式由角色统一固定,内存基线按节点规格推导;需要调整服务器行为时使用 mysql_parameters


参数概览

参数层级默认值说明
mysql_cluster集群必填集群名与身份
mysql_seq实例必填单机 1;HA 连续 1..3
mysql_root_password集群DBUser.Root本地 root 密码
mysql_monitor_password集群DBUser.MonitorExporter 监控身份密码
mysql_cluster_password集群DBUser.ClusterAdminAPI/Router/备份身份密码
mysql_databases集群[]增量收敛的业务数据库
mysql_users集群[]增量收敛的业务用户与授权
mysql_parameters集群/实例{}[mysqld] 参数覆盖
mysql_backup_enabled集群true每日全量备份定时器
mysql_backup_repo集群见下文本地备份目录与保留份数
mysql_exporter_enabled集群trueExporter 与监控 Target

旧版页面曾出现的 mysql_rolemysql_servicesmysql_packagesmysql_datamysql_portmysql_replication_*mysql_*_username 等变量已不属于公开接口,请勿使用。


身份参数

mysql_cluster

必填的集群身份,必须与清单分组名一致(预检要求成员位于同名分组)。字母、数字或下划线开头,可含 ._-,最长 63 字符:

mysql_cluster: my-test

用于生成实例名(my-test-1)、MGR Group UUID(由集群名确定性推导)、备份目录(<repo>/my-test/)与监控标签 cls

mysql_seq

必填的实例序号。单机为 1;三节点必须是连续的 1、2、3,并直接作为 server_id

10.10.10.11: { mysql_seq: 1 }

mysql_seq=1 仅表示首次引导时的协调者;运行时主库由 MGR 选举决定,重跑剧本不会迁回主库。


凭据参数

mysql_root_password

本地 root@'localhost' 密码,仅限本机使用(套接字或回环地址)。不能包含换行,不能保留 CHANGE_ME 前缀:

mysql_root_password: MySQL.Root

首次启动时设置;此后如果现场密码与声明不一致,任务会拒绝隐式重置并明确报错——修改 root 密码需要先手工 ALTER USER 再同步清单。

mysql_monitor_password

dbuser_monitor@'127.0.0.1' 密码,供 mysqld_exporter 使用,仅限本机回环地址、最多 3 连接、只读权限:

mysql_monitor_password: MySQL.Monitor

mysql_cluster_password

dbuser_cluster@'%'(要求 TLS)与 dbuser_backup@'localhost' 共用的平台密码,用于 AdminAPI 集群管理、Router 引导与 XtraBackup:

mysql_cluster_password: MySQL.Cluster

HA 集群中该密码写入集群 Metadata 与 Router 密钥环,不能通过普通重跑轮换:现场值与声明不一致时预检直接拒绝。单机实例无此绑定,改清单重跑即生效。


业务对象

mysql_databases

增量收敛的业务数据库列表,字段 name / encoding / collate / encrypt

mysql_databases:
  - { name: app }
  - { name: app2, encoding: utf8mb4, collate: utf8mb4_general_ci, encrypt: false }

只创建与更新,不会因移除条目而删除数据库。写法与校验规则见集群配置

mysql_users

增量收敛的业务用户列表,字段 name / host / password / connlimit / priv

mysql_users:
  - name: app
    host: '%'
    password: DBUser.App
    connlimit: 20
    priv: { 'app.*': 'ALL PRIVILEGES' }

授权只增不减(移除映射不会 REVOKE);平台身份(root、monitor、cluster、backup)不可声明。写法与校验规则见集群配置


mysql_parameters

[mysqld] 段参数覆盖字典,渲染在托管配置末尾,同名参数后写生效:

mysql_parameters:
  max_connections: 500
  long_query_time: 2
  innodb_buffer_pool_size: 2G
  innodb_print_all_deadlocks: true    # true/false 渲染为 ON/OFF

约束与行为:

  • 键名 [A-Za-z][A-Za-z0-9_.-]{0,63},值为单行标量;渲染后仍经 mysqld --validate-config 校验,写错参数在部署阶段失败而不影响运行中的实例;
  • 保留参数拒绝覆盖-/_ 写法同判):userpid_fileserver_iddatadirsocketportbind_addressmysqlx_bind_addressreport_hostgtid_modeenforce_gtid_consistencylog_binrelay_logplugin_load_add,以及 group_replication_* 与 TLS 相关(require_secure_transportssl_*)全族;
  • 变更后重跑 mysql.yml 触发编排式滚动重启(从库先行、主库殿后),HA 集群预期仅主库切换瞬间有秒级写中断;
  • 平台默认值中可覆盖的典型项:sql_require_primary_key(默认 ON)、long_query_time(默认 1)、binlog_expire_logs_seconds(默认 7 天)、内存类参数。

会话级动态参数(AdminAPI 通过 SET PERSIST 管理的少数复制参数)以运行时为准;角色会在每次收敛时把 group_replication_group_seeds 钉回声明成员表,避免持久化漂移。


备份参数

mysql_backup_enabled

是否启用每日备份定时器(mysql-backup.timer,每日触发、随机延迟 30 分钟内):

mysql_backup_enabled: true

设为 false 停用定时器,但保留备份脚本与配置。注意:若备份目录从未创建过(备份从未启用),手工触发会因目录缺失直接退出。

mysql_backup_repo

本地备份仓库定义,当前只支持 local 一种方式:

mysql_backup_repo:
  local:
    path: /data/backups/mysql     # 绝对路径,不能与数据目录重叠
    retention: 7                  # 保留最近 N 份已提交全量(1-9999)

目录布局与恢复流程见日常管理


监控参数

mysql_exporter_enabled

是否启用 mysqld_exporter 与 VictoriaMetrics Target 注册:

mysql_exporter_enabled: true

设为 false 时停用 Exporter 服务,并将 /infra/targets/mysql/<实例>.yml 收敛为空列表(不删除文件;文件只由 mysql-rm.yml 删除)。


固定平台约定

以下值由角色固定或推导,不是清单参数,列出供运维参考:

项目
软件版本MySQL Server/Client/Shell/Router 8.4 LTS、Percona XtraBackup 8.4
端口3306(Classic)、33060(X Protocol,单机仅回环)、33061(MGR)、6446/6447(Router RW/RO)、9104(Exporter)
数据目录/var/lib/mysql(Binlog 于 binlog/ 子目录,7 天过期)
配置文件EL:/etc/my.cnf.d/pigsty.cnf;Debian/Ubuntu:/etc/mysql/mysql.conf.d/pigsty.cnf
服务单元MySQL:EL 为 mysqld,Debian/Ubuntu 为 mysql;Router:mysqlrouter;Exporter:mysqld_exporter
凭据与脚本/etc/mysql/pigsty/(root 属主:目录 0700、文件 0600
日志错误日志 /var/log/mysql/error.log 并镜像到 Journald;慢查询 /var/log/mysql/slow.log(阈值 1s)
TLS强制加密(require_secure_transport=ON);CA /etc/pki/ca.crt,叶证书 /etc/mysql/pki/
字符集utf8mb4 / utf8mb4_0900_ai_ci
内存基线缓冲池 = max(节点内存 × 25%, 256MB);Redo = clamp(缓冲池 × 50%, 128MB, 4GB)
复制GTID 强制、sql_require_primary_key=ON、MGR 单主、故障切换读一致性 BEFORE_ON_PRIMARY_FAILOVER
数据目录标记.pigsty-mysql-initialized(属主校验)与 .pigsty-mysql-retired(退役防护)