沪江成立于 2001 年作为较早期的教育学习网站,当时技术选型范围并不大:Java 的版本是 数据库也跟随 SQL Server 进行版本升级。
十几年过去了技术社区已经发生了天翻地覆的变化。滬江部分业务还基本在 .net 体系上这给业务持续发展带来了一些限制,在人才招聘、社区生态、架构优化、成本风险方面都面临挑战集团經过慎重考虑,发起了大规模的去 Windows 化项目这其中包含两个重点子项目:开发语言从 C# 迁移到 Java,数据库从 SQL Server 迁移到 MySQL
本文主要向大家介绍,从 SQL Server 遷移到 MySQL 所面临的问题和我们的网络问题的解决方案案
设计迁移方案需要考量以下几个指标:
迁移前后的数据一致性;迁移项目是否对业務代码有侵入;
需要提供额外的功能:表结构重构、字段调整。
经过仔细调研在平衡复杂性和业务方需求后,迁移方案设计为两种:停機数据迁移和在线数据迁移如果业务场景允许数小时的停机,那么使用停机迁移方案复杂度低,数据损失风险低如果业务场景不允許长时间停机,或者迁移数据量过大无法在几个小时内迁移完成,那么就需要使用在线迁移方案了
数据库停机迁移的流程: