releem-agent
Releem/releem-agent加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个深夜告警:线上 API 的 P99 突然从 80ms 涨到 1.4s,DBA 看了一眼 innodb_buffer_pool_size,怀疑内存给小了,但没敢动手——因为上一个季度改过一次参数,事故还没复盘完。Releem Agent 想解决的就是这个"知道该改什么,但不敢改、也没人手改"的中间地带。
Releem 是一家北卡罗来纳州的商业数据库服务公司,2019 年起做 MySQL 调优 SaaS。开源的是它部署在客户机器上的那半边——Releem Agent,用 Go 编写,模块名还留着历史名 github.com/Releem/mysqlconfigurer。代理常驻在数据库主机上(也支持 Docker、K8s、Windows Server),每 60 秒采集一次 MySQL/MariaDB/PostgreSQL 的状态变量、系统指标、查询统计与 schema 结构,送到 Releem 云端平台;云端跑规则引擎 + 机器学习模型,再把配置建议、索引建议、DDL 变更任务下发回来,代理负责执行。

关键一点:开源的是"执行端",大脑在云上。想完整用起来必须注册 releem.com 账号拿到 API key,填进 releem.conf 或 Docker 的 RELEEM_API_KEY 环境变量。这意味着它不是自托管的监控平台,而是"开源客户端 + 闭源 SaaS"的混合形态。
传统调优工具 mysqltuner 是"拍 X 光片"——扫一遍给你一份参数建议清单,改不改全靠人;pt-query-digest 是"翻病历"——解析慢日志告诉你哪条 SQL 最贵。Releem 更像"带随访的专科门诊":它持续跟踪你的指标变化,AI 调优必须等基线数据采集到位、且上一次建议被应用过之后才会启动,再把 AI 调整与规则基线建议、人工覆盖项合并成一份提案。文档里写得很直白:显示提案不会改动服务器,团队审查后才选择执行方式。
task-automator/):这是本仓库最有工程含量的部分。代理收到平台校验过的 DDL 后,先检查 enable_exec_ddl 开关,再做 datadir 空间检查、变更前备份,然后优先走原生 Online DDL(ALGORITHM=INPLACE/INSTANT/MariaDB NOCOPY + LOCK=NONE),失败才回退 pt-online-schema-change。关键是先在 scratch schema 的空克隆表上做预检,全部流程钉在同一个数据库会话上并临时调小 lock_wait_timeout。显式的 ALGORITHM=COPY、LOCK=EXCLUSIVE 会被直接拒绝而非强行执行。tasks/ 下分别有 AWS RDS、GCP Cloud SQL、Azure Database for MySQL 的 apply 实现与独立测试。AWS 路径用退出码区分场景(实例参数组 2/3,集群参数组 4/5),Aurora 场景额外要求集群参数组必须 custom、已挂载、匹配,且只有 writer 能改集群组。有 Docker 镜像 releem/releem-agent(约 130MB,已拉取超千万次),entrypoint 通过环境变量模板生成 releem.conf。裸机可用 install.sh(7 万多字符,覆盖 Linux/各发行版)、windows/install.ps1、releem.sh、mysqlconfigurer.sh。但要注意:Dockerfile 里并没有从源码构建 Go 二进制,而是从 S3 下载预编译的 releem-agent-$(arch)——想改代码得自己 go build。
Releem 代表的是 2024 年后数据库运维工具的一类共同演化:把"专家经验"固化成规则引擎 + 机器学习,把"改生产库"包进审批、回滚、审计的受控自动化里。Vlad Mihalcea(High-Performance Java 博客作者)在实测后评价其指标与查询分析视图设计扎实。仓库本身质量也可圈可点:233 个文件,Go 单测 + Bats 端到端安装测试 + Terraform 驱动的云上 e2e 测试三线并行,AGENTS.md 里甚至详细规定了 AI 协作编码时必须保持的行为契约(如退出码语义、不可改动二进制与密钥文件)。这种"把工程规矩写给 Agent 读"的做法本身,就已经是开源项目里少见的成熟度信号。
