GBase 8a
其他
文章
精选

资源计划(如day_plan和night_plan)是如何与时间规律绑定的?支持类似cron的时间表达式吗?

发表于2026-03-23 14:08:2720次浏览3个评论

GBase 8a 的资源计划(如 plan_dayplan_night)本身并不直接与时间规律绑定,也不支持类似cron的时间表达式。其与时间规律的绑定,完全依赖于外部调度系统(如操作系统的crontab)在特定时间点执行激活/停用命令

一、核心机制:外部触发,内部执行

资源计划本身只是一个“策略容器”,它需要被激活(ACTIVE) 才能生效。GBase 8a 没有内置一个定时器来自动切换计划。绑定时间规律的完整逻辑是:

 

外部定时触发器(如crontab)
        ↓ 在预设时间点执行
数据库连接与命令执行(如gccli)
        ↓ 发送SQL命令
激活/停用资源计划(ACTIVE/DEACTIVE)
        ↓
资源策略切换生效

二、标准操作流程

手动执行命令来切换计划:

  1. 激活白天计划(假设早上8:00):

     

     

    ACTIVE RESOURCE PLAN plan_day ON VC vc1;
  2. 切换到夜晚计划(假设晚上20:00):

     

    DEACTIVE RESOURCE PLAN ON VC vc1; -- 先停用当前计划
    ACTIVE RESOURCE PLAN plan_night ON VC vc1; -- 再激活夜晚计划

关键点:这些 ACTIVE/DEACTIVE 命令需要人工或外部脚本在正确的时间点触发

三、如何实现自动化定时切换(使用Crontab)

虽然资源计划不支持cron表达式,但可以通过操作系统的crontab来模拟这一功能,这是文档中暗示的标准做法。

示例:配置crontab任务实现每日自动切换

  1. 编写切换脚本(如 /home/gbase/switch_plan.sh):

     

    #!/bin/bash
    # 切换至夜晚计划脚本
    GC_CLI_PATH=/opt/gbase/bin/gccli
    VC_NAME=vc1  # 请替换为实际的VC名称
    USER=gbase
    PASSWORD='your_password'
    
    # 切换到夜晚计划
    $GC_CLI_PATH -u$USER -p$PASSWORD -e "DEACTIVE RESOURCE PLAN ON VC $VC_NAME; ACTIVE RESOURCE PLAN plan_night ON VC $VC_NAME;"
    
  2. 配置crontab定时任务(以gbase用户身份):

     

    crontab -e

    添加以下两行:

     

    # 每天上午8:00激活白天计划
    0 8 * * * /opt/gbase/bin/gccli -ugbase -p'password' -e "ACTIVE RESOURCE PLAN plan_day ON VC vc1;"
    # 每天晚上20:00激活夜晚计划(通过脚本,包含停用操作)
    0 20 * * * /home/gbase/switch_plan.sh
  3. 确保crontab服务与权限
    • 需要检查并确保DBA用户(如 gbase)有 crontab 执行权限。

       

    • 需要检查 /etc/cron.allow/etc/cron.deny 文件,确保用户未被禁止。

四、为什么不内置cron式调度?

这种“外部触发”的设计是出于架构清晰的考虑:

  1. 职责分离:数据库核心负责资源管控的执行,外部调度系统(如crontab、K8s CronJob、运维平台)负责复杂调度逻辑。这样可以利用更强大、更通用的调度工具。
  2. 灵活性:外部调度可以轻松实现基于条件判断的切换(如根据负载情况),而不仅仅是时间。
  3. 可维护性:调度策略的变更(如调整切换时间)无需修改数据库内的对象,只需调整外部脚本,降低了风险。

五、总结与建议

项目说明
资源计划本身不支持与时间直接绑定,不支持cron表达式。
绑定时间的实现方式100%依赖外部调度工具(如Linux crontab、Ansible、运维平台)定时执行 ACTIVE/DEACTIVE 命令。
操作核心在需要切换的时间点,连接数据库并执行相应的 ACTIVE RESOURCE PLAN 命令。
生产环境建议1. 使用运维平台(如GDOM)的任务调度功能企业级作业调度系统
2. 确保执行命令的用户(如 gbase)具有足够权限。
3. 在脚本中增加日志记录和错误告警,以便跟踪切换状态。

因此,要实现 day_plannight_plan 的规律性切换,您必须在数据库之外建立一个定时任务,让它像“闹钟”一样,在设定的时间点“按下”切换计划的按钮。这是GBase 8a资源管理设计中一个明确的责任边界。

评论

登录后才可以发表评论
经纬发表于 1个月前
学习了
用户头像
柒柒天晴发表于 1个月前
学习了
流泪猫猫头发表于 16小时前
学习了。