场景描述
企业上云最大的难点在于业务数据库迁移,很多企业在上云前,数据库域名或IP往往是已被写入应用客户端代码中,当从本地构建的数据库迁移到RDS时,需要用户修改客户端代码进行应用改造,此过程复杂,且风险高。
解决方案
通过内网DNS解析创建一个与之前相同的数据库域名,然后通过CNAME记录指向RDS分配的系统内网域名,这样在数据库上云过程中,企业用户无需修改客户端代码,能够减少应用改造,降低迁移风险。
资源准备
在进行操作前,请先按照以下列表进行资源准备。
资源 | 数量 | 示例值 |
线下数据库连接域名 | 1 | db.example.com |
Ecs服务器 | 1&more | 1.1.XX.XX、2.2.XX.XX |
RDS数据库实例 | 1 | rm-2ze44q293vs56l9po*****.mysql.rds.aliyuncs.com |
操作步骤
服务开通
登录云解析DNS产品控制台。
前往页面,并单击 立即开通,具体步骤请参考开通内网DNS解析。
添加内置权威域名及解析记录
前往RDS管理控制台,单击左侧导航栏的 实例列表,在实例列表页面单击 实例ID/名称 下的实例ID。
左侧导航栏选择 数据库连接,然后复制 内网地址 后方的域名。
前往云解析DNS产品控制台,在左侧导航栏单击 内网DNS解析(PrivateZone),在 内网DNS解析 页面右上方选择 管理配置模式,然后选择 内置权威 页面下的 用户域名 页签。
单击 添加域名(Zone) 按钮,在 添加内置权威域名(Zone) 对话框中输入域名,本示例输入 db.example.com,域名类型根据您的实际需求选择,推荐选择 内置权威加速区, 然后单击 确定。
在 用户域名 页面,单击目标域名 db.example.com 操作 列的 解析记录 按钮。
在 解析记录 页面单击 添加记录,记录类型:CNAME,主机记录:@,解析请求来源:默认,记录值:rm-2ze44q293vs56l9po*****.mysql.rds.aliyuncs.com(此域名为测试域名,您根据实际情况将数据库的内网地址粘贴进去),完成上述参数填写后单击 确定。
返回 用户域名 页面,单击目标域名 db.example.com 操作 列的 生效范围设置,在 域名设置 页面设置 域名生效范围,需要关联数据库所在VPC。
效果测试
登录域名生效VPC网络内的ECS服务器,进行解析生效测试,返回如下图即为成功。若返回结果异常,请排查解析记录是否正确配置。
dig db.example.com
RDS连接测试:登录域名生效VPC网络内的ECS服务器,进行远程命令测试,返回如下图即为成功。
mysql -utest_dns -ptest_dns -hdb.example.com -P3306 -Dtest_dns
三、常见错误
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘db.example.com’(110)请检查数据库白名单设置,将ECS的IP加入白名单中。