TaurusDB异构容灾实例
操作场景
TaurusDB支持异构容灾实例(MySQL节点),支持在极端场景,如社区未知BUG、用户误操作(大事务回滚)导致服务无法正常提供服务等场景,可以快速将服务切换到异构容灾实例继续提供服务。
异构容灾实例无需用户做任何操作,容灾建设和维护,切换都由华为云完成。
容灾切换原理
正常场景:
在正常运行状态下,业务系统通过读写内网地址连接到源实例TaurusDB,进行数据的读写操作。同时,通过DRS(Data Replication Service)同步链路,将源实例TaurusDB的数据实时同步到容灾实例RDS for MySQL,确保数据的一致性和高可用性。此时,容灾实例RDS for MySQL处于只读状态。
切换后场景:
当源实例TaurusDB遇到极端场景无法恢复时,经过客户授权后台人工切换读写内网地址到容灾实例,业务系统将在容灾实例RDS for MySQL进行数据的读写操作。此时,容灾实例RDS for MySQL处于读写状态,业务系统直接连接到该实例进行数据操作。同时,通过DRS反向同步链路,将容灾实例RDS for MySQL的数据同步回源实例TaurusDB,确保数据的一致性。此时,源实例TaurusDB处于只读状态。
数据迁移包含两个阶段,全量迁移和增量迁移。
全量迁移在只读节点拉取数据,会增加只读节点少量IO,对主节点不会造成压力。
增量期间在主节点拉取Binlog,对主节点的性能消耗在3%以内。
容灾切换流程
约束限制
- 存在以下场景则无法创建异构容灾实例
表1 限制条件 限制场景
原因
未开启Binlog
原实例和容灾实例之间需要使用Binlog实时同步数据。
Binlog格式不是row
可能导致容灾链路中断。
存在触发器
可能导致原实例和容灾实例之间数据不一致。
存在事件
可能导致原实例和容灾实例之间数据不一致。
库名、表名、字段名、索引等存在特殊字符
可能导致容灾链路中断。
数据量过大(超过32TB)
容灾实例的容量存在上限。
安全组限制
容灾链路无法连接数据库以同步数据。
冻结状态
冻结状态无法创建容灾实例。
VPC子网IP不足
容灾实例也会占用同子网IP。
无主键表或无索引表且存在大量操作
可能导致容灾链路中断。
外键级联操作
可能导致原实例和容灾实例之间数据不一致。
- 切换到容灾实例的影响
表2 切换影响 场景
原因
原实例只读流量过高时可能将CPU打满
容灾实例RDS for MySQL为单节点实例,原实例所有流量进入主节点会占用更多的CPU资源。
下游以Binlog位点方式的同步链路可能异常
容灾实例和源实例的Binlog位点不一样,以位点方式的同步链路在切换容灾后可能异常,需要重新配置Binlog位点或者重新进行全量同步。