ProxySQL 定时调度
转载自:https://www.jianshu.com/p/410ff5897c27
Scheduler是 v1.2.0 引入的特性。
ProxySQL的Scheduler是一个类似于定时任务系统(cron-like)的实现,粒度可精细到毫秒级。只能在Admin管理接口对Scheduler进行配置:暂时不支持在配置文件中进行配置。
为什么加入Scheduler特性
Scheduler允许ProxySQL以一定的时间间隔运行自定义的脚本,可用于多种目的。主要动机是在此类脚本探测到某些外部事件时对ProxySQL进行重新配置。
Implementation
当前Scheduler通过两个表来实现调度功能:
Admin> SHOW TABLES LIKE '%scheduler%';
+-------------------+
| tables |
+-------------------+
| scheduler |
| runtime_scheduler |
+-------------------+
2 rows in set (0.00 sec)
详细一点的描述:
scheduler表是配置scheduler的地方。
runtime_scheduler表(只读)是runtime时scheduler的实际表示。
(译注:scheduler表用于配置,runtime_scheduler存放的是正在运行或等待运行的定时调度任务)
scheduler表的结构如下:
Admin> SHOW CREATE TABLE scheduler\G
*************************** 1. row ***************************
table: scheduler
Create Table: CREATE TABLE scheduler (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1,
interval_ms INTEGER CHECK (interval_ms>=100 AND interval_ms<=100000000) NOT NULL,
filename VARCHAR NOT NULL,
arg1 VARCHAR,
arg2 VARCHAR,
arg3 VARCHAR,
arg4 VARCHAR,
arg5 VARCHAR,
comment VARCHAR NOT NULL DEFAULT '')
1 row in set (0.00 sec)
每个字段的详细解释如下:
id:scheduler任务的唯一标识id。
active:如果设置为1,则表示该调度任务是激活的,否则该调度任务是未激活的,不会加载到runtime去运行。
interval_ms:调度任务的调度时间间隔(单位毫秒),允许的最小时间间隔为100毫秒。
filename:待执行脚本的绝对路径。
arg1 到 arg5:传递给任务脚本的参数,最多允许传递5个参数。
comment:用于说明这个调度任务是干嘛的,可随意写。
runtime_scheduler的表结构和scheduler表的结构相同:
Admin> SHOW CREATE TABLE runtime_scheduler\G
*************************** 1. row ***************************
table: runtime_scheduler
Create Table: CREATE TABLE runtime_scheduler (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1,
interval_ms INTEGER CHECK (interval_ms>=100 AND interval_ms<=100000000) NOT NULL,
filename VARCHAR NOT NULL,
arg1 VARCHAR,
arg2 VARCHAR,
arg3 VARCHAR,
arg4 VARCHAR,
arg5 VARCHAR,
comment VARCHAR NOT NULL DEFAULT '')
1 row in set (0.00 sec)
ProxySQL中的其它配置表,在修改了配置后都需要将它们加载到runtime使其生效,保存到disk使配置持久化。
基于此,ProxySQL为了支持scheduler也能实现这些功能,特地添加了几个新的命令:
LOAD SCHEDULER TO RUNTIME和LOAD SCHEDULER FROM MEMORY:加载内存数据库中的main.scheduler表到runtime的数据结构中,也就是说让配置立即生效;
LOAD SCHEDULER TO MEMORY和LOAD SCHEDULER FROM DISK:将磁盘数据库中的disk.scheduler表加载到内存数据库中的main.scheduler表;
SAVE SCHEDULER FROM RUNTIME和SAVE SCHEDULER TO MEMORY:将runtime数据结构中的scheduler持久化到内存数据库中的main.scheduler表中;
SAVE SCHEDULER FROM MEMORY和SAVE SCHEDULER TO DISK:将内存数据库中的main.scheduler表持久化到磁盘数据库中的disk.scheduler表中。
scheduler是通过调用fock()然后execve()实现的。如果execve()失败,将会向错误日志中报告该错误。
ProxySQL 定时调度的更多相关文章
- Quartz定时调度框架
Quartz定时调度框架CronTrigger时间配置格式说明 CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年 ...
- Spring Quartz定时调度任务配置
applicationContext-quartz.xml定时调度任务启动代码: <?xml version="1.0" encoding="UTF-8" ...
- 定时调度框架Quartz随笔
最近项目中的定时批处理用到了quartz定时任务,在此记录下quartz的配置吧,一个小demo仅供参考,也方便自己今后复习! 下面直接来步骤吧! 一.首先,要搭起能让quartz正常运行的环境,至少 ...
- crontab 定时调度
crontab -e */1 8-23 * * * /www/target/sh/myorder.sh & 0 1 * * * /www/target/php/sh/mymoney.sh &a ...
- java 多线程——quartz 定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java 多线程——一个定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- linux定时调度器每秒运行一次
linux操作系统最小粒度的定时调度器仅仅能调到分钟的级别,工作中有时需在到秒的调度,所以须要自己编写脚本来实现 #!/bin/bash while [ true ]; do /bin/sleep 1 ...
- Spring中实现定时调度
1, 内容简介 所谓的定时调度,是指在无人值守的时候系统可以在某一时刻执行某些特定的功能采用的一种机制,对于传统的开发而言,定时调度的操作分为两种形式: 定时触发:到某一时间点上执行某些处理操作: ...
- springmvc+quartz简单实现定时调度
一.简介:Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十 ...
随机推荐
- 【小程序自动化Minium】三、元素定位- WXSS 选择器的使用
最近更新略疲,主要是业余时间多了几个变化.比如忙活自己的模拟赛车驾舱升级.还跟朋友筹备一个小程序项目.另外早上的时间留给背单词了... 上一章中讲到Page接口的get_element()与get_e ...
- Josephus问题(Ⅰ)
题目描述 n个人排成一圈,按顺时针方向依次编号1,2,3-n.从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子.这样不断循环下去,圈子里的人将不断减少.最终一定会剩下一个人 ...
- javascript的原型链那些事
如果你对javascript的原型链还有任何疑问,请看这篇文章 进入主题 前言 原型链的规则不百分百适用于所有情况 显式原型:prototype,是一个对象{} 隐式原型:__proto__,是一个对 ...
- 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)
现而今,我们纵向的回顾整个大前端的历史,不难发现,人们对前端的审美要求越来越高,越来越严苛,与此同时,人们对追求美的体验是也极致的,从理性到感性,从平面到几何,从现实到虚拟,所以从某种角度来说,作为前 ...
- GP查询表状态常用SQL
- 函数,递归以及dom简单操作
函数 函数概述 函数就是具备某个功能的一个工具.是完成某个功能的一段代码. 系统提供了很多函数,但是并不能包含所有的功能,所以有些功能需要我们自己来写----自定义函数.函数定义好以后,就可以像系统函 ...
- 清理忽略springboot控制台启动的banner和启动日志
清理忽略springboot控制台启动的banner和启动日志 1.springboot的banner spring: main: banner-mode: off 2.mybatis-plus的ba ...
- DolphinScheduler 功能开发:⼯作流级别任务空跑(后端),测试工作流是否正确执行...
点击上方 蓝字关注我们 ✎ 编 者 按 在今年由中国科学院软件研究所主办的开源软件所供应链点亮计划-开源之夏活动中,有不少小伙伴提交了关于 DolphinScheduler 的项目,本期是来自成都信息 ...
- Luogu1993 小K的农场 (差分约束)
\(if \ a - b <= c, AddEdge(b, a, c)\) Be careful, MLE is not good. #include <cstdio> #inclu ...
- mongo数据库-mongo角色权限
Built-In Roles(内置角色): 1. 数据库用户角色:read.readWrite; 2. 数据库管理角色:dbAdmin.dbOwner.userAdmin: 3. 集群管理角色:clu ...