要在装有 PostgreSQL 14 的 Red Hat、CentOS、Fedora 或 Amazon Linux 上安装 pg_cron
,请遵循以下步骤。这些步骤假定您已经安装了 PostgreSQL Global Development Group (PGDG) 的 PostgreSQL 版本。
安装 pg_cron
扩展
- 使用
yum
安装pg_cron
扩展:sudo yum install -y pg_cron_14
设置 pg_cron
-
要在 PostgreSQL 启动时启动
pg_cron
后台进程,需要在postgresql.conf
文件中添加pg_cron
到shared_preload_libraries
配置:# required to load pg_cron background worker on start-up shared_preload_libraries = 'pg_cron'
-
默认情况下,
pg_cron
后台进程的元数据表将在 “postgres” 数据库中创建。您可以通过在postgresql.conf
中设置cron.database_name
配置参数来更改此设置:# optionally, specify the database in which the pg_cron background worker should run (defaults to postgres) cron.database_name = 'postgres'
-
之前
pg_cron
只能使用 GMT 时间,但现在您可以通过在postgresql.conf
中设置cron.timezone
来适应您的时区。例如,使用中国标准时间 (PRC):# optionally, specify the timezone in which the pg_cron background worker should run (defaults to GMT). E.g: cron.timezone = 'PRC'
-
重启 PostgreSQL 以使更改生效。
创建 pg_cron
扩展
- 重启 PostgreSQL 后,您可以使用
CREATE EXTENSION pg_cron
创建pg_cron
函数和元数据表:-- run as superuser: CREATE EXTENSION pg_cron; -- optionally, grant usage to regular users: GRANT USAGE ON SCHEMA cron TO marco;
确保 pg_cron
可以启动作业
- 默认情况下,
pg_cron
使用 libpq 打开到本地数据库的新连接,这需要在pg_hba.conf
中允许。您可能需要为从 localhost 来的连接启用信任认证,或者可以将密码添加到.pgpass
文件中,libpq 将在打开连接时使用此文件。
使用后台工作进程调度作业
pg_cron
还可以配置为使用后台工作进程。在这种情况下,同时进行作业的数量受max_worker_processes
设置的限制,因此您可能需要提高该设置:# Schedule jobs via background workers instead of localhost connections cron.use_background_workers = on # Increase the number of available background workers from the default of 8 max_worker_processes = 20
查看作业运行详情
- 您可以在
cron.job_run_details
中查看正在运行和最近完成的作业运行状态:select * from cron.job_run_details order by start_time desc limit 5;
确保在进行这些更改时,您已经备份了相应的配置文件,并在必要时咨询了经验丰富的数据库管理员。