高可用性配置的目的是在数据库集群实例不可用时减少停机时间。当实例内存不足时,可能会发生这种情况。借助高可用性,您的数据可以继续供客户端应用使用。
在网站中,该配置由主实例和备用副本组成。在事务被报告为已提交之前,对主实例执行的所有写入操作都会复制到备用副本。如果实例发生故障,您可以请求将备用副本提升为新的主实例。 然后,应用流量会被重新路由到新的主实例。此过程称为故障切换。
您可以随时手动触发故障切换。故障切换涉及以下流程(按顺序列出):
GDC 使主实例离线。
GDC 将备用副本转变为新的活跃数据库集群。
GDC 会删除之前的活跃数据库集群。
GDC 会创建新的备用副本。
更新现有集群
您可以更新现有数据库集群的高可用性设置:
控制台
在导航菜单中,选择数据库服务。
在数据库集群列表中,点击要更新的数据库集群。
在高可用性部分中,依次选择修改 修改。

选择启用同一可用区中的备用实例,以开启或关闭与主数据库集群位于同一可用区中的备用实例的可用性。
点击保存。
查看数据库集群列表的高可用性列中的状态,验证数据库集群是否反映了您的高可用性更新。
gdcloud
更新数据库集群的高可用性配置:
gdcloud database clusters update CLUSTER_NAME \ --availability-type HA_TYPE替换以下内容:
CLUSTER_NAME:数据库集群的名称。HA_TYPE:数据库集群的高可用性级别。您可以设置zonal或zonal_ha。默认情况下,系统会设置zonal值。
验证数据库集群是否反映了高可用性更新:
gdcloud database clusters list
API
更新数据库集群的高可用性配置:
kubectl patch dbcluster.postgresql.dbadmin.gdc.goog DBCLUSTER_NAME \ -n USER_PROJECT \ -p '{"spec": {"availability": {"enableHighAvailability": HA_ENABLED}}}' \ --type=merge执行以下变量替换操作:
DBCLUSTER_NAME:数据库集群的名称。USER_PROJECT:创建数据库集群的用户项目的名称。HA_ENABLED:数据库集群的高可用性级别。您可以设置true或false。默认情况下,系统会设置false值。
验证数据库集群是否反映了高可用性更新:
kubectl get dbcluster.DBENGINE_NAME.dbadmin.gdc.goog DBCLUSTER_NAME \ -n USER_PROJECT \ -o yaml
迁移到最新的高可用性实现
如需验证高可用性数据库集群是否使用最新实现,请检查高可用性数据库集群 CR 上是否存在注解 dbcluster.dbadmin.goog/raasEnabled。此注解仅会显示在使用新实现的集群上。如果您没有此注解,可以按照以下步骤启用此注解并迁移集群:
- 请咨询您的基础设施运维人员,确保您的 GDC 环境已升级到 1.15.1 版或更高版本。
- 为数据库集群停用高可用性。等待
HAReady状况消失,然后重新启用高可用性。 - 看到
HAReady in progress或HAReady setup complete后,检查数据库集群 CR 中是否存在注解dbcluster.dbadmin.goog/raasEnabled。如果显示该图标,则表示数据库集群已成功迁移。
触发故障切换
如果您已为数据库集群配置高可用性,则可以触发故障切换。如需触发故障切换,请完成以下步骤:
控制台
在导航菜单中,选择数据库服务。
在数据库集群列表中,点击要触发故障切换的数据库集群。数据库集群必须启用高可用性才能符合故障切换条件。
点击故障切换。
输入集群的 ID 作为确认短语,然后点击故障切换以触发故障切换流程。
gdcloud
触发数据库集群的故障切换:
gdcloud database clusters failover CLUSTER_NAME将
CLUSTER_NAME替换为数据库集群的名称。
API
apiVersion: fleet.dbadmin.gdc.goog/v1
kind: Failover
metadata:
name: FAILOVER_NAME
spec:
dbclusterRef: DBCLUSTER_NAME
执行以下变量替换操作:
DBCLUSTER_NAME,数据库集群的名称。FAILOVER_NAME,故障切换的唯一名称,例如failover-sample。