crontab -e
#分钟 小时 月份中的某一天 月份 星期 命令
#(0-59) (0-23) (1-31) (1-12) (0-7 [7 or 0 == Sunday])
<minute> <hour> <day of month> <month> <day of week> <command>
0 0 * * * pg_dump --no-password -U user db_name > backup.sql
chmod 600 .pgpass
-- 每周六 3:30am (GMT) 删除历史记录
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
schedule
----------
42
-- 每天 10:00am (GMT) 执行清理作业
SELECT cron.schedule('nightly-vacuum', '0 10 * * *', 'VACUUM');
schedule
----------
43
-- 将清理作业修改为 3:00am (GMT)
SELECT cron.schedule('nightly-vacuum', '0 3 * * *', 'VACUUM');
schedule
----------
43
-- 停止计划中的任务
SELECT cron.unschedule('nightly-vacuum' );
unschedule
------------
t
(1 row)
SELECT cron.unschedule(42);
unschedule
------------
t
sudo yum install -y pg_cron_12
sudo apt-get -y install postgresql-12-cron
git clone https://github.com/citusdata/pg_cron.git
cd pg_cron
# Ensure pg_config is in your path, e.g.
export PATH=/usr/pgsql-12/bin:$PATH
make && sudo PATH=$PATH make install
shared_preload_libraries = 'pg_cron'
cron.database_name = 'postgres'
sudo service postgresql-12 restart
-- 使用 superuser 运行以下命令
CREATE EXTENSION pg_cron;
-- 可选操作,为其他用户授予访问权限
GRANT USAGE ON SCHEMA cron TO username;
docker run --rm \
cybertecpostgresql/pg_timetable:latest \
-h 10.0.0.3 -p 54321 -c worker001
docker run --rm \
-e PGTT_PGHOST=10.0.0.3 \
-e PGTT_PGPORT=54321 \
cybertecpostgresql/pg_timetable:latest \
-c worker001
$ env GIT_TERMINAL_PROMPT=1 go get github.com/cybertec-postgresql/pg_timetable/
Username for 'https://github.com': <Github Username>
Password for 'https://cyberboy@github.com': <Github Password>
$ cd ~/go/src/github.com/cybertec-postgresql/pg_timetable/
$ go run main.go --dbname=dbname --clientname=worker001 --user=scheduler --password=strongpwd
$ go build
$ ./pg_timetable --dbname=dbname --clientname=worker001 --user=scheduler --password=strongpwd
$ cd ~/go/src/github.com/cybertec-postgresql/pg_timetable/
$ go get github.com/stretchr/testify/
$ go test ./...
$ RUN_DOCKER=true go test ./...
# ./pg_timetable
Application Options:
-c, --clientname= Unique name for application instance
-v, --verbose Show verbose debug information [$PGTT_VERBOSE]
-h, --host= PG config DB host (default: localhost) [$PGTT_PGHOST]
-p, --port= PG config DB port (default: 5432) [$PGTT_PGPORT]
-d, --dbname= PG config DB dbname (default: timetable) [$PGTT_PGDATABASE]
-u, --user= PG config DB user (default: scheduler) [$PGTT_PGUSER]
-f, --file= SQL script file to execute during startup
--password= PG config DB password (default: somestrong) [$PGTT_PGPASSWORD]
--sslmode=[disable|require] What SSL priority use for connection (default: disable)
--pgurl= PG config DB url [$PGTT_URL]
--init Initialize database schema and exit. Can be used with --upgrade
--upgrade Upgrade database to the latest version
--no-program-tasks Disable executing of PROGRAM tasks [$PGTT_NOPROGRAMTASKS]
SELECT timetable.job_add('MyJob', 'SELECT public.my_func()' , NULL, 'SQL', '5 0 * 8 *', live := TRUE);
SELECT timetable.job_add('MyJob', 'SELECT public.my_func()' , NULL, 'SQL', '23 0-20/2 * * *', live := TRUE);
第一个阶段用于配置 base_task,定义需要执行的操作。包括 SQL 语句、外部程序以及内置的操作。
第二个阶段用于配置 task_chain,定义一组顺序执行的基本任务。
第三阶段用于配置 chain_execution_config,定义任务链的执行计划。
新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序
中国PostgreSQL分会入选工信部重点领域人才能力评价机构
更多新闻资讯,行业动态,技术热点,请关注中国PostgreSQL分会官方网站
https://www.postgresqlchina.com
中国PostgreSQL分会生态产品
https://www.pgfans.cn
中国PostgreSQL分会资源下载站
https://www.postgreshub.cn
点击此处阅读原文
↓↓↓
本文分享自微信公众号 - 开源软件联盟PostgreSQL分会(kaiyuanlianmeng)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
|