如果Azure平台的数据库部署在虚拟网络中,并且您希望将数据库迁移至阿里云平台,您可以在Azure虚拟网络和阿里云VPC之间建立网络连接,在Azure虚拟网络和阿里云VPC实现网络互通的基础上,再通过数据传输服务 DTS(Data Transmission Service)将Azure平台的数据迁移至阿里云平台。本文介绍如何建立IPsec-VPN连接(绑定VPN网关实例)实现Azure虚拟网络和阿里云VPC之间的网络互通,并介绍如何通过DTS将Azure Database for MySQL 灵活服务器中的数据迁移至阿里云云数据库 RDS MySQL实例中。
场景示例
本文以上图场景为例。某企业在Azure平台的Germany West Central区域拥有一个虚拟网络,虚拟网络中创建了Azure Database for MySQL灵活服务器。当前企业正在将业务迁移至阿里云平台,企业已在阿里云德国(法兰克福)地域创建了一个VPC,并且VPC下已创建了RDS MySQL实例,企业希望可以将Azure Database for MySQL灵活服务器下的数据迁移至阿里云RDS MySQL实例中。
企业可以先使用IPsec-VPN(绑定VPN网关)在Azure虚拟网络和阿里云VPC之间建立网络连接,在Azure虚拟网络和阿里云VPC内的资源支持互通的情况下,再使用DTS将Azure Database for MySQL灵活服务器中的数据迁移至阿里云RDS MySQL实例中。
前提条件
在开始操作前,请确保您已经拥有以下环境并且已获得对应的资源信息:
- 在Azure平台Germany West Central区域拥有一个虚拟网络,虚拟网络下部署了Azure Database for MySQL灵活服务器(以下简称为Azure MySQL服务器)。具体操作,请咨询Azure平台。 
- 在阿里云平台德国(法兰克福)地域拥有一个VPC,VPC下已经创建了RDS MySQL版数据库。具体操作,请参见快速创建RDS MySQL实例。 
- 您已知Azure虚拟网络和阿里云VPC间要互通的网段信息以及要进行数据迁移的2个数据库账号信息。 重要- 您可以自行规划网段,请确保Azure虚拟网络和阿里云VPC间要互通的网段没有重叠。 
- 请确保您已了解数据迁移的相关限制,并且数据库账号需已拥有相关权限。更多信息,请参见注意事项、数据库账号的权限要求章节。 
 - 资源 - 要互通的网段 - 地址 - 数据库账号 - 阿里云VPC - 10.0.0.0/16 - RDS MySQL实例的内网地址:rm-gw8x4h4tg****.mysql.germany.rds.aliyuncs.com - 如何获取RDS MySQL实例的内网地址,请参见查看和管理实例连接地址和端口。 - 用户名:AliyunUser 
- 密码:Hello1234**** 
 - Azure虚拟网络 - 192.168.0.0/16 - Azure MySQL服务器名称:zho****-azure.mysql.database.azure.com - 用户名:AzureUser 
- 密码:Hello5678**** 
- 数据库提供服务端口号:3306 
 
配置步骤
步骤一:在阿里云创建VPN网关实例
您需要先在阿里云创建一个VPN网关实例,VPN网关实例创建完成后,系统会为VPN网关实例分配2个IP地址,这2个IP地址用于与Azure平台虚拟网络建立IPsec-VPN连接。
- 登录VPN网关管理控制台。 
- 在顶部菜单栏,选择VPN网关的地域。 - VPN网关的地域需和待绑定的VPC实例的地域相同。 
- 在VPN网关页面,单击创建VPN网关。 
- 在购买页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。 - 以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例。 - 配置项 - 说明 - 本文示例值 - 实例名称 - 输入VPN网关实例的名称。 - 输入VPN网关。 - 地域和可用区 - 选择VPN网关实例所属的地域。 - 选择德国(法兰克福)。 - 网关类型 - 选择VPN网关实例的网关类型。 - 选择普通型。 - 网络类型 - 选择VPN网关实例的网络类型。 - 选择公网。 - 隧道 - 系统直接展示当前地域IPsec-VPN连接支持的隧道模式。 - 双隧道 
- 单隧道 
 - 关于单隧道和双隧道的说明,请参见绑定VPN网关。 - 本文保持默认值双隧道。 - VPC - 选择VPN网关实例关联的VPC实例。 - 选择阿里云德国(法兰克福)地域的VPC实例。 - 虚拟交换机 - 从VPC实例中选择一个交换机实例。 - IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。 
- IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。 - IPsec-VPN功能开启后,系统会在两个交换机实例下各创建一个弹性网卡ENI(Elastic Network Interfaces),作为使用IPsec-VPN连接与VPC流量互通的接口。每个ENI会占用交换机下的一个IP地址。 
 说明- 系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。 
