博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ProxySQL Scheduler
阅读量:5248 次
发布时间:2019-06-14

本文共 2583 字,大约阅读时间需要 8 分钟。

Scheduler

scheduler特性是在ProxySQL v1.2.0引入的。

scheduler是一个类似cron的调度器,已经被集成到ProxySQL中了,粒度可以达到毫秒级。通过admin即可配置:目前不支持配置文件配置,将来也没这个打算

Motivation

scheduler可以以规定的间隔执行你自定义的脚本,其主要目的是这个脚本能够监控到外部异常事件的发生从而能够重新配置ProxySQL

Implementation

通过两个表来实现这个功能

1 Admin> SHOW TABLES LIKE '%scheduler%';2 +-------------------+3 | tables            |4 +-------------------+5 | scheduler         |6 | runtime_scheduler |7 +-------------------+8 2 rows in set (0.00 sec)
View Code

具体细节:

  • 通过scheduler表配置调度器
  • runtime_scheduler表示调度器在runtime状态的表现形式

scheduler表结构:

1 Admin> SHOW CREATE TABLE scheduler\G 2 *************************** 1. row *************************** 3        table: scheduler 4 Create Table: CREATE TABLE scheduler ( 5     id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 6     active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1, 7     interval_ms INTEGER CHECK (interval_ms>=100 AND interval_ms<=100000000) NOT NULL, 8     filename VARCHAR NOT NULL, 9     arg1 VARCHAR,10     arg2 VARCHAR,11     arg3 VARCHAR,12     arg4 VARCHAR,13     arg5 VARCHAR,14     comment VARCHAR NOT NULL DEFAULT '')15 1 row in set (0.00 sec)
View Code

字段描述:

  • id:调度器唯一标识
  • active:如果是1,那么调度器是生效的,否则不生效
  • interval_ms:间隔多少毫秒执行。最小值是100毫秒
  • filename:可执行文件全路径
  • arg1~arg5:传递到job的参数,最多5个
  • comment:解释job功能的comment

runtime_scheduler有着相同的表结构:

1 Admin> SHOW CREATE TABLE runtime_scheduler\G 2 *************************** 1. row *************************** 3        table: runtime_scheduler 4 Create Table: CREATE TABLE runtime_scheduler ( 5     id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 6     active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1, 7     interval_ms INTEGER CHECK (interval_ms>=100 AND interval_ms<=100000000) NOT NULL, 8     filename VARCHAR NOT NULL, 9     arg1 VARCHAR,10     arg2 VARCHAR,11     arg3 VARCHAR,12     arg4 VARCHAR,13     arg5 VARCHAR,14     comment VARCHAR NOT NULL DEFAULT '')15 1 row in set (0.00 sec)
View Code

至于其他的配置表,配置后都需要load到runtime或者持久化到磁盘,所以针对schedule也有一些新命令:

  • LOAD SCHEDULER TO RUNTIME 或者 LOAD SCHEDULER FROM MEMORY : load the configuration from main.scheduler to runtime, and becomes effective;
  • LOAD SCHEDULER TO MEMORY 或者 LOAD SCHEDULER FROM DISK :load the configuration from disk.scheduler to main.scheduler;
  • SAVE SCHEDULER FROM RUNTIME 或者 SAVE SCHEDULER TO MEMORY : save the configuration from runtime to main.scheduler;
  • SAVE SCHEDULER FROM MEMORY 或者SAVE SCHEDULER TO DISK :save the configuration from main.scheduler to disk.scheduler, and becomes persistent across restart.

调度器是通过调用fork(),然后调用execve()来实现的,如果执行execve()失败,错误日志将会记录到error log中。

转载于:https://www.cnblogs.com/geek-ace/p/9567311.html

你可能感兴趣的文章
设计模式—适配器模式
查看>>
关于ORALE将多行数据合并成为一行 报错未找到where关键字
查看>>
数据库建立索引加快查询
查看>>
[codevs 2235]机票打折
查看>>
微信智能开放平台
查看>>
C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
子网划分讲解及练习(一)
查看>>
Python 装饰器
查看>>
c# 文件笔记
查看>>
Vue 自定义指令
查看>>
帆软 控件内容 清除
查看>>
第一页 - 工具的使用(webstorm)
查看>>
.net static 变量
查看>>
The Number of set-hdu-3006
查看>>
[设计模式]适配器模式与外观模式
查看>>
自定义分页控件,修改自AspNetForums.Controls.Pager
查看>>
ssh 免签登录 亲测可以
查看>>
Decode Ways
查看>>