ICP备案

备案站点的数据库变更与在线 DDL 实践

作者:备案源头内容团队内容审核:备案源头内容团队更新于 2026年9月11日

一次 ALTER TABLE 就能让站点不可用

同样一条加字段语句,在几千行的小表上几十毫秒结束,在千万级大表上可能锁住几分钟甚至更久。锁住期间读写全部阻塞,请求迅速堆积、连接池打满,最终整站雪崩——很多"莫名其妙的宕机"根因就是一次看似无害的表结构变更。数据库的日常运维见 数据库运维与高可用

关键要点

  • 大表 DDL 的危险不在"慢",而在"锁表"与随之而来的连接堆积。
  • 迁移必须向后兼容:扩展 → 切换 → 收敛,分三次发布,每步可独立回滚。
  • 加字段要允许 NULL 或带默认值,避免触发全表重写。
  • 变更前务必在同量级数据上演练计时,并确认有回滚路径。

DDL 的锁与主从延迟

操作 主要风险 建议
加列(可空/有默认值) 通常较轻 可在线执行
加索引 大表耗时长 用在线工具或低峰执行
改字段类型 常触发全表重写 走影子表方案
删除列 不可逆 先停用再延后删除

还有一个容易被忽略的连带影响:大 DDL 会让主从复制延迟飙升,此时走从库的读请求会读到明显过时的数据,业务上表现为"刚改的内容看不到"。

影子表:在线变更的通用思路

对大表的重型变更,成熟做法是影子表(gh-ost、pt-osc 等工具的核心思路):

  1. 按新结构建一张空的影子表。
  2. 分批拷贝存量数据,同时用触发器或 binlog 追平增量。
  3. 数据校验一致后,原子地重命名切换
  4. 保留旧表一段时间作为回滚点,确认无误再删除。

整个过程只有最后的重命名需要极短锁定,业务几乎无感。

向后兼容的三步迁移(核心)

阶段 代码行为 数据库状态
扩展 同时写新旧字段,仍读旧字段 新字段已加,旧字段保留
切换 改为读新字段 历史数据已回填
收敛 停止写旧字段 删除旧字段

关键在于数据库变更与代码发布必须解耦:如果结构变更和代码改动放在同一次发布,一旦要回滚就会陷入"代码回滚了但表结构回不去"的僵局。发布策略见 灰度发布与蓝绿部署

数据回填

历史数据回填要分批小步进行并限速,否则会打满磁盘 IO、拖慢所有线上查询。回填任务要做成幂等可重入的,中断后能安全续跑,做法见 定时任务运维:幂等、防重与补偿

变更前的演练清单

常见坑

  • 直接在生产大表上 ALTER:锁表引发全站不可用。
  • 加 NOT NULL 且无默认值:触发全表重写。
  • 迁移与代码同一次发布:回滚时进退两难。
  • 回填不限速:把数据库 IO 打满。

资料来源

MySQL/PostgreSQL 官方 DDL 与在线变更文档,以及 gh-ost、pt-online-schema-change 等工具的公开资料。本文为通用运维说明,仅供参考,具体以实际数据库版本与数据量为准。

相关阅读

网站访问日志留存与安全合规运维要点

为什么要留日志:这是法定要求 《网络安全法》第二十一条明确要求网络运营者"采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月"。已完成备案、对外提供服务的网站属于网络运营者范畴,日志留存不是可选项,而是基础合规义务。 应留存哪些日志 | 日志类型 | 记录内容 | 主要用途 …

网站新增域名如何补充接入备案

企业在原有网站基础上新增域名,比如启用新的品牌域名或拼音域名指向同一网站时,不能直接绑定使用,而是需要在原备案基础上补充办理新增域名的接入手续。 新增域名前的准备工作 新增域名前,建议先确认该域名已经完成实名认证,可以通过 Whois查询 核对域名的注册信息和实名状态,避免因域名信息未实名导致接入申请被退回。同时确认…

备案信息年度核查该如何配合应对

部分省份的通信管理部门会对辖区内已备案网站开展年度或不定期核查,核查方式包括系统比对、电话回访、短信确认等,目的是确认备案信息与网站实际运营情况是否一致。 核查通常关注哪些内容 年度核查一般围绕主体信息、网站信息、接入信息三个维度展开,具体可以对照下表自查: | 核查维度 | 常见核查点 | | --- | --- …

备案号在网站上的规范展示与使用要求

网站完成备案只是第一步,备案号在页面上的展示方式同样需要长期维护,很多主体正是因为展示细节不规范,在日常巡查或年度核查中被要求整改。 展示位置与基本要求 通常做法是将备案号放置在网站首页底部,文字需清晰可辨、不被图片或广告遮挡,且格式应与下发的备案号文本保持一致,不能随意增减字符或调整顺序。是否需要加超链接指向查询入…

备案注销之后重新申请要注意什么

有些主体在此前因业务调整、接入商变更等原因注销了原有备案,之后又因新的业务需要重新申请备案。这种“二次备案”与首次备案在流程上大体相似,但有几个环节容易被忽略。 重新申请前的自查 重新申请前,建议先用 ICP备案查询 确认原备案是否确实已经完成注销,避免出现原备案未彻底清空、新申请与旧记录冲突的情况。同时检查计划使用…

备案信息变更有没有时效要求

备案不是办理完成后就一劳永逸的事项,主体信息、网站信息或联系方式一旦发生变化,通常需要在信息变化后的一定时间内完成变更提交,具体时限以属地管局要求为准。 哪些变化需要及时申报 常见需要变更的情形包括:主办单位名称或证件信息变化、网站负责人更换、联系电话或邮箱失效、网站域名调整、网站内容服务类型发生实质变化等。这类变更…

公司迁址之后备案地址信息如何更新

企业办公地址或注册地址发生变化后,备案信息中登记的地址项也需要相应更新,尤其是当迁址涉及跨区、跨市甚至跨省时,办理流程会比同城内迁址更复杂一些。 迁址后需要关注的信息 迁址后首先要确认工商登记信息是否已经完成同步变更,备案地址一般以工商登记的最新地址为准。可以先用 ICP备案查询 查看当前登记的主办单位地址,与最新的…

备案预留手机号邮箱变更该如何更新

备案信息中登记的手机号和邮箱,是管局与接入服务商联系网站负责人的主要渠道,用于发送核查通知、验证短信、审核结果等重要信息。这些联系方式一旦更换却未同步更新,容易导致关键通知被漏收。 常见需要更新的场景 负责人更换手机号或离职导致原号码停用; 企业邮箱系统迁移,原邮箱地址不再使用; 备案负责人变更,联系方式随之更换。 …

系统学习