- 创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机、交换机所属可用区以及交换机下ENI的信息。 
 - 选择VPC实例下的一个交换机实例。 - 虚拟交换机2 - 从VPC实例中选择第二个交换机实例。 - 您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。 
- 对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。 
 说明- 如果VPC实例下没有第二个交换机实例,您可以新建交换机实例。具体操作,请参见创建和管理交换机。 - 选择VPC实例下的第二个交换机实例。 - IPsec-VPN - 选择开启或关闭IPsec-VPN功能。默认值:开启。 - 选择开启IPsec-VPN功能。 - SSL-VPN - 选择开启或关闭SSL-VPN功能。默认值:关闭。 - 选择关闭SSL-VPN功能。 
- 返回VPN网关页面,查看创建的VPN网关实例。 - 刚创建好的VPN网关实例的状态是准备中,约1~5分钟左右会变成正常状态。正常状态表明VPN网关已经完成了初始化,可以正常使用。 - 系统为VPN网关实例分配的2个IP地址如下表所示: - VPN网关实例的名称 - VPN网关实例ID - IP地址 - VPN网关 - vpn-gw8dickm386d2qi2g**** - IPsec地址1(默认为主隧道地址):8.XX.XX.130 - IPsec地址2(默认为备隧道地址):47.XX.XX.27 
步骤二:在Azure平台部署VPN
为在Azure虚拟网络和阿里云VPC之间建立IPsec-VPN连接,您需要根据以下信息在Azure平台部署VPN,配置需要的具体操作请咨询Azure平台。
- 在虚拟网络中创建网关子网。创建虚拟网络网关时将会使用到该子网。  
- 创建虚拟网络网关。 - 虚拟网络网关关联至需要和阿里云互通的虚拟网络上。本文中虚拟网络网关启用主动-主动模式,并新建2个公网IP地址,其余配置采用默认值。  - 虚拟网络网关创建完成后,您可以在公共IP地址页面查看系统为虚拟网络网关分配的公共IP地址。本文中系统分配的公共IP地址为4.XX.XX.224和4.XX.XX.166。  
- 创建本地网络网关。 - 您需要在Azure侧创建2个本地网络网关,每个本地网络网关配置阿里云VPN网关实例的一个IP地址,同时将阿里云VPC实例网段和100.104.0.0/16网段一并配置到每个本地网络网关上。 说明- 创建本地网络网关时,您需要指定100.104.0.0/16网段,DTS服务将使用该网段下的地址迁移数据。  
- 创建站点到站点VPN连接。 重要- 阿里云和Azure平台下的IPsec-VPN连接均支持双隧道模式,但由于Azure平台的两条隧道默认关联至同一个本地网络网关,而阿里云侧两条隧道拥有不同的IP地址,导致Azure平台和阿里云侧的两条隧道无法做到一一对应建立连接。为确保阿里云侧IPsec-VPN连接下两条隧道同时启用,您需要在Azure平台创建两个站点到站点的VPN连接,每个站点到站点VPN连接关联不同的本地网络网关。 - 下图展示其中一个站点到站点VPN连接的配置,创建VPN连接时选择站点到站点(IPsec)类型,并关联需要和阿里云建立VPN连接的虚拟网络网关,然后选择一个本地网络网关并设置共享密钥,其余配置项使用默认值。另一个站点到站点VPN连接关联与当前VPN连接不同的本地网络网关,其余配置与当前VPN连接相同。   
步骤三:在阿里云部署VPN网关
在Azure平台完成VPN配置后,请根据以下信息在阿里云侧部署VPN网关,以便Azure虚拟网络和阿里云VPC之间建立IPsec-VPN连接。
- 创建用户网关。 - 登录VPN网关管理控制台。 
- 在左侧导航栏,选择。 
- 在顶部菜单栏选择用户网关的地域。 - 用户网关地域需和VPN网关实例的地域相同。 
- 在用户网关页面,单击创建用户网关。 
- 在创建用户网关面板,根据以下信息进行配置,然后单击确定。 - 您需要创建两个用户网关,并将Azure平台虚拟网络网关的2个公共IP地址作为用户网关的IP地址,以建立两个加密隧道。以下仅列举本文强相关配置项,其余配置保持默认值或为空。更多信息,请参见创建和管理用户网关。 - 配置项 - 说明 - 用户网关1 - 用户网关2 - 名称 - 输入用户网关的名称。 - 输入用户网关1。 - 输入用户网关2。 - IP地址 - 输入Azure平台虚拟网络网关的公共IP地址。 - 输入4.XX.XX.224。 - 输入4.XX.XX.166。 
 
