本文档介绍了如何手动对主实例或次要实例进行故障切换。
主实例和次要实例上的高可用性
AlloyDB for PostgreSQL 支持在主实例和次要实例上提供高可用性。
主实例上的高可用性
为了帮助确保高可用性 (HA),每个 AlloyDB 主实例都具有活跃节点和备用节点,它们位于不同的可用区中。如果活跃节点变得不可用,AlloyDB 会自动将主实例故障切换到备用节点,使其成为新的活跃节点。
您可以随时手动将主实例故障切换到备用节点,即使活跃节点按预期正常运行也是如此。当您启动手动故障切换时,AlloyDB 会执行以下操作:
使主节点离线。
将备用节点转变为新的活跃节点。
重新激活之前的活跃节点作为新的备用节点。
手动故障切换会交换主实例节点的活跃和备用角色。您可以在希望进行交换时随时触发手动故障切换。
例如,假设您有一个主实例,其活跃节点和备用节点分别位于 us-central1-a
和 us-central1-b
可用区。us-central1-a
发生服务中断会触发自动故障切换,导致 us-central1-b
可用区托管活跃节点。如果您希望将活跃节点保留在 us-central1-a
可用区,则可以启动手动故障切换,以使 AlloyDB 将主实例节点切换回发生服务中断前的位置。
在维护操作期间,高可用性主实例和基本实例通常会经历少于一秒的最短维护停机时间。由于手动故障切换是一种有意控制的流程,因此不适用于模拟意外的硬件或网络故障。但是,您可以使用故障注入来测试主实例的高可用性。
次要实例上的高可用性
AlloyDB 在次要实例上提供高可用性 (HA),以支持灾难恢复,并在次要实例不可用时缩短停机时间。
默认情况下,次要实例上会配置高可用性。
AlloyDB 次要实例包含以下节点:
- 活跃次要节点,用于响应请求
- 备用次要节点
活跃节点和备用节点位于一个区域内的两个不同可用区中。如果 AlloyDB 检测到活跃节点不可用,活跃节点会故障切换到备用节点作为新的活跃节点。然后,您的数据会被重新路由到新的活跃节点。此过程称为故障切换。
准备工作
- 您使用的 Google Cloud 项目必须已启用才能访问 AlloyDB。
- 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
roles/alloydb.admin
(AlloyDB Admin 预定义 IAM 角色)roles/owner
(Owner 基本 IAM 角色)roles/editor
(Editor 基本 IAM 角色)
如果您没有上述任何角色,请与组织管理员联系以申请访问权限。
对主实例执行手动故障切换
控制台
- 前往集群页面。
在资源名称列中,点击相应集群名称。
在集群中的实例部分,打开主实例的
实例操作菜单。点击故障切换。
在显示的对话框中,输入实例的 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 控制台中,前往集群页面。
在资源名称列中,点击相应次要集群的名称。
在概览页面上,前往集群中的实例部分,选择次要实例,然后点击故障切换。
在显示的对话框中,输入实例的 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。