我已经在我们的pgAgent
数据库中安装PostgreSQL
来安排我们的工作,这真的很有魅力!
但是,在我从测试服务器中的数据库恢复备份后,pgAgent只是无法启动。有趣的是,似乎pgAgent忽略了这个日志表中数据的当前状态,并试图从零填充它们。
请参阅日志文件中的错误消息:
postgres@postgres ERROR: duplicate key value violates unique constraint "pga_jobsteplog_pkey"
postgres@postgres DETAIL: Key (jslid)=(1) already exists.
postgres@postgres STATEMENT: INSERT INTO pgagent.pga_jobsteplog(jslid, jsljlgid, jsljstid, jslstatus) SELECT 1, 25, 3, 'r' FROM pgagent.pga_jobstep WHERE jstid=3
如果您想知道如何执行备份:
pg_dumpall --file "/media/jones/Daten/fulldump.sql" --host "address-to-my-server.de" --port "5432" --username "myuser" --no-password --database "mydb" --clean --if-exists --verbose
环境:
Ubuntu 16.04
PostgreSQL 9.5
pgAgent 3.4.1-2
如何让pgAgent重新焕发活力?
来自德国的问候,
吉姆
答案 0 :(得分:0)
我对这个解决方案一定不满意,但这是迄今为止唯一能解决的问题。截断日志表可以解决问题,但会删除您拥有的所有作业历史记录(对大多数用例来说没什么大不了的):
TRUNCATE TABLE pgagent.pga_jobsteplog;
如果有人有更优雅的解决方案,请在评论中告诉我。
答案 1 :(得分:0)
万一有人还在寻找,我已经找到了在这种情况下有效的方法。
登录数据库,安装pgagent扩展 执行pgagent模式的pg_restore 然后,在其余模式还原后,还原pgagent.pga_jobsteplog。 然后将每个表的序列值重置为序列所基于的列的最大值之上的1。
这样做,意味着您在pgagent上工作,并且还拥有作业和作业步骤日志。