- 创建IPsec连接。 - 在左侧导航栏,选择。 
- 在IPsec连接页面,单击绑定VPN网关。 
- 在创建IPsec连接(VPN)页面,根据以下信息配置IPsec连接,然后单击确定。 - 配置项 - 说明 - 本文示例值 - IPsec连接名称 - 输入IPsec连接的名称。 - 输入IPsec连接。 - 地域 - 选择IPsec连接要绑定的VPN网关实例的地域。 - IPsec连接创建完成后所属地域与VPN网关实例地域相同。 - 选择德国(法兰克福)。 - 资源组筛选 - 选择VPN网关实例所属的资源组。 - 选择默认资源组。 - 绑定VPN网关 - 选择IPsec连接关联的VPN网关实例。 - 选择已创建的VPN网关。 - 路由模式 - 选择路由模式。 - 目的路由模式:基于目的IP地址路由和转发流量。 
- 感兴趣流模式:基于源IP地址和目的IP地址精确的路由和转发流量。 
 - 选择感兴趣流模式。 - 本端网段 - 输入VPN网关实例关联的VPC实例下的网段。 - 输入以下两个网段: - VPC网段:10.0.0.0/16 
- DTS网段:100.104.0.0/16 
 重要- 您需要将DTS使用的地址段也添加到本端网段中,以便DTS通过VPN网关访问对端的数据库。 - 关于DTS地址段的更多信息,请参见添加DTS服务器的IP地址段。 - 对端网段 - 输入VPN网关实例关联的VPC实例要访问的对端的网段。 - 输入192.168.0.0/16。 - 立即生效 - 选择IPsec连接的配置是否立即生效。取值: - 是:配置完成后立即进行协商。 
