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