切换 PostgreSQL 集群
您可以通过执行命令切换 PostgreSQL 主备版。切换后,KubeBlocks 将修改实例角色。
开始之前
确保集群正常运行。
检查以下角色探针参数是否存在,确认是否已启用探针。
kubectl get cd postgresql -o yaml
>
probes:
roleProbe:
failureThreshold: 2
periodSeconds: 1
timeoutSeconds: 1
切换集群
将 PostgreSQL 主备版的从节点切换为主节点,原来的主节点实例将被切换为从节点实例。
- kbcli
- kubectl
不指定主节点实例进行切换。
kbcli cluster promote mycluster -n demo
指定一个新的主节点实例进行切换。
kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2'
如果有多个组件,可以使用
--components
参数指定一个组件。kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2' --components='postgresql'
instanceName
字段的值定义了本次切换是否指定了新的主节点实例。
不指定主节点实例进行切换。
kubectl apply -f -<<EOF
apiVersion: apps.kubeblocks.io/v1alpha1
kind: OpsRequest
metadata:
name: mycluster-switchover
namespace: demo
spec:
clusterName: mycluster
type: Switchover
switchover:
- componentName: postgresql
instanceName: '*'
>>指定一个新的主节点实例进行切换。
kubectl apply -f -<<EOF
apiVersion: apps.kubeblocks.io/v1alpha1
kind: OpsRequest
metadata:
name: mycluster-switchover
namespace: demo
spec:
clusterName: mycluster
type: Switchover
switchover:
- componentName: postgresql
instanceName: 'mycluster-postgresql-2'
>>
验证集群切换
检查实例状态,验证切换是否成功。
- kbcli
- kubectl
kbcli cluster list-instances -n demo
kubectl get cluster mycluster -n demo
kubectl -n demo get po -L kubeblocks.io/role
处理异常情况
如果报错,请参考异常处理排查问题。