【标题】dorado双集群,实现集群间failover

【实现内容】: 实现dorado双集群可进行集群间手动触发failover,将备集群升为主集群

【根因分析】: Failover现有流程中,当接收到failvoer触发信号后,会将walrec线程关闭,然后一直循环继续等待walreceiver拉起,不会正常退出。本次修改是在接收到信号后,复用原有failover逻辑,判断没有walreceiver线程,并且redo已经做完后,触发recovery_trigger,强制退出readxlog的循环,执行后续流程;另外收到failover信号时,将集群状态参数cluster_run_mode置为primary,不再拉起WalReceiver线程,使后续流程都以主集群逻辑进行。

【实现方案】:
1、将cluster_run_mode参数从guc设置改为启动参数传入
2、接收到promoting信号后,关闭walreceiver等线程,等待redo完成,修改cluster_run_mode状态,退出startupxlog,重新以主集群模式启动

【关联需求或issue】:【资源池化】主备双集群中,备集群failover流程优化
https://e.gitee.com/opengaussorg/issues/table?issue=I7ILZA

【开发自验报告】:

  1. 请附上自验结果(内容或者截图)
  2. 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
    不涉及
  3. 是否涉及资料修改,如是,在docs仓库补充资料
  4. 是否考虑升级场景(系统表修改、日志持久化以及修改执行态数据格式)
    不涉及
  5. 是否考虑在线扩容等扩展场景
    不涉及
  6. 是否考虑异常场景/并发场景/前向兼容/性能场景
    不涉及
  7. 是否对其他模块产生影响

【其他说明】: