pg_timetable: PostgreSQL 的高级调度
pg_timetable is an advanced standalone job scheduler for PostgreSQL, offering many advantages over traditional schedulers such as cron and others. It is completely database driven and provides a couple of advanced concepts. It allows you to schedule PostgreSQL commands, system programs and built-in operations:
…
https://cybertec-postgresql.github.io/pg_timetable/
linux/amd64 and linux/arm64You can now define chains using YAML files instead of SQL inserts, making configuration more readable and maintainable:
chains:
- name: "Daily ETL Pipeline"
schedule: "0 2 * * *" # 2 AM daily
live: true
max_instances: 1
timeout: 3600000 # 1 hour
tasks:
- name: "Extract data"
command: "SELECT extract_sales_data($1)"
parameters: ["yesterday"]
- name: "Transform data"
command: "CALL transform_sales_data()"
autonomous: true
- name: "Load to warehouse"
command: "CALL load_to_warehouse()"
Load YAML chains with one or more startup files:
pg_timetable --file chains.yaml postgresql://user:pass@host/db
pg_timetable --file bootstrap.sql --file chains/base.yaml --file chains/prod.yaml ******host/db
See samples/yaml/ for more examples and YAML Schema for complete format specification.
Complete installation guide can be found in the documentation.
Possible choices are:
Complete usage guide can be found in the documentation.
Download pg_timetable executable
Make sure your PostgreSQL server is up and running and has a role with CREATE privilege for a target database, e.g.
my_database=> CREATE ROLE scheduler PASSWORD 'somestrong';
my_database=> GRANT CREATE ON DATABASE my_database TO scheduler;
Create a new job, e.g. run VACUUM each night at 00:30
my_database=> SELECT timetable.add_job('frequent-vacuum', '30 0 * * *', 'VACUUM');
add_job
---------
3
(1 row)
Run the pg_timetable
pg_timetable postgresql://scheduler:somestrong@localhost/my_database --clientname=vacuumer
PROFIT!
| Cloud Service | Supported | PostgreSQL Version | Supported | OS | Supported |
|---|---|---|---|---|---|
| Alibaba Cloud | ✅ | 19 (devel) | ✅ | Linux | ✅ |
| Amazon RDS | ✅ | 18 (current) | ✅ | Darwin | ✅ |
| Amazon Aurora | ✅ | 17 | ✅ | Windows | ✅ |
| Azure | ✅ | 16 | ✅ | FreeBSD* | ✅ |
| Citus Cloud | ✅ | 15 | ✅ | NetBSD* | ✅ |
| Crunchy Bridge | ✅ | 14 | ✅ | OpenBSD* | ✅ |
| DigitalOcean | ✅ | 13 | ✅ | Solaris* | ✅ |
| Google Cloud | ✅ | 12 | ✅ | ||
| Heroku | ✅ | 11 | ✅ | ||
| Supabase | ✅ | 10 | ✅ |
* - there are no official release binaries made for these OSes. One would need to build them from sources.
** - previous PostgreSQL versions may and should work smoothly. Only officially supported PostgreSQL versions are listed in this table.
If you want to contribute to pg_timetable and help make it better, feel free to open an issue or even consider submitting a pull request.
For professional support, please contact Cybertec.
暂无开放 Issues,或尚未同步最近议题。