PostgreSQL DBA(163) - Extension(pg_cron)
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文简单介绍了PostgreSQL的插件:pg_cron。该插件可在PG中实现类似crontab的功能。安装编译安装[pg12@localhost pg_cron]$git clone https:/
千家信息网最后更新 2025年11月08日PostgreSQL DBA(163) - Extension(pg_cron)
本文简单介绍了PostgreSQL的插件:pg_cron。该插件可在PG中实现类似crontab的功能。
安装
编译安装
[pg12@localhost pg_cron]$git clone https://github.com/citusdata/pg_cron.git[pg12@localhost pg_cron]$cd pg_cron[pg12@localhost pg_cron]$ makegcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-implicit-fallthrough -Iinclude -I/appdb/pg12/pg12.1/include -I. -I./ -I/appdb/pg12/pg12.1/include/postgresql/server -I/appdb/pg12/pg12.1/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/pg_cron.o src/pg_cron.c -MMD -MP -MF .deps/pg_cron.Pogcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-implicit-fallthrough -Iinclude -I/appdb/pg12/pg12.1/include -I. -I./ -I/appdb/pg12/pg12.1/include/postgresql/server -I/appdb/pg12/pg12.1/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/job_metadata.o src/job_metadata.c -MMD -MP -MF .deps/job_metadata.Pogcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-implicit-fallthrough -Iinclude -I/appdb/pg12/pg12.1/include -I. -I./ -I/appdb/pg12/pg12.1/include/postgresql/server -I/appdb/pg12/pg12.1/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/misc.o src/misc.c -MMD -MP -MF .deps/misc.Pogcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-implicit-fallthrough -Iinclude -I/appdb/pg12/pg12.1/include -I. -I./ -I/appdb/pg12/pg12.1/include/postgresql/server -I/appdb/pg12/pg12.1/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/task_states.o src/task_states.c -MMD -MP -MF .deps/task_states.Pogcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -std=c99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-implicit-fallthrough -Iinclude -I/appdb/pg12/pg12.1/include -I. -I./ -I/appdb/pg12/pg12.1/include/postgresql/server -I/appdb/pg12/pg12.1/include/postgresql/internal -D_GNU_SOURCE -I/usr/include/libxml2 -c -o src/entry.o src/entry.c -MMD -MP -MF .deps/entry.Pogcc -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O0 -DOPTIMIZER_DEBUG -g3 -gdwarf-2 -fPIC -shared -o pg_cron.so src/pg_cron.o src/job_metadata.o src/misc.o src/task_states.o src/entry.o -L/appdb/pg12/pg12.1/lib -Wl,--as-needed -Wl,-rpath,'/appdb/pg12/pg12.1/lib',--enable-new-dtags -L/appdb/pg12/pg12.1/lib -lpq cat pg_cron.sql > pg_cron--1.0.sql[pg12@localhost pg_cron]$ make install/bin/mkdir -p '/appdb/pg12/pg12.1/lib/postgresql'/bin/mkdir -p '/appdb/pg12/pg12.1/share/postgresql/extension'/bin/mkdir -p '/appdb/pg12/pg12.1/share/postgresql/extension'/bin/install -c -m 755 pg_cron.so '/appdb/pg12/pg12.1/lib/postgresql/pg_cron.so'/bin/install -c -m 644 .//pg_cron.control '/appdb/pg12/pg12.1/share/postgresql/extension/'/bin/install -c -m 644 .//pg_cron--1.0--1.1.sql .//pg_cron--1.1--1.2.sql pg_cron--1.0.sql '/appdb/pg12/pg12.1/share/postgresql/extension/'[pg12@localhost pg_cron]$体验
创建扩展
[local:/data/run/pg12]:5120 pg12@testdb=# create extension pg_cron;ERROR: can only create extension in database postgresDETAIL: Jobs must be scheduled from the database configured in cron.database_name, since the pg_cron background worker reads job descriptions from this database.HINT: Add cron.database_name = 'testdb' in postgresql.conf to use the current database.CONTEXT: PL/pgSQL function inline_code_block line 4 at RAISE[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=# \c postgresYou are now connected to database "postgres" as user "pg12".[local:/data/run/pg12]:5120 pg12@postgres=# create extension pg_cron;CREATE EXTENSION[local:/data/run/pg12]:5120 pg12@postgres=#修改系统参数
[local:/data/run/pg12]:5120 pg12@postgres=# select name,setting from pg_settings where name like '%cron%'; name | setting -----------------------+----------- cron.database_name | postgres cron.host | localhost cron.log_statement | on cron.max_running_jobs | 32(4 rows)[local:/data/run/pg12]:5120 pg12@postgres=#创建job,目的是每个1分钟执行VACUUM FULL
[local:/data/run/pg12]:5120 pg12@postgres=# SELECT cron.schedule('*/1 * * * *', 'VACUUM FULL'); schedule ---------- 1(1 row)[local:/data/run/pg12]:5120 pg12@postgres=# [local:/data/run/pg12]:5120 pg12@postgres=# \df cron.schedule List of functions Schema | Name | Result data type | Argument data types | Type --------+----------+------------------+-----------------------------+------ cron | schedule | bigint | schedule text, command text | func(1 row)[local:/data/run/pg12]:5120 pg12@postgres=# [local:/data/run/pg12]:5120 pg12@postgres=# \df cron.* List of functions Schema | Name | Result data type | Argument data types | Type --------+----------------------+------------------+-----------------------------+------ cron | job_cache_invalidate | trigger | | func cron | schedule | bigint | schedule text, command text | func cron | unschedule | boolean | job_id bigint | func(3 rows)日志输出
2020-02-11 17:52:59.935 CST,"pg12","postgres",23764,"[local]",5e427932.5cd4,1,"SELECT",2020-02-11 17:51:46 CST,3/8,0,LOG,00000,"failed to parse entry 1",,,,,,"SELECT cron.schedule('0/1 * * * *', 'VACUUM FULL');",,,"psql"2020-02-11 17:52:59.936 CST,"pg12","postgres",23764,"[local]",5e427932.5cd4,2,"SELECT",2020-02-11 17:51:46 CST,3/8,0,ERROR,22023,"invalid schedule: 0/1 * * * *",,,,,,"SELECT cron.schedule('0/1 * * * *', 'VACUUM FULL');",,,"psql"2020-02-11 17:54:00.001 CST,,,19164,,5e426547.4adc,2,,2020-02-11 16:26:47 CST,1/0,0,LOG,00000,"cron job 1 starting: VACUUM FULL",,,,,,,,,""2020-02-11 17:54:00.740 CST,,,19164,,5e426547.4adc,3,,2020-02-11 16:26:47 CST,1/0,0,LOG,00000,"cron job 1 completed: VACUUM ",,,,,,,,,""2020-02-11 17:55:00.002 CST,,,19164,,5e426547.4adc,4,,2020-02-11 16:26:47 CST,1/0,0,LOG,00000,"cron job 1 starting: VACUUM FULL",,,,,,,,,""2020-02-11 17:55:00.579 CST,,,19164,,5e426547.4adc,5,,2020-02-11 16:26:47 CST,1/0,0,LOG,00000,"cron job 1 completed: VACUUM ",,,,,,,,,""取消调度
[local:/data/run/pg12]:5120 pg12@postgres=# select cron.unschedule(1); unschedule ------------ t(1 row)[local:/data/run/pg12]:5120 pg12@postgres=#参考资料
pg_cron
插件
功能
参数
参考资料
可在
日志
目的
系统
资料
中实
体验
参考
编译
调度
输出
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
研究生的网络安全就业
移动软件开发工程师专业
全密闭服务器配液冷
网络安全趋势公众号
封闭系统网络安全
网络服务器配置与管理第2版
当前国内的网络安全状况
计算机二级mysql数据库答题
济南网络安全培训机构有哪些
网络安全与智能制造产业基地
电脑病毒下载软件开发
不小心把数据库删除了
无线互联网科技是核心期刊
软件开发亿玛酷专注4
惠普g7服务器售后
软件开发助理操作手册
软件开发的好做吗
寻找历史服务器
山东安卓软件开发公司
变电站网络安全评级
德州辉月网络技术有限公司
判断数据库中所有字段为空
实验七 数据库的安全性答案
云服务器怎么挂ip
池铖美国网络安全战略研究
软件开发助理操作手册
大学信息技术数据库知识点
影像交换系统应用软件开发
排查挖矿行为 网络安全
我的世界联机建筑服务器