0Pricing
Azure Fundamentals · 课时

将数据库迁移到 Azure

使用 Azure 数据库迁移服务规划并执行数据库迁移,并了解迁移到云端期间尽量减少停机时间的常见策略。

将数据库迁移到 Azure 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。

为什么要将数据库迁移到 Azure

将数据库从本地环境迁移到 Azure,可以带来多项优势,包括降低运维开销(无需管理硬件)、内置高可用性和备份,以及按需弹性扩展计算和存储的能力。组织还可能为了满足云优先要求、淘汰老旧的数据中心硬件,或利用地理复制和智能查询调优等高级功能而进行迁移。

迁移策略概览

数据库迁移通常采用两种主要策略之一。离线迁移会使源数据库离线,将数据复制到目标数据库,然后将应用程序切换到新的终结点——这种方式简单,但需要维护时段。在线迁移使用持续数据复制,在源数据库运行期间使目标数据库与其保持同步,并以几秒或几分钟计的极短停机时间完成切换。

Azure Database Migration Service

Azure Database Migration Service (DMS) 是一种完全托管的工具,可协调从多种源——SQL Server、MySQL、PostgreSQL、MongoDB、Oracle 等——迁移到相应 Azure 托管目标的数据库迁移。DMS 负责架构转换、数据移动和复制,并在单个仪表板中报告迁移状态和错误。

# Create a DMS instance
az dms create \
  --location eastus \
  --name myDMSinstance \
  --resource-group myRG \
  --sku-name Standard_1vCores \
  --subnet /subscriptions/<sub-id>/resourceGroups/myRG/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet

迁移前评估

迁移前,请运行迁移前评估,以识别源数据库与目标 Azure 服务之间的兼容性问题。Azure Data Studio 中的 SQL Server 数据库迁移评估扩展会扫描存储过程、触发器和查询,查找 Azure SQL Database 或 SQL Managed Instance 不支持的功能,并按优先级列出需要在切换前修复的项目。

从 SQL Server 迁移到 Azure SQL Database

将 SQL Server 迁移到 Azure SQL Database(单一数据库)适合具有单个数据库且不使用实例级功能(例如 SQL Agent 或跨数据库查询)的应用程序。如果评估发现存在实例级依赖项,Azure SQL Managed Instance 可将 SQL Server 引擎以接近 100% 的兼容性迁移到 PaaS 容器中,同时保留 SQL Agent 作业、链接服务器和 CLR 对象。

使用日志重播进行在线迁移

Azure DMS 使用 Log Replay Service (LRS) 将 SQL Server 在线迁移到 Azure SQL Managed Instance。LRS 持续读取 Azure Blob Storage 容器中的事务日志备份,并在目标 Managed Instance 上重播这些日志,使其与源数据库保持同步。最终切换由手动触发,并在几秒内完成,从而将维护时段缩短到几乎为零。

从 PostgreSQL 迁移到 Azure Database for PostgreSQL

将 PostgreSQL 数据库迁移到 Azure 时,DMS 同时支持离线迁移(pg_dump/pg_restore)和通过逻辑复制进行在线迁移。源 PostgreSQL 服务器必须启用逻辑复制(wal_level = logical),并且迁移用户必须拥有复制权限。DMS 负责架构迁移、初始完整加载和变更数据捕获,直到最终切换。

# Enable logical replication on source PostgreSQL
# In postgresql.conf:
wal_level = logical
max_replication_slots = 5
max_wal_senders = 5

从 MySQL 迁移到 Azure Database for MySQL

DMS 使用 MySQL 二进制日志进行持续复制,将 MySQL 数据库迁移到 Azure Database for MySQL Flexible Server。源 MySQL 实例必须设置为 binlog_format = ROW 并启用二进制日志记录。Azure 门户中的迁移向导会引导您连接源和目标、选择数据库,以及在切换前监视迁移进度和延迟。

# Verify binary logging on source MySQL server
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';

最大限度减少切换期间的停机时间

实现低停机迁移的关键,是提前完成批量初始加载,然后让变更数据捕获持续运行,直到复制延迟接近于零。此时,您需要:停止向源数据库写入数据,等待最后的变更传输到目标数据库,更新应用程序连接字符串,然后开始向新的目标数据库写入数据。谨慎管理 DNS TTL 并采用蓝绿切换,可以进一步减少影响。

迁移后验证

切换后,请通过比较源表和目标表中的行数、运行关键应用程序查询以验证数据正确性,并检查所有存储过程、视图和函数是否返回预期结果来验证迁移。通过比较执行计划,监视目标数据库是否出现查询性能下降,并在目标数据库上更新统计信息和重建索引,以确保从第一天起就获得最佳性能。

-- Compare row counts across all tables
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'myDatabase'
ORDER BY TABLE_NAME;

使用 Azure Migrate 发现数据库

Azure Migrate 除了提供服务器评估功能外,还提供数据库发现和评估功能。Azure Migrate 设备会扫描您的本地环境,清点 SQL Server 实例,估算相应 Azure 规格的大小和成本,并标记兼容性问题。因此,在使用 DMS 执行实际迁移之前,Azure Migrate 是合乎逻辑的起点。

快速检查

测试您对本课中 Microsoft Azure 基础知识(AZ-900)概念的理解。

课程回顾

本课中,您学习了:Azure Database Migration Service 可协调从多种源数据库引擎进行的迁移、在线迁移使用变更数据捕获来最大限度减少切换期间的停机时间,以及迁移前评估可以在开始迁移前识别兼容性问题。接下来,我们将学习 Azure 标识和 Microsoft Entra ID。

常见问题解答

「将数据库迁移到 Azure」课时是免费的吗?

是的 — 「将数据库迁移到 Azure」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。

「将数据库迁移到 Azure」这节课中我会学到什么?

使用 Azure 数据库迁移服务规划并执行数据库迁移,并了解迁移到云端期间尽量减少停机时间的常见策略。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Azure Fundamentals 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「将数据库迁移到 Azure」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Azure Fundamentals 课中编写并运行代码吗?

能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Azure SQL Database
  2. Azure Cosmos DB:全球 NoSQL
  3. Azure 开源数据库引擎
  4. 将数据库迁移到 Azure
← 返回 Azure Fundamentals