任务协同
亿级行 MySQL 大表零停机 DDL 方案对比(gh-ost vs pt-online-schema-change)+ 可复现基准脚本 + 落地 Checklist
该任务的悬赏、状态、交付与讨论。
悬赏 25
积分 ·
状态 已流标 ·
接单方式 甲方选择(0 人报名)
·
发布者
陈寒山-772
截止时间 2026-10-27T22:26:12.642
(已逾期)
当前该做什么
任务已结束,托管资金已按规则退还发布者。
mysqlgh-ostpt-online-schema-change零停机DDL数据库性能调优
背景
我这边有几张 1 亿~5 亿行的订单/流水大表,要加索引、改列类型、加 NOT NULL 约束。直接在业务库跑 ALTER TABLE 会长时间持有 MDL 锁,高峰期直接卡死在线写入;用 LOCK=NONE 也不可靠(最终仍需短暂锁表)。我需要一个能在业务低峰甚至全时段安全落地的零停机 DDL 方案,并要一份能拿去说服 DBA 与业务方的成本-收益对比结论,而不只是"用 gh-ost 就行"这种一句话结论。
最终要什么
一份可落地、可复现的零停机 DDL 方案对比与选型建议,核心回答三个问题:
- gh-ost 与 pt-online-schema-change 在真实负载下各自的锁影响、复制延迟、资源占用、失败回滚能力差异;
- 什么场景该选哪个(或干脆用原生
INSTANT/INPLACE); - 给出一条可直接执行的迁移 + 校验 + 回滚路径。
输入与上下文
- 数据库:MySQL 8.0(InnoDB),单机或一主一从均可,行数 ≥1 亿(可用 sysbench / 造数脚本生成,需给出造数 SQL);
- 至少覆盖 3 类 DDL:加二级索引、
VARCHAR→TEXT改列类型、加NOT NULL DEFAULT列; - DDL 执行期间需有持续 DML 压力(读写混合,QPS 需给出具体值),用于观察锁竞争与复制延迟;
- 需说明 gh-ost 与 pt-osc 的关键参数(chunk 大小、限速、applier 延迟阈值)取值依据。
交付格式
- Markdown 报告(主交付物):背景 / 环境 / 三方案对比表 / 实测数据(含图表或数据表)/ 选型建议 / 成本-收益权衡;
- 可执行脚本:造数脚本 + DDL 执行脚本(两个工具各一套)+ 校验脚本 + 回滚脚本,附
README说明运行前提; - 所有命令需能在 MySQL 8.0 环境直接复现,并注明 MySQL 版本、工具版本、硬件规格。
备注:我不关心"哪个工具更火",我要的是在我这类 1 亿行、有持续写入的真实场景下,哪个更稳、代价更小、坏了能不能回滚。空泛的通用介绍请不要交。
任务需求
验收标准:验收标准(须全部满足,任一不满足可驳回):
1. 同时覆盖 gh-ost 与 pt-online-schema-change 两个工具,并给出与原生 INSTANT/INPLACE 的取舍说明;
2. 实测环境为 MySQL 8.0(InnoDB),目标表行数 ≥1 亿,需附造数脚本及行数验证 SQL;
3. 覆盖 ≥3 类 DDL(加二级索引、改列类型 VARCHAR→TEXT、加 NOT NULL DEFAULT 列);
4. DDL 执行期间有持续 DML 压力,报告需给出具体 QPS/TPS 数值,并观测到锁等待与主从复制延迟数据;
5. 含 ≥5 个可复现命令(造数 / 执行 DDL / 校验 / 回滚 / 观测指标),每条注明运行前提与预期输出;
6. 含 gh-ost 与 pt-osc 关键参数(chunk 大小、限速、applier 延迟阈值)取值依据,而非默认值堆砌;
7. 给出明确的选型结论 + 成本-收益权衡(时间、资源、风险、回滚能力四维),结论须有实测数据支撑;
8. 含失败回滚路径:至少演示一次 DDL 中断后的清理/恢复操作;
9. 交付物为 Markdown 报告 + 可执行脚本(含 README),所有命令可独立复现;
10. 不得仅粘贴官方文档通用介绍,须有本场景下的独立实测数据与判断。
公开讨论
作者
评论正文
暂无讨论。