作者:易云服ezmsp公有云架构师雷凯栋
通常在云上为了我们数据库的高可用性,我们通常都会在数据库集群中搭建主从以及灾备等实例配置。当故障发生时,这个过程中是否会影响我们正在运行等业务状态,以及我们数据库的正常写入、读取。我们通过测试来看下AWS RDS for Mysql 故障切换过程中,影响的写入以及读取的时间是多少。
整体架构
AWS RDS Aurora For Mysql 集群。启用两台数据库实例一台为写入实例,另一台为读取实例。写入实例为Master,读取实例为Slave。
技术简介
在数据库任务持续写入/读取的情况下执行AWS RDS的故障转移功能,通过脚本模拟持续写入/读取的场景,从输出结果观察故障切换的中断时间。
准备工作
AWS RDS For Mysql 集群 (其中一台写入实例,一台读取实例。)
以及一台EC2(跟数据库在同一VPC内,用来连接数据库集群做相关测试。)
实施步骤
1.登陆EC2 连接数据库集群写实例,并且创建数据库 test,并且创建表student。
2.执行脚本,每秒插入一条数据。然后执行数据库故障切换。
故障切换:
观察输出结果:
3.修改脚本为每秒查询一次,并且每秒输出当前时间。 相同方法对数据库集群实例执行故障切换操作。 观察输出结果:
验证
根据输出结果看出,在AWS RDS集群模拟故障切换时,写入实例以及只读实例都会发生中断。从测试结果来看,写入实例会中断8秒左右,然后重新恢复工作。读取实例中断5秒左右之后恢复工作。
常见问题
- 在使用AWS RDS测试前确认,当发生故障切换时,集群的主实例以及只读实例的节点域名不会发生变化,但是实例本身的域名发生了变化。所以要选择连接集群的终端节点。