demo/mysql

原生 MySQL 8.4 试点模板:单节点实例与三节点 InnoDB Cluster

demo/mysql 是原生 MySQL 8.4 LTS 试点模块的四节点示例,与 conf/mysql.yml 中通过 OpenHalo 提供 MySQL 协议兼容的 PostgreSQL 内核不是同一实现。


配置概览

  • 配置名称:demo/mysql
  • 节点数量:4 个
  • my-meta:单节点 MySQL 8.4
  • my-test:三节点、单主模式 InnoDB Cluster,每个成员运行 MySQL Router
  • 模块状态:MYSQL PILOT,不计入正式模块数量
  • 平台边界:支持声明的 x86_64 RPM/DEB 平台及 EL9/EL10 aarch64;Oracle APT 当前没有 arm64 组件,因此 Debian/Ubuntu ARM 会被前置检查拒绝

模板中的所有 CHANGE_ME 值必须替换,且真实部署需要明确审批。先做只读预检:

ansible-playbook -i conf/demo/mysql.yml mysql.yml -l my-meta --check
ansible-playbook -i conf/demo/mysql.yml mysql.yml -l my-test --check

确认要写入活动清单后,再执行 ./configure -c demo/mysql,并对相同的完整集群范围依次运行 node.ymlmysql.yml--check 和真实收敛。三节点集群不接受部分成员范围。


配置内容

源文件地址:pigsty/conf/demo/mysql.yml

---
#==============================================================#
# File      :   mysql.yml
# Desc      :   MySQL 8.4 LTS standalone and three-node HA template
# Ctime     :   2026-07-16
# Mtime     :   2026-07-19
# Docs      :   https://pigsty.io/docs/pilot/mysql
# License   :   Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright :   2018-2026  Ruohang Feng / Vonng (rh@vonng.com)
#==============================================================#

# Canonical four-node MySQL platform example:
#   my-meta: one standalone member
#   my-test: three-member InnoDB Cluster in single-primary mode
#
# This file is a template, not the active deployment inventory. Replace every
# CHANGE_ME value and review the target addresses before configure or playbooks;
# MySQL preflight rejects any canonical CHANGE_ME credential left in place.
# Native Oracle 8.4 packages are admitted on x86_64 and EL9/EL10 aarch64. Oracle's
# APT repository currently has no arm64 component, so Ubuntu/Debian ARM is rejected.
#
# Read-only template preview (does not rewrite active pigsty.yml):
#   ansible-playbook -i conf/demo/mysql.yml mysql.yml -l my-meta --check
#   ansible-playbook -i conf/demo/mysql.yml mysql.yml -l my-test --check
# Each limit must include every declared member of the selected cluster group;
# partial HA member limits are rejected before any package or service change.
# After explicit approval to update active inventory, run ./configure -c demo/mysql,
# then repeat node.yml/mysql.yml --check with the same explicit limits.
# node.yml owns the shared trusted CA at /etc/pki/ca.crt; mysql.yml installs
# only MySQL/Router leaf certificates and requires node_ca to be complete.
#
# Real playbooks install/start services and require explicit approval.

all:
  children:
    infra:
      hosts:
        10.10.10.10: { infra_seq: 1 }

    my-meta:
      hosts:
        10.10.10.10: { mysql_seq: 1 }
      vars: { mysql_cluster: my-meta, node_cluster: my-meta }

    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, node_cluster: my-test }

  vars:
    version: v4.5.0
    admin_ip: 10.10.10.10
    region: default                    # default | china; china uses USTC for MySQL

    repo_enabled: false               # use signed upstream repositories directly
    node_repo_modules: node,infra,mysql
    # For a Pigsty local/offline repository, enable repo and cache the complete
    # atomic platform set before provisioning targets:
    # repo_enabled: true
    # repo_extra_packages: [mysql]

    nodename_overwrite: false
    node_tune: oltp

    mysql_root_password: CHANGE_ME_MYSQL_ROOT
    mysql_monitor_password: CHANGE_ME_MYSQL_MONITOR
    mysql_cluster_password: CHANGE_ME_MYSQL_CLUSTER
    # Fixed MySQL 8.4, auto-tuned memory, daily local backup, and exporter are defaults.

    # Pigsty infrastructure credentials; replace before deployment.
    grafana_admin_password: CHANGE_ME_GRAFANA_ADMIN
    grafana_view_password: CHANGE_ME_GRAFANA_VIEW
    haproxy_admin_password: CHANGE_ME_HAPROXY
...

配置解读

  • MySQL 服务端、客户端、Shell、Router 与 XtraBackup 固定为 8.4 平台,不提供任意版本安装器。
  • 单节点使用 3306;三节点还使用 Group Replication 33061,并在每个成员提供 Router RW 6446 与 RO 6447
  • 默认启用每天一次的本地全量 XtraBackup 与 mysqld_exporter;当前试点不提供连续 binlog 归档、PITR 或自动恢复。
  • node.yml 负责安装共享信任锚 /etc/pki/ca.crt;MySQL 角色只签发并安装叶子证书。

完整约束与移除确认流程参见 原生 MySQL 试点文档