我的问题分为两部分:
关于第(1)部分:如果我理解正确,所有实例修改都在备用数据库上进行,然后AWS通过在主服务器更新时将CNAME翻转到备用数据库进行故障转移,因此如果我要进行任何操作一种实例修改并选择"立即申请,"它应该导致故障转移,对吗?
关于第(2)部分:我正在寻找一种监视Oracle RDS实例故障转移的方法,无论是通过lambda函数,bash脚本还是其他方法。据我所知,即使我通过安全组允许所有ICMP流量,也不可能对RDS使用ping。我可以使用telnet或SQL客户端毫无困难地连接。我想要的是做某些事情喜欢在故障转移期间定期ping数据库以查看与连接字符串关联的IP何时切换以及需要多长时间。有什么建议吗?
答案 0 :(得分:2)
多可用区部署的可用性优势也扩展到 计划维护和备份。在系统升级的情况下 操作系统修补或数据库实例扩展,首先应用这些操作 在备用数据库上,在自动故障转移之前。结果,你的 可用性影响再次只是自动化所需的时间 故障转移完成。
要模拟故障转移,只需在重新启动时documentation,而不是重启两者。来自链接文档:
当您想要模拟故障时,使用故障转移重新启动是有益的 用于测试或恢复对原始AZ的操作的数据库实例 发生故障转移后。
其他资源:
答案 1 :(得分:0)
更新:
我最终使用了一个简单的bash脚本:
date; while true; date; do nc -vz DBNAME.REGION.rds.amazonaws.com PORT; sleep 1; done
注意:以上内容适用于netcat-openbsd
。如果使用netcat-traditional
,您需要修改此内容。
每秒轮询数据库以查看它是否仍然可以连接。通常,当我运行此命令然后通过故障转移启动重新启动时,连接将在故障转移期间简单地悬挂,然后在故障转移完成并且恢复连接时显示超时错误,可能是因为故障转移通常需要比重新启动更长的时间。如果重新启动的时间比故障转移花费的时间长,则可能会有一段时间在重新启动完成时拒绝连接。无论如何,使用这种方法,我能够获得2:08的一致故障转移时间。
但是,与我原先认为的不同,大多数实例修改根本不涉及故障转移。我已经测试了调整实例的大小以及更改选项组和参数组,并且没有遇到任何停机时间。更改数据库引擎确实会导致故障转移。