1、pgAgent使用帮助文档pgAgent使用说明文件编号:项目编号: 项目名称:部 门:版 本 号:1.0受控状态:0密 级:总 页 数:正文:附 录:0编 制:周光明日 期:2014-1-16审 核:日 期:批 准:日 期:北京亚控科技发展有限公司版本记录日期版本号作者说明2014-1-161.0周光明创建2014-1-271.1周光明修改完善目录1 概述 12 安装 13 配置作业 133.1 新建作业 133.2 修改作业 253.3 删除作业 264 执行作业 275 高级应用 295.1 单次运行 295.2 作业执行序列 295.3 计划执行序列 295.4 步骤执行序列 306
2、参考资料: 301 概述pgAgent是PostgreSQL的一个作业调度程序,可以用来创建定时执行任务,运行设定的批处理程序或SQL语句。pgAgent可以作为一个守护程序(daemon)运行在UNIX系统上,也可以作为系统服务运行在Windows系统上。本文主要基于Windows系统上的使用为例来介绍pgAgent安装、配置及使用。2 安装pgAgent在PostgreSQL 9.0之前一直附带在pgAdmin包下,只是默认不安装。在之后的版本就单独作为一个安装包提供。由于pgAdmin安装包中不再提供pgAgent安装模块,所以需要通过PostgreSQL自带的Application S
3、tack Builder来安装。使用Stack Builder方式安装pgAgent,需要先通过网络下载pgAgent安装程序,所以在安装前一定要确保能够访问互联网。1 打开Stack Builder点击下拉列表框,选择目标PostgreSQL服务器。此处我们选择将pgAgent安装至本机的PostgreSQL服务器上,然后点击“下一步”。2 下载pgAgent安装程序此处我们选择pgAgent,然后点击“下一步”,选择pgAgent安装程序下载路径然后点击“下一步”,开始下载pgAgent安装程序下载成功后,可以在“下载目录”所对应的文件夹中看到edb_pgagent.exe安装程序。可以选
4、择“Skip Installation”,即只将pgAgent下载下来而不安装,若后续需要安装pgAgent,可以直接双击下载下来的edb_pgagent.exe安装pgAgent。若不选择“Skip Installation”,则点击“下一步”,即可进入pgAgent安装界面。3 安装pgAgent点击“Next”,选择安装路径点击“Next”,会出现升级模式选择界面。由于我们不涉及升级模式选择,所以可以继续点击“Next”,进入PostgreSQL服务器连接配置界面这里要填写PostgreSQL的postgres用户名和密码,或者具有操作postgres这个数据库权限的用户账号。因为pgA
5、gent需要在postgres数据库里面创建相应的表,所以这里填写的用户必须具有操作postgres数据库的权限。此处我们使用具有最大权限的postgres用户。点击“Next”,进入pgAgent所在机器系统的Windows用户账号这里要填写执行pgAgent的Windows用户账号。如果是域用户,需填写完整的域用户名和密码。因为pgAgent会在Windows服务里添加一个名为“PostgreSQL Scheduling Agent pgAgent”的服务,而该服务需要登录后才能运行,所以此处填写的账号必须是当前Windows可以登录的账号。填写完成后,点击“Next”,开始安装pgAge
6、nt安装过程中,会提示在postgre数据库内创建和配置pgagent schema点击“OK”按钮。安装结束时,会进入如下界面点击“完成”,pgAgent安装完成。此时可以在Windows服务里面看到pgAgent服务正在运行打开pgAdmin,可以看到在左侧“对象浏览器”中增加了一项“作业”功能节点3 配置作业pgAgent运行的每一个作业都包括步骤和计划两项内容。其中,计划是定时器,配置作业什么时候执行,而步骤是执行任务的内容。通过这两项内容,就可以配置作业何时做何事。一个作业可以有多个计划和步骤。有两种方式可以新建或修改作业:一种是使用pgAdmin管理工具执行;一种是直接编写SQL脚
7、本。两种方式殊归同途,最终都可以对应为SQL脚本。不过由于使用pgAdmin方便直观,所以我们以通过pgAdmin配置作业为例,介绍如何新建作业,以及如何修改作业属性。3.1 新建作业打开pgAdmin,右键单击对象浏览器中的“作业”节点,点击“新建作业”菜单项,打开“新建作业”对话框。1) “属性”选项卡在“属性”选项卡中,填写作业的基本属性信息 名称作业名称,应符合PostgreSQL的对象命名规则。 启用标识作业是否生效。默认为勾选,即作业立即生效。 作业类别包含五种作业类别,分别是:Routine Maintenance、Data Import、Data Export、Data Sum
8、marisation、Miscellaneous。默认作业类为Routine Maintenance。 主机代理运行作业的pgAgent所在机器名。可以执行如下语句获取主机代理名:SELECT jagstation FROM pgagent.pga_jobagent若该项内容为空,则表示在本机执行该作业。 注释除上述内容外,其他项均由系统来设置,我们无须配置。2) “步骤”选项卡打开“步骤”选项卡,点击“添加”按钮,弹出“新建步骤”对话框在“新建步骤”对话框上有两个选项卡,用于配置作业步骤(1) “属性”选项卡在“属性”选项卡中,填写步骤的基本配置信息 名称步骤名称,应符合PostgreSQL
9、的对象命名规则 启用标识步骤是否生效。默认为勾选,即步骤立即生效 连接类型只有当步骤种类为SQL时,连接类型才有效。连接类型分为本地和远程,主要是标识作业步骤中定义的SQL语句是在本地PostgreSQL服务器上执行,还是在远程PostgreSQL服务器上执行。默认连接类型为“本地”。 数据库只有当步骤种类为SQL,且连接类型为“本地”时,“数据库”配置项才有效。点击“数据库”配置项的下拉列表,可以选择本地PostgreSQL服务器上的pgSQL数据库。默认数据库配置项为有效。 连接串只有当步骤种类为SQL,且连接类型为“远程”时,“连接串”配置项才有效。可以手工输入连接串信息,也可以点击“连
10、接串”配置项的,打开“Select Database”对话框在该对话框中,可以选择指定PostgreSQL服务器上的指定pgSQL数据库,然后点击“OK”按钮,返回如下格式的连接串信息:user=postgres host=localhost port=5432 dbname=postgres 种类支持两种脚本种类:SQL和批处理。SQL指的就是SQL语句编写的脚本。批处理指的就是使用Windows系统下的DOS命令行或者UNIX系统下的Shell命令编写的脚本,比如我们可以编写pgSQL数据库备份批处理脚本,实现数据库定时备份。具体的脚本都是在“定义”选项卡中填写。默认种类为SQL。 错误时
11、“错误时”部分,表示当执行作业出现错误的时候,是失败(即停止作业执行,意味着不再执行后续步骤),是成功(即认为作业正常执行,意味着该项步骤失败,不影响后续步骤的继续执行),还是忽略(即忽略该项步骤的失败,不影响后续步骤的继续执行)。默认处理方式为“失败”。 注释(2) “定义”选项卡当选择脚本种类为SQL,则在“定义”中编写SQL脚本。一般建议把这些SQL语句写在一个事务中,这样计算作业运行失败,也不会影响到表中数据。当选择脚本种类为批处理,则在“定义”中编写批处理脚本。我们以Windows系统下的批处理脚本为例配置完步骤属性信息后,点击“确定”按钮,即可在“步骤”选项卡中看到刚刚配置的作业步
12、骤3) “计划”选项卡打开“计划”选项卡,点击“添加”按钮,弹出“新建计划”对话框在“新建计划”对话框有四个选项卡,用于配置调度计划(1) “属性”选项卡在“属性”选项卡中,填写计划的基本属性信息 名称计划名称,应符合PostgreSQL的对象命名规则 启用标识计划是否生效。默认为勾选,即计划立即生效 开始标识计划的开始时间,精确到分钟。开始时间必须设置。 结束标识计划的结束时间,精确到分钟。结束时间可以不设置,表示该作业会持续不停的运行下去。 注释(2) “日期”选项卡在“日期”选项卡上,可以设置计划执行的月份或日期,甚至是星期几。比如选择“每月的”中的“26号”,表示每个月的26号执行该作
13、业。这里有几点需要说明: 若不勾选任何项,则表示在每个月的每天都运行该作业; 若勾选了某一项或某几项,则只在该指定日期运行。比如,只选择“每周的”中的“星期一”,则表示只在每个月的每个星期一执行该作业;若只选择“月份”中的“一月”和“每周的”中的“星期一”,则表示只在一月份的每个星期一执行该作业; 可以点击,全选某一日期单位的所有项。比如点击月份处的,则全部选择所有月份; 在“每月的”中有“最后日”选项,该选项主要用在需要在每个月的最后一天执行作业的场景。举例来说,一月份的最后一天是31号,二月份的最后一天是可能是28号或29号,四月份的最后一天是30号,若我们想统一为每个月的最后一天执行,则
14、无法设置调度日期。但是通过选择“最后日”,则可以解决这一棘手的问题。选择“每月的”的“最后日”项,则由pgAgent来计算每个月的最后一天,并在计算得出的时间执行作业。(3) “时间”选项卡在“时间”选项卡上,可以设置计划执行的具体时间。比如选择“分钟”中的00和30,则表示在每小时的整点(00)和半点(30)执行,也就是每隔30分钟执行一次。如果只勾选30,则表示每个小时的半点(30)执行一次,即4:30、5:30,这就是每隔一个小时执行一次了。需注意的是,若“小时”和“分钟”两项都没有勾选,则表示每隔2分钟执行一次。但若勾选了“小时”,而没有勾选“分钟”,则又表示每个1分钟执行一次。当然,
15、也可以点击,全选某一日期单位的所有项。(4) “例外”选项卡 在作业调度运行过程中,可能存在这样的需求:在某特定时刻,不执行作业,即跳过作业执行。举例来说,虽然调度计划是按照每分钟执行调度,但由于某种原因,可能希望在2014-1-27 12:00:00不执行该作业。对于这样的需求,则不能简单在日期或时间选项卡中配置实现,这时就需要配置例外情况:单击“例外”选项卡中的“日期”下拉列表,选择指定的日期,默认是当前日期,比如在该示例中选择2014-1-27;在“时间”文本框中输入指定时间,在该示例中输入12:00:00,然后点击“添加”按钮,即可添加一个例外事项。作业调度会自动跳过该例外时刻。配置“
16、例外”事项时有几点需要注意: 若指定了日期和时间,且时间不为00:00:00,则表示作业调度会在该指定的时刻跳过而不执行作业; 若只指定了日期,而没有指定时间,或者时间为00:00:00,则表示例外事项为该指定日期的所有时间。举例来说,若指定日期为2014-1-27,时间未指定,则表示在2014-1-27这一天,作业都不会执行,只有等到2014-1-28才会继续执行; 若未指定日期,只指定了时间,则表示例外事项为每天的该指定时刻。举例来说,若日期未指定,时间设置为12:00:00,则表示调度计划中的每天12点都不会执行作业。配置完计划属性信息后,点击“确定”按钮,即可在“计划”选项卡中看到刚刚
17、配置的调度计划4) “SQL”选项卡当配置完作业基本信息、步骤基本信息和计划基本信息后,可以在SQL选项卡中看到配置操作的脚本化操作描述。这里的SQL脚本是只读的,不能更改。按照上述步骤配置完作业的属性、作业步骤和调度计划后,点击“确定”按钮,新建作业成功。此时在pgAdmin窗口的对象浏览器中,右键点击“作业”节点,选择“刷新”菜单项,即可看到刚刚创建成功的作业。点击作业名称前面的+号,可以依次展开看到属于该作业的计划和步骤。新建作业时,“属性”选项卡中的基本信息必须填写,但可以先不创建步骤和计划,此时新建了一个空作业,即不包含调度计划和作业步骤的作业。 可以右键点击该作业,在右键菜单中选择
18、“新建计划”和“新建步骤”,按照上述步骤创建所关联的计划和步骤。由于操作步骤一样,这里不再一一赘述。3.2 修改作业 在pgAdmin中的“对象浏览器”中,右键点击待修改的作业名称,选择“属性”菜单项,打开作业属性对话框。该对话中的内容与新建作业时的内容一致。分别在“步骤”和“计划”选项卡中,选中待修改的步骤和计划,点击“修改”按钮,在弹出的“步骤”对话框和“计划”对话框中,可以分别修改步骤和计划。当然,也可以右键单击作业下面的指定计划或步骤节点,选择“属性”菜单项,分别打开步骤属性对话框和计划属性对话框,只修改指定的计划或步骤。修改完成后点击“确定”按钮,修改立即生效。3.3 删除作业 在p
19、gAdmin中的“对象浏览器”中,右键点击待删除的作业名称,选择“删除/移除”菜单项,会弹出提示确认删除作业信息提示框 点击“是”按钮,即可删除指定作业。也可以右键单击作业下面的指定计划或步骤节点,选择“删除/移除”菜单项,弹出提示确认删除计划或步骤的信息提示框。点击“是”按钮,即可删除指定的计划或步骤。4 执行作业若作业及其所包含的计划和步骤的启用状态均为“是”,则作业会立即生效,根据调度计划执行相应的作业步骤。通过pgAdmin,在“对象浏览器”中点击作业名称,可以在右侧看到作业运行状态及统计信息。从“属性”选项卡中我们可以看到作业下次运行时间,上次运行时间,上次运行结果以及当前是否在运行
20、等信息。从“统计量”选项卡中我们可以看到作业运行了多少次,作业运行状态,作业实际启动时间和实际结束时间,以及作业持续时长。基于作业运行统计信息,我们可以看到作业实际启动时间大都比作业预期运行时间有所延迟,也就是说只要作业能在一定的延迟时间内启动运行,都可认为作业是有效的。 需要说明的是,这里的统计信息是作业整体的运行统计信息。一个作业中可以包含多个计划,也可以包含多个步骤,具体哪个步骤何时启动运行,何时结束运行,持续时长等信息,需要分析指定步骤的运行统计信息,如下图所示。从作业步骤的运行统计信息中,我们看到除了包含步骤运行次数、运行状态、启动和结束时间、持续时长等基本信息外,还有结果和输出两列
21、信息。其中结果信息标识了步骤涉及查询语句返回的记录条数,输出信息标识了在本次调度中步骤执行的错误信息。若在本次作业调度执行中,步骤执行成功,则该处不输出任何内容,若步骤执行失败,则该处输出具体的错误信息。若在创建作业步骤时,设置的“出错时”选项为“失败”,则一旦作业步骤执行中发生错误,则该作业停止运行,即本次调度中,该作业的所有后续步骤全部停止运行,然后等待下次调度时刻的到来。5 高级应用上面所提到的主要是基于一个作业上包含一个计划和一个步骤的场景。pgAgent支持创建多个作业,也支持一个作业上创建多个计划和多个步骤。有时为了调试的需要,也希望仅仅执行一次作业,待到作业调试结束后,才正式按照
22、调度计划执行该作业。5.1 单次运行在项目实施中,我们都希望作业能够正确调度并执行,然后再部署上线。这就需要我们在上线之前能够调试作业。虽然pgAgent没有提供作业调试功能,但提供了“立刻运行”功能。借助于“立刻运行”功能,我们可以实现作业单次运行,进而实现协助调试的需求。具体做法如下:创建作业时,选择“启用”项为“是”,然后设置计划开始时间为较晚的一个时间点。配置好后,由于作业启动运行时间相当靠后,所以我们可以右键单击作业名称,选择“立刻运行”菜单项可以立即运行作业,执行作业步骤。这样我们可以不需等待调度时间的到来,先执行一次作业,调试,修改,然后再执行一次作业,迭代循环,直到作业调试完成
23、,然后再将计划开始时间修改为需要的启动时间即可。5.2 作业执行序列pgAgent支持创建多个作业。正常情况下,多个作业并行调度执行,执行顺序不以作业名称或创建时间排序。比如,创建了三个作业job1、job2、job3,三个作业的调度计划一样。在每次调度执行的时候,有可能是以job1、job3、job2的顺序执行,也可能是以job3、job2、job1的顺序执行。当某一作业被阻塞的时候,不会影响其他作业的执行。举例来说,当job1被阻塞的时候,job2和job3仍会正常执行。当job1恢复执行,则job1从当前时刻计算下一次的正常调度时间,待到调度时间到达,则执行job1作业。5.3 计划执行
24、序列pgAgent支持在一个作业下创建多个计划。一般来说,计划都是相错开,所以不同的时刻执行不同的计划。但可能出现在某一时刻,同时触发同一个作业内的多个计划。此种情况下,虽然触发了多个计划,但作业步骤只执行一次,不会因为多个计划的调度时间到达而执行多次。5.4 步骤执行序列pgAgent支持在一个作业下创建多个步骤。同一个作业下的步骤执行序列是以步骤名称升序排序,依次执行的。一旦创建了步骤,则步骤不能随意调整顺序,只能通过修改步骤名称来调整步骤名的排序,进而实现调整步骤执行的顺序。举例来说,创建步骤时,先创建了名为Step1的步骤,然后创建了名为Step2的步骤。作业执行时,会先执行Step1步骤,然后执行Step2步骤,这是因为按名称排序,Step2在Step1之后。步骤执行序列也与创建步骤时所设置的“错误时”项有关。若创建步骤时所设置的“错误时”项为“失败”时,当步骤执行序列中的某一步骤失败,则该作业下的所有后续步骤都停止运行。若创建步骤时所设置的“错误时”项为“成功”或“忽略”,则当步骤执行序列中的某一步骤失败,该作业下的所有后续步骤仍将继续执行。6 参考资料:(1) pgAdmin 帮助文档中的pgAgent一章;(2)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1