原文地址:Database Migration to Azure for PostgreSQL
原文作者:Vladimir Bilyak
许多组织选择 Azure 云是因为其丰富的基础架构。在这篇文章中,我们将探讨将数据库迁移到 Azure PostgreSQL 的不同方法。
PostgreSQL 长期以来一直是非常流行的开源关系数据库管理系统。随着迁移到 SAAS 平台的长期趋势,许多组织选择 Azure 云,因为它提供了丰富的基础架构,包括 200 多个应用程序。这就是为什么将数据库迁移到 Azure for PostgreSQL 是一个合理的选择。
本文探讨了三种迁移类型的基本方法:
- Azure 数据库的不同引擎之间
- 从本地 PostgreSQL 到 Azure for PostgreSQL
- 从不同的本地数据库到 Azure for PostgreSQL
Azure 数据工厂
如果源数据库和目标数据库都托管在同一资源组和位置下的同一 Azure 帐户中,我们可以通过 Azure 数据工厂根据提取-传输-加载 (ETL) 方法运行迁移。必须在与数据库实例相同的资源组和区域中创建该工具的实例。在运行 ETL 数据库之前,专家必须完成准备任务,例如探索和评估源、设计迁移规则和其他步骤,以构建最佳迁移方法。
尽管使用 Azure 数据工厂进行数据库迁移是一个简单的过程,但它包含许多设置迁移过程的步骤:
- Azure 数据工厂门户并选择“复制数据”选项
- 输入任务名称和执行频率(一次性迁移为“Run once now”)
- 选择源数据库,它是我们任务的 Azure SQL
- 提供凭据以从 Azure 数据工厂连接到 Azure SQL 数据库。单击“测试连接”按钮以确保连接可用。
- 选择要迁移的表或构建自定义查询以重新组织数据
- 指定目标数据库,在我们的示例中,它是 Azure Database for PostgreSQL
- 提供凭据以从 Azure 数据工厂连接到 Azure Database for PostgreSQL。单击“测试连接”按钮以确保连接可用。
- 下一步是映射表,这是整个过程的真正瓶颈,因为系统无法自动化它。即使源和目标都有同名的表,您也必须手动指定等价。
- 最后,我们可以设置数据一致性验证、日志记录和其他与迁移性能和数据完整性相关的参数
任务执行完成后,数据将从 Azure SQL 数据库迁移到 Azure Database for PostgreSQL。
Azure 数据库迁移服务
如果迁移源是本地 PostgreSQL 服务器,则可以使用 Azure 数据库迁移服务 (DMS) 将数据库迁移到 Azure for PostgreSQL。在开始数据库迁移之前,您需要检查以下先决条件:
- Azure for PostgreSQL 的版本不低于本地 PostgreSQL 的版本
- 通过 ExpressRoute 或 VPN 设置与本地 PostgreSQL 的连接
- Windows 防火墙不会阻止 Azure DMS 访问源 PostgreSQL 服务器的 TCP 端口(默认为 5432)
- 为 Azure Database for PostgreSQL 创建防火墙规则,以允许 Azure 数据库迁移服务访问目标数据库(请参阅下面的相关屏幕截图)
- 从 Azure Cloud Shell 安装并运行 2.18 或更高版本的 CLI,可以通过单击 Azure 门户右上角的 Cloud Shell 按钮来启动。
现在一切都已设置并准备好进行数据库迁移。按照以下步骤将架构、索引和存储过程从本地 PostgreSQL 服务器迁移到 Azure for PostgreSQL:
- 使用源数据库的模式创建转储文件:
pg_dump -o -h host_name -U user_name -d db_name -s > output_schema.sql
复制
- 将转储文件中的模式导入目标数据库:
psql -h host_name -U user_name -d db_name < output_schema.sql
复制
- 使用数据库迁移服务的同步扩展迁移数据
通过 Azure 数据库迁移服务进行的数据库迁移过程的详细信息在Microsoft Azure 官方文档中指定。
第三方工具
将 MySQL、Oracle 或 IBM DB2 等不同的本地数据库迁移到 Azure for PostgreSQL 时,使用为此目的设计的特殊自动化工具是合理的。例如, Intelligent Converters 开发的MySQL 到 PostgreSQL 转换器可以简化本地和云 MySQL 实例到 Azure for PostgreSQL 的迁移。
MySQL 到 PostgreSQL 转换器的主要特点:
- 支持 PostgreSQL(从 v9.0 开始)和 MySQL 的所有版本、fork 和 SAAS 变体,包括 Heroku、Azure、MariaDB 和 Percona
- 迁移表、数据、索引、约束和视图
- 支持 PostgreSQL 的 SSL 连接
- 通过 SELECT 查询过滤和预处理源数据
- 将 MySQL 数据库迁移到包含 SQL 语句的 PostgreSQL 转储文件的选项,以创建数据库对象并加载数据
- 将现有 PostgreSQL 数据库与源数据合并或同步的选项
- 命令行支持
尽管该产品具有直观易用的界面,但在配置与 Azure for PostgreSQL 的远程连接时有两个重要的控制点。
首先,确保您的机器的 IP 地址在 Azure 上允许的 IP 列表中:
- 打开 Microsoft Azure 仪表板并单击要访问的服务器名称
- 单击窗口左侧菜单中的“连接安全”项
- 确保“允许访问 Azure 服务”控件为“是”
- 如果“添加当前客户端 IP 地址”链接处于活动状态,则意味着您的 IP 地址不在列表中。单击链接以添加它。
下一步是获取 Azure PostgreSQL 服务器的名称并检查 SSL 状态:
- 返回 Microsoft Azure 仪表板并单击要使用的数据库服务器
- 找到“服务器名称”项,在我们的示例中,它是“ictest3.postgres.database.azure.com”(请参见下面屏幕截图中标记为红色的项)
如果 Azure for PostgreSQL 配置为启用了“SSL 强制状态”,则需要指定 SSL 证书 BaltimoreCyberTrustRoot.crt,该证书可从 Microsoft Azure 官方站点下载。要将 MySQL 中的证书指向 PostgreSQL 转换器,请单击“连接到 PostgreSQL 服务器”向导页面上的“高级…”按钮,然后在对话框的“CA 证书”字段中输入文件的路径。
结论
本文探讨了将数据库迁移到 Azure for PostgreSQL 的三个选项,其中包括:
- Azure 数据工厂可用于在两个 Azure 数据库实例之间迁移
- Azure 数据库迁移服务 (DMS) 将数据库从本地 PostgreSQL 服务器迁移到 Azure for PostgreSQL
- 只需单击几下鼠标按钮,MySQL 到 PostgreSQL 转换器等第三方数据库迁移工具即可将任何本地或云数据源迁移到 Azure for PostgreSQL