本页介绍在具有故障切换 Cloud SQL 故障类型的实验期间会发生什么情况。
故障切换 Cloud SQL 故障的工作原理
故障切换 Cloud SQL 故障通过调用 Cloud SQL Admin API 中的 failover 方法,为 Cloud SQL 实例触发高可用性 (HA) 故障切换。此故障的目的是让您测试当主 Cloud SQL 实例转换到同一区域内另一个地区的备用实例时,服务的行为和弹性。
此故障的目标是 Cloud SQL 实例。
实验执行期间会发生什么
随着实验进入 各个状态, 所涉及的资源会发生以下变化。
资源 |
|
|
|
实例 |
无 |
提升 HA 备用实例 |
不适用 |
HA 故障切换验证和重试
Fault Injection Testing 后端会在启动故障切换之前执行验证检查,以确保环境适合。此过程发生在 INJECTING 阶段,在向 Cloud SQL 控制平面发送 sqladmin.instances.failover API 调用之前:
- 系统会检查 Cloud SQL 实例
状态是否为
RUNNABLE。如果实例在运行实验期间处于任何其他状态,Fault Injection Testing 会通知您。 - 它会验证
cloudsql.googleapis.com/database/available_for_failover指标是否为TRUE。
如果不满足这些条件,故障切换请求将排队等待重试。
处理故障
如果故障切换已在进行中或遇到错误:
- 注入期间: 如果故障切换调用被 Cloud SQL 控制平面拒绝(例如,如果备用实例运行状况不佳),实验将进入
STOPPING状态。 - 故障切换后监控: 如果故障切换操作在预定的 10 分钟内未达到
DONE状态,Fault Injection Testing 后端会查询操作错误,将实验移至STOPPING状态,并将实验标记为遇到错误。
Fault Injection Testing 依赖于 Cloud SQL 控制平面作为事实来源。如果备用实例运行状况不佳,控制平面会拒绝任何故障切换尝试。Fault Injection Testing 使用预检和状态监控来避免或报告这些故障,而不是在拒绝后尝试自动重试。
手动故障恢复
由于故障切换是一种有状态的更改,因此停止实验不会自动故障恢复到原始主实例(如 REVERTING 阶段中的“不适用”所示)。数据库将继续在辅助地区中运行。
如需在实验完成后将实例返回到其原始地区,您
必须使用 Google Cloud 控制台或
gcloud CLI 手动启动另一个故障切换。