PostgreSQL DBA(163) - Extension(pg_cron)
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本文简单介绍了PostgreSQL的插件:pg_cron。该插件可在PG中实现类似crontab的功能。安装编译安装[pg12@localhost pg_cron]$git clone https:/
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
抢红包分析软件开发
杨浦区软件开发信息推荐
网络技术教案说课模板
取数值长度为3的数据库
转换数据库
网络安全和信息化个人总结
2022年网络安全工作方案
皮皮虾手游服务器下载
中国上市公司专利数据库
德江网络安全宣传
安卓棋牌软件开发案例
大连软件开发的公司
设置数据库占用内存
新能源汽车bms软件开发
软件服务器出小差
西藏防伪溯源软件开发
网络安全个人研讨发言材料
网络技术团队名称
租赁服务器数据安全
目前数据库管理系统以什么为主
梦课学堂网络技术与应用答案
怎么打开iis服务器
网络技术的发展定律主要有
网络技术媒体技术研发技术咨询
硬件式邮件服务器
易语言数据库 索引
检测软件开发辅助
三星电子使用的是什么数据库
无线网络技术教程综述题
网络安全刷剧视频