fix: 所有 heading->list 之间补空行,修复渲染问题
Deploy Docs / deploy (push) Successful in 19s

This commit is contained in:
2026-08-27 11:26:10 +00:00
parent 5fb5831065
commit 63e8356658
+20
View File
@@ -119,6 +119,7 @@ graph TD
### 2.3 Tasks 详情
#### `tasks/validate.yml` — 参数校验
- 拓扑合法性(standalone/primary_replica)
- MHA 模式要求 MySQL 8.0 + 至少 2 副本 + 主机数匹配
- 密码长度 >= 16、实例名格式、版本在 catalog 内
@@ -127,6 +128,7 @@ graph TD
- 探测端口占用、检查可用内存和磁盘空间
#### `tasks/install.yml` — 安装流程
- 可选配置内部 APT 源
- 安装依赖包(aria2, ca-certificates, libaio1t64, libatomic1, libncurses6 等)
- 创建 `mysql` 系统用户
@@ -140,6 +142,7 @@ graph TD
- 安装 systemd 模板单元并启动
#### `tasks/accounts.yml` — 账号配置
- 等待 socket 可用
- 初始化 root 密码(`SET SESSION sql_log_bin=0`,避免 GTID 污染)
- 安装 Clone 插件(MHA 模式)
@@ -147,6 +150,7 @@ graph TD
- 使用临时文件存储凭据(`mktemp` + `chmod 600` + `trap`),避免命令行泄露
#### `tasks/replication.yml` — 复制配置
- MHA 模式下执行 MySQL Clone(从主库全量克隆,throttle=1 串行)
- Clone 后重新生成 server_uuid(删除 `auto.cnf` 重启)
- 配置 GTID 复制(`CHANGE REPLICATION SOURCE TO ... SOURCE_AUTO_POSITION=1`)
@@ -154,22 +158,26 @@ graph TD
- 校验 GTID 收敛(无 errant GTID、无 missing GTID)
#### `tasks/mha-artifacts.yml` — MHA 制品安装
- 下载 mha4mysql-node 和 mha4mysql-manager deb 包(SHA256 校验)
- 所有节点安装 node,最后一个副本节点安装 manager
- 校验 Perl 模块
#### `tasks/mha.yml` — MHA 配置
- 生成集群独立 SSH 密钥(ed25519)
- 授权 Manager 公钥到所有节点(`restrict` 前缀)
- 校验免密 SSH
#### `tasks/callback.yml` — 进度回调
- POST 请求到 `delivery_callback_url`,携带 Bearer token、stage、status、message、awx_job_id
### 2.4 Templates
#### `mysql-instance.cnf.j2` — MySQL 实例配置
关键配置段:
- **字符集:** utf8mb4 / utf8mb4_general_ci / +08:00 / lower_case_table_names=1
- **日志:** error.log、slow-query-log、long_query_time
- **Binlog:** ROW 格式、sync_binlog=1、max_binlog_size、expire_logs_seconds=604800
@@ -179,27 +187,32 @@ graph TD
- **Group Replication(mgr_3 拓扑):** plugin-load-add、group_name、local-address、group-seeds、single-primary-mode
#### `mysql-mha.cnf.j2` — MHA Manager 配置
- `[server default]`:user/password、manager_workdir、ssh_options(指定密钥和 known_hosts)、repl_user/password、ping_interval=5、report_script(自动模式)
- `[serverN]`:每个节点的 hostname、port、candidate_master、no_master
#### `mysql-mha-manager.service.j2` — MHA Manager systemd 单元
- ExecStartPre:`masterha_check_repl --conf=...`
- ExecStart:`masterha_manager --conf=... --remove_dead_master_conf`
- Restart=on-failure, RestartSec=10s, StartLimitBurst=5
#### `xinfra-mha-report.j2` — MHA 故障转移回调脚本
- 解析 `--orig_master_host`、`--new_master_host` 参数
- 构建 JSON payload,curl POST 到回调 URL,retry 5 次
### 2.5 Files
#### `mysql-delivery@.service` — systemd 模板单元
- Type=exec, User=mysql, Group=mysql
- ExecStart:`/usr/local/libexec/xinfra-mysql-start %i`
- Restart=on-failure, RestartSec=5s, TimeoutStartSec=120s
- LimitNOFILE=65535, OOMScoreAdjust=-200
#### `xinfra-mysql-start` — 启动器脚本
- 优先使用 `/opt/mysql-delivery/{instance}/current/bin/mysqld`
- 回退到 `/usr/sbin/mysqld`(兼容 APT 安装的存量实例)
@@ -285,6 +298,7 @@ graph LR
### 3.4 deploy.yml 核心流程
**Play 1(所有 postgresql 节点):**
1. 校验制品 URL 和密钥
2. 安装内部 APT 签名密钥和快照
3. 安装 PostgreSQL、Python 运行时包
@@ -300,11 +314,13 @@ graph LR
13. 渲染配置文件并启动 Patroni 和 exporter
**Play 2(安装 HAProxy/Keepalived):**
1. 安装 HAProxy 和 Keepalived
2. 渲染配置(验证语法)
3. 启动服务,等待 HAProxy 能连通 PostgreSQL primary
**Play 3(创建备份):**
1. 发现当前 primary
2. 创建 pgBackRest stanza
3. 在两个仓库各创建一次全量备份
@@ -312,6 +328,7 @@ graph LR
### 3.5 Templates
#### `patroni.yml.j2` — Patroni 配置
- scope/namespace/name
- restapi:监听 `ansible_host:patroni_rest_port`
- etcd3:hosts 列表、http 协议
@@ -323,17 +340,20 @@ graph LR
- create_replica_methods: basebackup (checkpoint: fast)
#### `haproxy.cfg.j2` — HAProxy 配置
- TCP 模式
- frontend:`0.0.0.0:{haproxy_service_port}`
- backend:`patroni_primary`,使用 `option httpchk GET /primary`(Patroni REST API 健康检查)
#### `keepalived.conf.j2` — Keepalived 配置
- VRRP 实例 `VI_PGHA`,state=BACKUP,nopreempt
- 单播模式(unicast_src_ip + unicast_peer)
- 健康检查脚本:`check-xinfra-haproxy.sh`
- auth_pass 由集群 UUID SHA1 派生
#### `pgbackrest.conf.j2` — pgBackRest 配置
- 双仓库:repo1 在第一个节点、repo2 在第二个节点
- retention-full=2
- stanza 名 = 集群名