用途:在私有网络的三台主机上构建并运维 MySQL 8.0 单主 Group Replication 集群,配合保留(reserved)IP 实现自动故障切换,并提供每日快照与二进制日志归档恢复。
主要能力:三台同规格机器、一个应用分配的保留IP、防火墙规则与 Cloudflare 记录;成员上运行 MySQL 8.0 单主复制及六个 systemd 单元(端点认领、心跳、二进制日志归档、上传、快照、验证恢复)。备份产物包括每日 GTID 标记的 mysqldump、各成员持续归档的二进制日志,以及每日实际执行恢复的校验结论。
故障切换:Group Replication 选出新主库;各成员上每10秒的计时器在成员处于 ONLINE、PRIMARY 且非 super_read_only 时认领保留IP。Cloudflare 记录内容为保留IP且不变,DNS 由 OpenTofu 拥有,分配权由 MySQL 拥有。
使用方式:改状态或执行生命周期命令前先读 references/configuration.md。命令:./green build(仅渲染工作目录)、./green create --dry-run(只遍历图,不联系任何资源)、./green create(收敛、快照、验证恢复并断言)、./green health(只读断言)、./green delete(受保护拆除)。真实生命周期需 Babashka、OpenTofu、Ansible、SSH,dev环境由 devenv.nix 提供;build 与 --dry-run 不需要这些也不需要凭据。
安全与限制:密钥不要写入 colors.yml,用被忽略的 COLORS_PAR_* 导出;不要设置 COLORS_PAR_PROFILE,不要编辑生成的 .colors/ 文件。默认使用 build 与 create --dry-run;真实 create 或 delete 需明确授权。保持 compute-prevent-destroy: true,单次授权删除时以 COLORS_PAR_COMPUTE_PREVENT_DESTROY=false 解除。限制 mysql-ssh-sources 与 mysql-client-sources,不要用 0.0.0.0/0(MySQL 端口为公网端口)。设计仅需两个数据库凭据,不要引入第三个。存储用 provider-backend: r2 或 s3;r2 需 COLORS_PAR_R2_ACCESS_KEY_ID 与 COLORS_PAR_R2_SECRET_ACCESS_KEY,s3 用环境 AWS 凭据链。原有单体 compute 状态需显式迁移,本生命周期拒绝。集群引导是危险操作,仅当所有成员报告看不到任何 ONLINE 成员后才引导,切勿放宽该条件。定价、费用与平台信息暂未提供。