[英]Redirect old RDS traffic to the new RDS in AWS
旧数据库端点: old.cy336nc8sq5l.us-east-1.rds.amazonaws.com
新数据库端点: new.cy336nc8sq5l.us-east-1.rds.amazonaws.com
以上端点由 AWS 在创建 RDS 实例时自动创建
我已经尝试为old.cy336nc8sq5l.us-east-1.rds.amazonaws.com
设置 CNAME,值为new.cy336nc8sq5l.us-east-1.rds.amazonaws.com
但我没有用。在route53
名称cy336nc8sq5l.us-east-1.rds.amazonaws.com
中创建一个新的托管区域
但是,如果在其他托管区域中为任何 url(如 abc.example.com)设置 CNAME,其值为new.cy336nc8sq5l.us-east-1.rds.amazonaws.com
工作旧的 rds url 已在多个应用程序中使用我不能冒险完全放弃,最好的方法是使用某种重定向。
除此之外, cy336nc8sq5l.us-east-1.rds.amazonaws.com
托管区域下的任何 CNAME 都不起作用。
我怎样才能解决这个问题? 还请建议重定向rds流量的最佳做法是什么? 我知道对于新的数据库端点,我将创建一个新的自定义 CNAME,并将继续使用它,而不是仅使用默认的 CNAME。 欢迎所有建议:)
您不能为域cy336nc8sq5l.us-east-1.rds.amazonaws.com添加任何记录,因为您无法控制它,通常您将能够创建任何托管区域,例如google.com等,但它不会除非您将原始 DNS 提供程序的 NS 记录和 SOA 记录更改为指向您的记录,否则不会得到反映,您不能使用 aws rds 域。 你可以通过做确认它
dig +short -t ns cy336nc8sq5l.us-east-1.rds.amazonaws.com
如果上述结果返回您的 NS 记录,则您控制该域。
为了将来具有这种灵活性,我建议一种创建一个私人区域的方法当您想切换到另一个端点时,只需在 route53 中切换它,在 TTL 过期后,连接将开始进入新端点,因为您正在进行更改,最好开始使用这种方式。
同样对于您的情况,在切换到新端点后,您可以检查旧数据库中的连接数,以了解它是否在某处被引用并运行show processlist;
,您将能够知道它正在使用哪个 IP。
底线是您必须更新所有 30 个应用程序才能使用新的数据库端点。 如果您要定期删除数据库并像这样重新创建它们,那么将您的数据库配置为使用您控制的区域中的名称,并为当前的任何数据库端点创建一个 CNAME。
您可以通过向 /etc/hosts 添加一个条目来创建一个临时解决方案(假设您的客户端正在运行 linux - 我相信这在 Windows 上也是可能的,但已经很长时间了)映射当前 ZA12A3079E14CED46E69AZ2BBA52旧主机名的新数据库。 但这可能与更新应用程序以使用新数据库一样多。 如果您正在运行多可用区数据库并发生故障转移事件,它也会失败。
更改您的DB identifier
可以在某种程度上有所帮助。
Select 您的集群 -> Modify
-> 更改DB cluster identifier
您将使用不同的端点保留旧数据库,然后将新数据库更改为新端点。
但我喜欢/etc/hosts
解决方案简单而安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.