本节摘要:数据库镜像与日志传送是可用性组之前的两代高可用技术,如今一个已弃用、一个退居二线,但存量系统里仍大量服役,接手老环境绕不开它们。本节讲清两代技术的机制与历史定位,再补上 Azure SQL 的平台级高可用,最后落到升级、迁移与上云的路径选择——包括那笔绕不开的 License 降本账。
接手一个 2012 版的老系统,配置清单里赫然写着"数据库镜像"——这就是答案。镜像在两个服务器间以事务为单位同步日志:主体写日志、镜像端重放, SAFETY FULL 时同步提交、SAFETY OFF 时异步(高性能模式),配合见证服务器可自动切换,客户端靠重定向或故障转移加连接串接管。它只支持单库、镜像端不可读、无多副本能力,2012 年被可用性组全面取代,官方已宣布弃用——但机制思想(日志传送加重放)是一切高可用的根,且存量运维还会持续很多年。日志传送更朴素:主库定时做日志备份,备库定时还原(可设延迟还原,给"手滑删表"留一个时间缓冲),备库全程可读,切换靠手工。它不是实时高可用(RPO 是备份间隔的分钟级),更像一个廉价的温备加只读分流,至今仍活跃在"要一个延迟副本防误删"的场景里。
| 维度 | 数据库镜像 | 日志传送 | 可用性组 |
|---|---|---|---|
| 同步粒度 | 事务级重放 | 日志备份定时还原 | 日志块流式同步 |
| 切换速度 | 秒级(可自动) | 分钟级手工 | 秒级自动或手动 |
| 副本可读 | 不可 | 快照或延迟可读 | 可配置只读 |
| 数据库数量 | 单库 | 单库可多库配 | 一组库整体切换 |
| 当前定位 | 已弃用,仅存量 | 温备与延迟副本 | 现役主力和企业标准 |
-- 遇到存量镜像的取证三连 SELECT name, mirroring_state_desc AS 镜像状态, -- SYNCHRONIZED 即健康 mirroring_safety_level_desc AS 安全级别, -- FULL 同步 OFF 异步 mirroring_witness_state_desc AS 见证状态 FROM sys.database_mirroring WHERE mirroring_guid IS NOT NULL; -- 巡检要点:DISCONNECTED 或 SUSPENDED 状态超过一小时必须介入, -- 镜像队列堆积会反向拖慢主库事务提交(同步模式下)。
Azure SQL 的可用性体系是"平台替你做 6.1 的事"。本地冗余默认三副本放同一机房,单节点故障秒级自动接管,RPO 为零;区域冗余把副本摊到同一区域的多个可用区,扛机房级灾难;异地复制(活动地理复制)提供最多四个异地持续复制的可读副本——本质是云化的异步副本;自动故障转移组把一组库整体绑定到异地端点,切换连同监听器一起漂移。平台托管备份默认自带(七分钟到一小时的增量节奏,可配置时点保留期)。对运维的直接含义是:清单上的"备份作业成功率、副本延迟、仲裁健康"这些巡检项,在 PaaS 形态下换成"异地复制延迟、备份保留策略、切换演练"三项。责任交出去了,验证的责任交不出去——云上的切换同样要演练。
升级与迁移是一张决策树。原位升级(旧实例上就地装新版):省机器省时间,风险是原地把戏——失败回退难,建议留全备加回滚预案,适合停机窗口充足的小环境。并排搬迁(新版本新机器,备份还原或日志对齐后切换):可回退可验证,是企业默认路径。上云三档:Azure 虚拟机搬迁等于并排搬迁换机房(OS 与实例归你管,License 可按需付费);Azure SQL 托管实例走"备份还原直迁"——本地全备可直接还原到托管实例,兼容度极高,是整实例上云的着陆区;Azure SQL 数据库则需要按库重构适配,适合新建或单库改造。迁移前的体检靠数据迁移助手类工具扫描兼容性阻断点(弃用特性、行为变更),迁移后的验证靠两库对账脚本(行数、聚合校验和、关键业务抽样)。兼容性级别迁移后先不忙升:先在新版本上以旧兼容级别稳定运行,再逐级调整并回归测试——把"版本升级"与"行为变更"两个变量分开动。
上云的账这样算。成本侧三笔:许可证(Azure Hybrid Benefit 用本地带软件保障的许可抵扣,这是最大的一笔折扣)、计算存储(PaaS 按服务层级付费,省下的硬件折旧与机房)、人力(平台接管的补丁、备份、高可用,折算成运维工时)。风险侧两笔:出口流量与延迟敏感业务的适配成本、方言与特性差异的改造成本。一个真实决策样例:五十个库的 ERP 实例,托管实例直迁加 Hybrid Benefit,三年总成本比本地硬件刷新周期便宜约三成,且把高可用演练这类人力活交给了平台——结论顺理成章。反过来,纯内网、低增长、运维成熟的系统,留在本地继续服役到折旧期满,也是理性选择。上云不是信仰,是一笔要算清楚的账。
迁移项目最难的不是搬,而是证明"搬得没走样"。三层对账构成完整证据链。结构对账:对比两库的表、列、索引、约束清单与定义哈希——结构不一致一切免谈,工具能自动出差异报告。总量对账:每表行数加关键列聚合(金额求和、日期极值),大表用分区粒度分段对比,误差必须为零。抽样对账:按业务键随机抽取几千行做逐列比对,专抓"行数对但内容错"的暗伤——字符集转换、精度截断、空值语义这三类问题行数对账抓不住,只有逐列比对能暴露。双跑对比是第四重保险:新旧库并行服务只读流量一段时间,比对两边查询结果的差异,它是迁移切换前最有说服力的验尸程序。对账脚本本身要进版本库,迁移项目的交付物里,对账报告与备份策略同等重要。
高可用与上云的"保运行"命题收官。下一章换一道防线:数据不丢之外,还要防"不该看的人看到"——安全体系的纵深防御。