当加入到数据库代理中的实例因异常导致无法使用时,数据库代理将通过实例故障转发策略将 SQL 转发到其他实例执行,或者丢弃 SQL 并输出报错信息。本文为您介绍实例故障转发策略的设置和原理。
背景信息
数据库实例在实际运行过程中可能会遇到各类意外导致的实例不可用,例如:服务器断电、重启、网络中断等。TDSQL-C MySQL 版数据库代理提供实例故障转发能力,避免在实例出现异常时,用户的 SQL 执行出错导致业务不可使用的情况发生。
前提条件
转发策略
当前数据库代理支持的实例故障转发策略如下:
当只读实例与读写实例出现故障时,数据库代理会默认将 SELECT 执行语句发送至正常的实例中执行。
当读写实例出现故障时,数据库代理会将 DML 或 DDL 语句执行报错。
当数据库代理下的只读分析引擎出现故障时,数据库代理会将 SQL 转发至其他正常的只读分析引擎中执行。
当数据库代理下的所有只读分析引擎出现故障时,系统将会返回执行报错。提示“no backend server”的报错信息。
注意:
以上实例故障转发策略暂时不支持修改。只读实例与读写实例故障转发默认为打开状态,只读分析引擎故障转发默认为关闭状态。
操作步骤
1. 登录 TDSQL-C MySQL 版控制台,在集群列表,选择已开启数据库代理的集群,单击集群 ID,进入集群管理页面。
2. 在集群管理 > 集群详情下的拓扑图中,鼠标移动到数据库代理板块,然后单击详情进入数据库代理管理页面。或在集群管理页面直接选择数据库代理页签进入数据库代理管理页面。
3. 在数据库代理管理页选择概览,在连接地址下找到需要修改的访问地址,在其操作列中单击调整配置,进入到调整配置页面,即可查看不同类型的实例故障转发策略。

4. 开启故障转移后,当只读实例出现故障时,本应该转发到只读实例的 SQL 会默认往读写实例中进行转发。开启分析引擎故障转发后,当只读分析引擎出现故障时,会默认优先往正常运行的只读分析引擎转发,其次往只读实例转发,此时若只读实例也出现了故障,则会默认往读写实例进行转发。
注意:
仅在1.4.5的数据库代理版本中才支持开启分析引擎故障转发功能。