- 否:当有流量进入时进行协商。 
 - 选择是。 - 启用BGP - 如果IPsec连接需要使用BGP路由协议,需要打开BGP功能的开关,系统默认关闭BGP功能。 - 本文保持默认值,即不开启BGP功能。 - Tunnel 1 - 为隧道1(主隧道)添加VPN相关配置。 - 系统默认隧道1为主隧道,隧道2为备隧道,且不支持修改。 - 用户网关 - 为主隧道添加待关联的用户网关实例。 - 选择用户网关1。 - 预共享密钥 - 输入主隧道的认证密钥,用于身份认证。 - 密钥长度为1~100个字符,支持数字、大小写英文字母及右侧字符 - ~`!@#$%^&*()_-+={}[]\|;:',.<>/?。
- 若您未指定预共享密钥,系统会随机生成一个16位的字符串作为预共享密钥。 
 重要- 隧道及其对端网关设备配置的预共享密钥需一致,否则系统无法正常建立IPsec-VPN连接。 - 当前隧道的认证密钥需和连接的Azure平台VPN连接的密钥一致。 - 加密配置 - 添加IKE配置、IPsec配置、DPD、NAT穿越等配置。 - 本文保持默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。 - Tunnel 2 - 为隧道2(备隧道)添加VPN相关配置。 - 用户网关 - 为备隧道添加待关联的用户网关实例。 - 选择用户网关2。 - 预共享密钥 - 输入备隧道的认证密钥,用于身份认证。 - 当前隧道的认证密钥需和Azure平台VPN连接的密钥一致。 - 加密配置 - 添加IKE配置、IPsec配置、DPD、NAT穿越等配置。 - 本文保持默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。 
- 在创建成功对话框中,单击取消。 
 
- 配置VPN网关路由。 - 创建IPsec连接后需要为VPN网关实例配置路由。创建IPsec连接时,如果路由模式您选择了感兴趣流模式,在IPsec连接创建完成后,系统会自动在VPN网关实例下创建策略路由,路由是未发布状态。您需要执行本操作,将VPN网关实例下的策略路由发布至VPC中。 - 在左侧导航栏,选择。 
- 在顶部菜单栏,选择VPN网关实例的地域。 
- 在VPN网关页面,单击目标VPN网关实例ID。 
- 在VPN网关实例详情页面单击策略路由表页签,找到目标路由条目,在操作列单击发布。 
- 在发布路由对话框,单击确定。 
 
步骤四:测试网络连通性
完成上述配置后,阿里云VPC和Azure虚拟网络下的资源已经可以互相通信了,您可以通过以下步骤验证阿里云VPC和Azure虚拟网络之间的网络连通性。
- 在Azure虚拟网络中创建并登录Azure VM实例。具体操作,请咨询Azure平台。 
- 在VM实例中执行 - ping命令,访问阿里云RDS MySQL实例的内网地址。- ping <阿里云RDS MySQL实例内网地址>- 如果VM实例可以收到如下所示的回复报文,则证明阿里云VPC和Azure虚拟网络下的资源可以正常通信。  
- 获取Azure MySQL服务器的IP地址。 - 在Azure VM实例下使用 - ping命令访问Azure MySQL服务器的名称,系统会自动返回Azure MySQL服务器的IP地址,后续DTS进行数据迁移时需要使用。 
步骤五:创建DTS数据迁移任务
阿里云VPC和Azure虚拟网络之间的资源可以互相通信后,您可以开始创建DTS数据迁移任务。DTS数据迁移任务配置完成后可以将Azure MySQL服务器中的数据迁移至阿里云RDS MySQL实例中。
- 进入目标地域的迁移任务列表页面(二选一)。 - 通过DTS控制台进入- 登录数据传输服务DTS控制台。 
- 在左侧导航栏,单击数据迁移。 
- 在页面左上角,选择迁移实例所属地域。 
 - 通过DMS控制台进入说明- 实际操作可能会因DMS的模式和布局不同,而有所差异。更多信息。请参见极简模式控制台和自定义DMS界面布局与样式。 - 登录DMS数据管理服务。 
- 在顶部菜单栏中,选择。 
- 在迁移任务右侧,选择迁移实例所属地域。 
 
- 单击创建任务,进入任务配置页面。 
- 可选:在页面右上角,单击试用新版配置页。 说明- 若您已进入新版配置页(页面右上角的按钮为返回旧版配置页),则无需执行此操作。 
- 新版配置页和旧版配置页部分参数有差异,建议使用新版配置页。 
 
- 配置源库及目标库信息。 - 类别 - 配置 - 说明 - 无 - 任务名称 - DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 - 源库信息 - 数据库类型 - 选择MySQL。 - 接入方式 - 选择专线/VPN网关/智能网关。 - 实例地区 - 选择源MySQL数据库所属地域。 - 本文选择德国(法兰克福)。 - 是否跨阿里云账号 - 选择不跨账号。 - 已和源端数据库联通的VPC - 选择VPN网关实例关联的VPC实例。 - DTS将通过IPsec-VPN连接访问Azure MySQL服务器下的数据库。 - 域名或IP地址 - 输入源MySQL数据库IP地址。 - 本文输入Azure MySQL服务器的私网IP地址192.168.0.4。 - 端口 - 输入源MySQL数据库的服务端口。本文输入3306。 - 数据库账号 - 输入源MySQL数据库的账号。 - 数据库密码 - 输入该数据库账号对应的密码。 - 连接方式 - 请根据实际情况选择非加密连接或SSL安全连接。 - 若Azure MySQL服务器未开启SSL加密,请选择非加密连接。 
- 若Azure MySQL服务器已开启SSL加密,请选择SSL安全连接。同时,您还需要上传CA 证书并填写CA 密钥。 
 - 本文中Azure MySQL服务器已关闭加密连接功能,使用非加密连接。 说明- Azure MySQL服务器创建后默认使用加密连接,支持关闭加密连接。更多信息,请参见在 Azure Database for MySQL 灵活服务器实例上禁用 SSL 强制。 - 目标库信息 - 数据库类型 - 选择MySQL。 - 接入方式 - 选择云实例。 - 实例地区 - 选择阿里云RDS MySQL实例所属的地域。 - 本文选择德国(法兰克福)。 - 是否跨阿里云账号 - 选择不跨账号。 - RDS实例ID - 选择阿里云VPC下的RDS MySQL实例。 - 数据库账号 - 输入RDS MySQL实例的数据库账号。 - 数据库密码 - 输入该数据库账号对应的密码。 - 连接方式 - 本文选择非加密连接。 
- 配置完成后,单击页面下方的测试连接以进行下一步。在DTS服务器访问授权对话框,单击测试连接。 - 请确保阿里云VPC和Azure虚拟网络所应用的安全组规则允许DTS访问。例如,在安全组规则的入方向允许100.104.0.0/16网段的资源通过。关于DTS使用的地址段的更多信息,请参见添加DTS服务器的IP地址段。 - 如果系统测试阿里云VPC和Azure虚拟网络下的数据库可以正常连通,则表明数据库之间的网络连通性正常,系统会跳转至配置任务对象页面。 
- 如果系统测试阿里云VPC和Azure虚拟网络下的数据库无法正常连通,则不会跳转至下一个页面,请根据页面提示排查问题。更多信息,请参见如何解决使用VPN将数据库实例接入DTS时报错。 
 
- 在配置任务对象页面,选择迁移类型以及Azure MySQL服务器下要迁移至阿里云的数据库,其余配置项及后续配置均保持默认配置。更多信息,请参见自建MySQL迁移至RDS MySQL。  - 配置完成后,DTS会自动开始数据迁移任务,您可以登录阿里云RDS MySQL实例中,查看数据迁移结果。  
