本文档介绍了如何手动对主实例或辅助实例执行故障切换。
主实例和辅助实例的高可用性
AlloyDB for PostgreSQL 支持主实例和辅助实例的高可用性。
主实例的高可用性
为了帮助确保高可用性 (HA),每个 AlloyDB 主实例都具有位于不同可用区中的活跃节点和备用节点。如果活跃节点不可用,AlloyDB 会自动将主实例故障切换到其备用节点,使其成为新的活跃节点。
您可以随时手动将主实例故障切换到其备用节点,即使主节点正常运行也是如此。当您启动手动故障切换时,AlloyDB 会执行以下操作:
将主节点离线。
将待机节点转换为新的活动节点。
将之前的活动节点重新激活为新的待机节点。
手动故障切换会交换主实例节点的活动和备用角色。您可以随时触发手动故障切换,以便进行此交换。
例如,假设您有一个主实例,其主动节点和备用节点分别位于 us-central1-a
和 us-central1-b
可用区。us-central1-a
发生服务中断会触发自动故障切换,导致 us-central1-b
可用区托管活跃节点。如果您希望将活跃节点保留在 us-central1-a
可用区,则可以发起手动故障切换,以便 AlloyDB 将主实例节点切换回停机前的位置。
在维护操作期间,高可用性主实例和基本实例通常会经历最短的维护停机时间(不到 1 秒)。由于手动故障切换是一项有意且受控的流程,因此不适用于模拟意外的硬件或网络故障。不过,您可以使用故障注入来测试主实例的高可用性。
辅助实例的高可用性
AlloyDB 在辅助实例上提供高可用性,以支持灾难恢复,并缩短辅助实例不可用时的停机时间。
默认情况下,高可用性功能是在辅助实例上配置的。
AlloyDB 次要实例包含以下节点:
- 用于响应请求的活跃辅助节点
- 备用辅助节点
主节点和备用节点位于一个区域内的两个不同可用区中。如果 AlloyDB 检测到活动节点不可用,则活动节点会故障切换到备用节点,以充当新的活动节点。然后,系统会将您的数据重定向到新的活动节点。此过程称为故障切换failover。
准备工作
- 您使用的 Google Cloud 项目必须已启用 AlloyDB 访问权限。
- 您必须在所使用的 Google Cloud 项目中拥有以下某个 IAM 角色:
roles/alloydb.admin
(AlloyDB 管理员预定义 IAM 角色)roles/owner
(Owner 基本 IAM 角色)roles/editor
(Editor 基本 IAM 角色)
如果您不具备上述任何角色,请与您的 Organization Administrator 联系以请求访问权限。
对主实例执行手动故障切换
控制台
- 前往集群页面。
在资源名称列中,点击一个集群名称。
在集群中的实例部分,打开主实例的
“实例操作”菜单。点击故障切换。
在随即显示的对话框中,输入实例的 ID。
点击触发故障切换。
gcloud
运行 gcloud alloydb instances
failover
命令:
gcloud alloydb instances failover INSTANCE_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID
替换以下内容:
INSTANCE_ID
:实例的 ID。REGION_ID
:实例所在的区域。CLUSTER_ID
:实例所在集群的 ID。PROJECT_ID
:集群所在的项目的 ID。
如需确认故障切换是否有效,请按以下步骤操作:
在执行故障切换之前,请记下主实例节点的可用区。
运行故障切换后,请记下两个节点的新可用区。
确认主用节点和备用节点的可用区已互换。
对次要实例执行手动故障切换
手动对辅助实例执行故障切换的步骤与手动对主实例执行故障切换的步骤类似。
如需手动对辅助集群进行故障切换,请按以下步骤操作:
控制台
在 Google Cloud 控制台中,前往 Clusters 页面。
点击资源名称列中的辅助集群的名称。
在概览页面上,前往集群中的实例部分,选择辅助实例,然后点击故障转移。
在随即显示的对话框中,输入实例的 ID,然后点击触发故障切换。
gcloud
如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell。
使用 gcloud alloydb instances failover
命令强制将辅助实例故障转移到其备用实例。
gcloud alloydb instances failover SECONDARY_INSTANCE_ID \
--cluster=SECONDARY_CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_ID
替换以下内容:
SECONDARY_INSTANCE_ID
:您要进行故障转移的辅助实例的 ID。SECONDARY_CLUSTER_ID
:辅助实例关联的辅助集群的 ID。REGION_ID
:辅助实例所在区域的 ID,例如us-central1
。PROJECT_ID
:辅助集群项目的 ID。