集群配置
规划 MySQL 拓扑与身份,声明业务数据库、用户、参数覆盖与备份策略。
MySQL 是世界上最流行的开源关系型数据库之一。Pigsty 的 MYSQL 模块在纳管节点上部署固定的原生 MySQL 8.4 LTS 平台:单机实例,或基于 Group Replication 的三节点单主 InnoDB Cluster,并统一管理 TLS、备份、监控与生命周期。
MYSQL 是补充性的试点模块,定位是「简单、廉价、够用」的 MySQL 集群,不追求与 PGSQL 模块同级的完备性。 核心能力(部署收敛、高可用切换、每日备份、监控告警)已经过系统性测试; 完全停机恢复、物理备份恢复等破坏性流程刻意保留为手工运维操作,参见日常管理中的操作手册。
MYSQL 模块当前提供:
6446)与只读(6447)入口mysql_databases 与 mysql_users 增量收敛,不隐式删除数据mysql_parameters 参数覆盖:调整关键参数(如 max_connections),配置变更自动编排滚动重启sql_require_primary_key:拦截无主键表,保护 MGR 复制与灾难恢复mysql.yml 即可自愈;危险操作有安全护栏MYSQL 模块依赖 NODE 完成节点纳管、软件仓库与共享 CA,依赖 INFRA 提供 VictoriaMetrics、VictoriaLogs、Grafana 与 Alertmanager。不依赖 ETCD 与 PGSQL。
flowchart LR
admin["Pigsty 管理节点"] -->|"mysql.yml"| mysqld["mysqld ×3 / MGR 单主<br>3306 · TLS"]
client["业务客户端"] -->|"RW 6446 / RO 6447"| router["MySQL Router<br>(每个 HA 成员)"]
router --> mysqld
mysqld --> backup["XtraBackup 每日全备<br>(仅当前主库)"]
mysqld --> exporter["mysqld_exporter :9104"]
mysqld --> journal["错误日志 → Journald"]
exporter --> vm["VictoriaMetrics"]
journal --> vector["Vector"] --> vl["VictoriaLogs"]
vm --> grafana["Grafana"]
vl --> grafana
vm --> alertmanager["Alertmanager"]
style mysqld fill:#4479A1,stroke:#33618a,color:#fff
style router fill:#70C1B3,stroke:#4f968b,color:#fff
style vm fill:#E66B7A,stroke:#b84e5c,color:#fff
style vl fill:#C98367,stroke:#9e634e,color:#fff三节点模式下 mysql_seq=1 只是首次引导协调者:运行时 PRIMARY 由选举产生,重跑剧本不会把主库强制切回 1 号节点。
| 组件 | 用途 | 固定端点 |
|---|---|---|
mysqld | 单机服务或 MGR 成员 | Classic 3306、X Protocol 33060 |
| Group Replication | 三节点复制与共识(XCOM) | 33061 |
| MySQL Router | HA 拓扑感知入口,每个成员均部署 | RW 6446、RO 6447 |
| MySQL Shell | AdminAPI 生命周期管理 | 本机控制面 |
| XtraBackup | 每日全量物理备份 | 本地备份仓库 |
mysqld_exporter | MySQL 与 MGR 指标 | 9104 |
角色创建并管理三个平台身份:
dbuser_cluster@'%':要求 TLS 的 AdminAPI 与 Router 引导身份(仅 HA 集群创建);dbuser_monitor@'127.0.0.1':最小权限 Exporter 身份;dbuser_backup@'localhost':本地 XtraBackup 身份。原生软件包平台门禁为:
| 架构 | 支持的系统 |
|---|---|
x86_64 | EL 8/9/10、Debian 12/13、Ubuntu 22/24 |
aarch64 | EL 9/10 |
Debian/Ubuntu ARM64 会被预检拒绝:Oracle APT 仓库的 MySQL 8.4 组件没有 arm64 载荷。ARM 环境请使用 EL 9/10(如 Rocky Linux)。
MYSQL 是固定平台,不是通用 MySQL 安装器。以下事项有意不做,使用前请确认可以接受:
mysql_parameters 覆盖关键参数| 文档 | 说明 |
|---|---|
| 集群配置 | 拓扑规划、身份参数、业务库表用户、参数覆盖与备份配置 |
| 参数参考 | 11 项公开参数与固定平台约定 |
| 日常管理 | 状态检查、客户端接入、配置变更、故障处理与三份恢复手册 |
| 预置剧本 | mysql.yml 与 mysql-rm.yml 的用法、标签与安全护栏 |
| 监控告警 | Dashboard、衍生规则、告警规则与日志查询 |
| 指标定义 | 标签模型与衍生指标字典 |
| 常见问题 | 平台限制、主键要求、恢复与排障 |
在清单中声明集群(完整模板见 conf/demo/mysql.yml):
all:
children:
my-test:
hosts:
10.10.10.11: { mysql_seq: 1 }
10.10.10.12: { mysql_seq: 2 }
10.10.10.13: { mysql_seq: 3 }
vars:
mysql_cluster: my-test
mysql_databases: [ { name: app } ]
mysql_users: [ { name: app, password: DBUser.App, priv: { 'app.*': 'ALL PRIVILEGES' } } ]
vars:
node_repo_modules: node,infra,mysql # 软件仓库需包含 mysql 模块
mysql_root_password: MySQL.Root # 生产环境必须修改示例密码
mysql_monitor_password: MySQL.Monitor
mysql_cluster_password: MySQL.Cluster
完成 NODE 纳管后执行部署:
./node.yml -l my-test # 节点纳管:仓库、共享 CA、监控代理
./mysql.yml -l my-test --check # 预检完整三节点集群
./mysql.yml -l my-test # 真实部署,三节点约 2 分钟
mysql -h 10.10.10.11 -P 6446 -u app -pDBUser.App \
--ssl-mode=VERIFY_CA --ssl-ca=/etc/pki/ca.crt app # 通过 Router 读写入口接入
部署后访问 Grafana 的 MySQL Overview Dashboard 查看集群状态。
规划 MySQL 拓扑与身份,声明业务数据库、用户、参数覆盖与备份策略。
MYSQL 模块 11 项公开参数与固定平台约定。
MySQL 集群的状态检查、客户端接入、配置变更、故障处理,以及成员替换、物理恢复与完全停机恢复三份操作手册。
使用 mysql.yml 与 mysql-rm.yml 完成部署、收敛、参数变更、成员退役与集群下线。
MySQL 指标采集、Grafana Dashboard、告警规则与日志查询。
MySQL 模块的标签模型、衍生指标字典与原始指标族。
Pigsty MySQL 试点模块常见问题与故障排查。