ProxySQL官檔翻譯__07_ProxySQL配置之調度

07_ProxySQL配置之調度

備註:文章編寫時間201904-201905期間,後續官方在github的更新沒有被寫入
~
~

一、調度[Scheduler]

調度程序是v1.2.0中引入的功能。

Scheduler是一種類似於cron的實現,集成在ProxySQL內,具有毫秒級的粒度。

當前僅通過Admin interface界面進行配置,尚不支持在配置文件中配置。

二、動機[Motivation]

Scheduler允許ProxySQL定期運行用戶自定義的腳本以實現多種用途。

三、應用設置[Implementation]

當前的應用實現依賴2個表:

Admin> SHOW TABLES LIKE '%scheduler%';
+-------------------+
| tables            |
+-------------------+
| scheduler         |
| runtime_scheduler |
+-------------------+
2 rows in set (0.00 sec)

詳細信息:
1)scheduler表是配置調度程序的地方;
2)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 ==>調度程序作業的唯一標識符;
active ==>如果設置爲1,則作業處於活動狀態;否則不是。
interval_ms ==>工作開始的頻率(以毫秒爲單位)。最小interval_ms是100毫秒;
filename ==>要執行的可執行文件的完整路徑;
arg1 to arg5==>可以傳遞給作業的參數(最多5個);
comment ==>一個自由格式文本字段,用於註釋作業的目的;

僅供參考,表runtime_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層才能生效,以及保存到磁盤以保持持久性。
因此,ProxySQL具有支持Scheduler的新命令:

LOAD SCHEDULER TO RUNTIME 和 LOAD SCHEDULER FROM MEMORY
:將scheduler表配置從MEMORY層加載到RUNTIME層時,並生效;

LOAD SCHEDULER TO MEMORY 和 LOAD SCHEDULER FROM DISK 
:將scheduler表配置從DISK層加載到MEMORY層的scheduler表;

SAVE SCHEDULER FROM RUNTIME 和 SAVE SCHEDULER TO MEMORY 
:將scheduler表配置從RUNTIME層保存到MEMORY層的scheduler表;

SAVE SCHEDULER FROM MEMORY 和 SAVE SCHEDULER TO DISK 
: 將scheduler表配置從MEMORY層保存到DISK層scheduler表,並在重新啓動時保持持久性。

調度程序會調用fork()然後執行execve()。如果execve()執行失敗,則會將錯誤報告給錯誤日誌。

完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章