pgAgent

pgAgent er to to ting:

  • en extension, der skaber nogle styringstabeller der beskriver jobs der skal køres på bestemte tidspunkter med en bestemt frekvens
  • En systemagent, der oftest kører på selve databaseserveren (men ikke behøver det), og sørger for at udføre disse jobs som beskrevet.

Installation

På Windows vil det typisk ske gennem EnterpriseDB’s StackBuilder, men det afhænger lidt af setuppet. Hvis man ikke selv administrerer sin PostgreSQL-server, skal installationen ske hos leverandøren.

Jobs kører som standard som superbrugeren postgres, og her har man altså virkeligt mulighed for at ødelægge ting :-). På selve databaseserveren skal man have sat op hvilken systembruger der kører agenten. pgAgent har adgang til alt hvad denne bruger har adgang til, og ikke mere. Hvis noget ikke virker, så er det muligvis fordi denne bruger prøver at gøre noget den ikke må - fx. At skrive i en mappe den ikke har adgang til.

Et pgAgent-job

Jeg har oplevet at der nm

  • Skal have et navn
  • Enables
  • En klasse vælges (kun til organisering)
  • HostAgent-feltet bruges, hvis man har flere agents kørende. Skal bare være blankt, medmindre man har et mere avanceret setup
  • Under steps kan der tilføjes ét eller flere steps (plusset helt ude til højre)
    • Et step skal enables
    • Kind kan være ‘batch’ eller ‘SQL’. SQL kører noget SQL på databasen, script eksekverer en række kommandoer på serveren.
    • Connection vil typisk være ‘local’, og connection string skal i så fald bare være blank.
    • Databasen vælges
    • Hvad skal der ske hvis steppet fejler? Fail betyder at jobbet stopper med fejl, Succes betyder at det bliver markeret som succesfuldt uanset. Ignore betyder at det bliver markeret som en fejl, men at scriptet fortsætter.
  • Schedule skal sættes op.
    • Den skal have et navn
    • Start og evt. sluttidspunkt skal sættes. Det er så at sige schedulet’s gyldighedsperiode
    • Tidspunkt er lidt finurligt hvordan det skal sættes op. Men hvis noget skal gøres hver søndag kl. 14.00, så vælges Week Days: Sunday, hours: 14 og minutes: 00. Resten forbliver blankt. Man bør nok øve sig lidt, og tjekke op på at det har virket som forventet før man stoler på det.

Troubleshooting

Hvis det ikke helt virker, så tjek følgende:

  • Er stikket sat i? Altså, er både jobbet, steppet og schedule enablet, og er vi inden for schedulets gyldighedsperiode?

  • Prøv at køre kommandoen eller SQL’en på serveren eller i databasen med den relevante bruger. Vær opmærksom på at en script-bruger ikke nødvendigvis har adgang til netværksdrev (det kommer helt an på opsætningen, spørg jeres it-afdeling)

  • Dobbelttjek skemaets gyldighedsperiode

  • Kører pgAgent-agenten?

select * from pgagent.pga_jobagent;

Logs

Man kan se hvordan job og steps har kørt ved at klikke på jobbet eller det individuelle step i pgAdmin og kigge under ‘statistics’-fanen. Status ‘s’ betyder success.

results matching ""

    No results matching ""