點(diǎn)擊上方藍(lán)字,關(guān)注了解我們~
為何不用PGAgent,而用pg_cron?
PGAgent功能確實(shí)不錯(cuò),但是需要的依賴太多了,需要先裝PGadmin以及一大堆的依賴包,這導(dǎo)致使用起來非常不方面,很不友好。而pg_cron相對而言簡單了很多,只需要編譯和修改三兩個(gè)參數(shù)就可以了。
pg_cron用法
2.1安裝
就和我們平常裝插件一樣三步走,解壓,編譯,安裝
$unzip pg_cron-main.zip
$cd pg_cron-main
$make $ make install
友情提示:如果多個(gè)pg,需要先刷新pg的環(huán)境變量,再進(jìn)行編譯,否則后果。。。
通常裝完插件,還有一個(gè)地方需要修改,那就是參數(shù)
pg_cron需要修改參數(shù)如下
shared_preload_libraries = pg_cron
cron.database_name = yxp
創(chuàng)建擴(kuò)展
# create extension pg_cron;
至此安裝已經(jīng)成功,接下來就要看使用了
2.2使用
使用起來其實(shí)也很簡單
只需要利用我們裝的pg_cron擴(kuò)展中的schedule函數(shù)就很方便的加入需要執(zhí)行的任務(wù)
我這里用了一個(gè)很簡單的vacuummy_table做演示,方便起見設(shè)置的是每十分鐘。
SELECT cron.schedule(0,10,20,30,40,50 * * * *, VACUUM my_table);
五個(gè)*咱們都知道和crontab里的一樣代表分時(shí)日月周,后面接我們需要執(zhí)行的語句即可。
如果我們想給這個(gè)任務(wù)起個(gè)名字呢,就在前面加上就好,如下所示:
做一個(gè)重啟postgreSQL就更新一下pg_cron插件的操作
SELECT cron.schedule(upgrade-pgcron, @reboot, ALTER EXTENSION pg_cron UPDATE);
重點(diǎn):
Jobname不僅僅可以方便我們看任務(wù),同時(shí)再做更改job內(nèi)容的時(shí)候提供必要的幫助
我又做了一個(gè)vacuummy_table的job,起了一個(gè)vacuum1的名字,這時(shí)候我們看到同時(shí)存在有兩個(gè)vacuummy_table的job,一個(gè)jobid是15,一個(gè)是17。
這時(shí),jobid=17的有jobname,我依據(jù)jobname做一個(gè)更改,把時(shí)間調(diào)成2點(diǎn)
select cron.schedule( vacuum1, 0 2 * * *, vacuum my_table);
這就充分體現(xiàn)的jobname的重要性。
我又隨意加了幾條job,等了等,發(fā)現(xiàn)job根本沒有執(zhí)行,看細(xì)節(jié)報(bào)了一堆連接錯(cuò)誤
什么原因?qū)е聲?huì)報(bào)這種連接失敗的錯(cuò)誤呢?
經(jīng)過查閱資料發(fā)現(xiàn),由于我們的pg_cron使用的是libpq的方式連接,需要調(diào)整一些密碼類的控制文件
第一種說法調(diào)整pg_hba.conf,第二種說法要調(diào)整.passwd,簡單來說就是要免密登錄。我一看,怎么這么麻煩,實(shí)在頭皮發(fā)麻,要是我有很多用戶,豈不每個(gè)都要配置一下,工作量也太大了吧!
我們簡單喵下這兩個(gè)配置
1)先看pg_hba.conf
每條記錄可以是下面七種格式之一
有興趣的自行官網(wǎng)查詢含義,實(shí)在太多,就不贅述了
2)再看.passwd
這個(gè)簡單一點(diǎn),但也要一個(gè)個(gè)添加
其實(shí),
現(xiàn)在的pg_cron版本已經(jīng)更新到了1.3,功能也再完善,我們苦惱的東西其實(shí)已經(jīng)被Bertrand和Nathan解決了,他們使用動(dòng)態(tài)后臺(tái)工作程序代替了連接,也就是再也不需要更改密碼相關(guān)的參數(shù)文件,只需增加一個(gè)參數(shù)cron.use_background_workers= on,并重啟一下,pg_cron強(qiáng)大功能由你帶回家。
審核日志
審核日志可讓我們查看正在運(yùn)行的cron作業(yè)以及過去的作業(yè)運(yùn)行
在我們上面就已經(jīng)用過了,cron這個(gè)schema下有個(gè)job_run_details表,這個(gè)表其實(shí)就是查看我們命令執(zhí)行的一些細(xì)節(jié)。
1)命令開始和結(jié)束的時(shí)間
2)pg_cron命令是否成功
3)返回的行數(shù)-或錯(cuò)誤消息,
這些信息可幫助我們快速檢測問題,是很有幫助的。
那么我們還有一個(gè)問題,這個(gè)表是會(huì)一直增加的,日志如何清理也是個(gè)問題?
這個(gè)問題就留給大家思考一下吧!
微信號(hào):justdoit2019syy
關(guān)注我們,了解更多
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130037.html
摘要:可以去下載包目前最新版本為。對于某個(gè)具體的類來說,出于安全或者性能或者其它方面的考慮,可能并不希望全部成員都出現(xiàn)在方法的返回值里。根據(jù)中的建議,方法和方法要同時(shí)實(shí)現(xiàn),并且保證一致性。 前言 Lombok主頁 Lombok下載 Lombok引入項(xiàng)目之后,便可以使用 本文記錄了在項(xiàng)目中應(yīng)用Lombok時(shí)的使用案例,希望對朋友你有一些幫助。 可以去 下載jar包 maven: ...
摘要:指定要用于查找的口令文件的名稱。前四個(gè)字段可以是確定的字面值,也可以使用通配符匹配所有。利用環(huán)境變量引用的文件權(quán)限也要滿足這個(gè)要求,否則同樣會(huì)被忽略。在上,該文件被假定存儲(chǔ)在一個(gè)安全的目錄中,因此不會(huì)進(jìn)行特別的權(quán)限檢查。 pg_dump pg_dump 把一個(gè)數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)為純文本文件或者是其它格式. 用法: pg_dump [選項(xiàng)]... [數(shù)據(jù)庫名字] 一般選項(xiàng): -f, --fi...
摘要:文章主要講了為什么要搭建私有網(wǎng)盤,以及如何用搭建。一石激起千層浪,關(guān)于如何選擇網(wǎng)盤,如何應(yīng)對網(wǎng)盤關(guān)閉的討論一下子又變得此起彼伏。搭建一個(gè)只屬于自己的網(wǎng)盤所以我決定搭建一個(gè)只屬于自己的網(wǎng)盤。搭建方法首先你得先有一個(gè)自己的。。 文章主要講了為什么要搭建私有網(wǎng)盤,以及如何用 docker + ownCloud 搭建。原文地址:http://geekplux.com/2016/10/2... ...
摘要:前面分享了兩篇分布式作業(yè)調(diào)度框架的介紹及應(yīng)用實(shí)戰(zhàn)。分布式作業(yè)調(diào)度神器分布式作業(yè)快速上手指南提供了簡單易用的運(yùn)維平臺(tái),方便用戶監(jiān)控動(dòng)態(tài)修改作業(yè)參數(shù)作業(yè)操作及查詢作業(yè)。管理員擁有全部操作權(quán)限,訪客僅擁有察看權(quán)限。 前面分享了兩篇分布式作業(yè)調(diào)度框架 Elastic Job 的介紹及應(yīng)用實(shí)戰(zhàn)。 ElasticJob-分布式作業(yè)調(diào)度神器 分布式作業(yè) Elastic Job 快速上手指南! E...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20