Postgresql-serveren starter ikke. PostgreSql-tjenesten starter ikke

pg_ctl init [ -s ] [ -D datadir] [ -o initdb-indstillinger ]

pg_ctl start [ -w] [ -t sekunder] [ -s ] [ -D datadir] [ -l filnavn] [ -o muligheder] [ -s sti] [ -c ]

pg_ctl stop [ -W] [ -t sekunder] [ -s ] [ -D datadir] [ -m s | f | jeg]

pg_ctl genstart [ -w] [ -t sekunder] [ -s ] [ -D datadir] [ -c ] [ -m s | f | i ] [ -o muligheder ]

pg_ctl genindlæs [ -s ] [ -D datadir ]

pg_ctl status [ -D datadir ]

pg_ctl fremme [ -s ] [ -D datadir ]

pg_ctl dræbe signalnavn proces_id

pg_ctl register [ -N tjenestenavn] [ -U Brugernavn] [ -P adgangskode] [ -D datadir] [ -S a | d ] [ -w ] [ -t sekunder] [ -s ] [ -o muligheder ]

pg_ctl afregistrer [ -N tjenestenavn ]

Serveren starter i starttilstand. Processen kører i baggrunden, og standardinput er forbundet med /dev/null (eller nul på Windows). Som standard skrives serveroutput og fejl på Unix-lignende systemer til standardoutputenheden (ikke fejl) pg_ctl. Outputtet af pg_ctl skal omdirigeres til en fil eller proces, såsom logrotationsapplikationen rotatelogs ; ellers vil postgres skrive output til kontrolterminalen (i baggrunden) og forblive i skalprocesgruppen. På Windows omdirigeres serveroutput og fejl til terminalen som standard. Du kan ændre denne adfærd og dirigere serveroutputtet til en fil ved at tilføje -l switchen. Vi anbefaler at bruge kontakten -l eller omdirigere outputtet.

Brug stop for at stoppe serveren. Du kan stoppe i tre tilstande, specificeret af -m flaget. Standardtilstanden er "Smart", som venter på, at alle aktive klientforbindelser og fjernsikkerhedskopiering er fuldført. Hvis serveren kører i varm standby-tilstand, stopper gendannelse og streaming-replikering, så snart alle klientsessioner er afsluttet. "Hurtig"-tilstand venter ikke på, at klientsessioner lukker og afbryderer. Alle aktive transaktioner rulles tilbage, og klienter tvinges til at afbryde forbindelsen, hvorefter serveren stopper. Den "Øjeblikkelige" tilstand afbryder straks alle processer og stopper serveren, hvilket fører til behovet for at komme sig efter en fejl ved næste start.

For at stoppe og derefter starte serveren bruges genstart. I dette tilfælde er flagene for postgres-kommandoen tilgængelige. genstart virker muligvis ikke, hvis en relativ sti til datalagerbiblioteket blev angivet på kommandolinjen, da serveren blev startet.

For at genlæse konfigurationen (postgresql.conf, pg_hba.conf, etc.), bruges genindlæsning, og postgres-processen modtager SIGHUP-systemsignalet. Dette giver dig mulighed for at anvende ændringer uden helt at genstarte serveren.

For at kontrollere status for klyngen bruges status. Hvis klyngen kører, vil processens PID blive vist, samt en kommando med de argumenter, der blev brugt ved start. Hvis klyngen stoppes, returnerer processen afslutningsstatus 3. Hvis datalagerbiblioteket ikke er angivet, vil processen returnere afgangsstatus 4.

For at skifte standby-serveren til primær tilstand skal du bruge promote . I dette tilfælde holder serveren op med at arbejde i gendannelsestilstand og begynder at arbejde i læse-skrivetilstand.

For at sende et signal til en proces, bruges kill. Dette er især nyttigt i et Microsoft Windows-miljø, der ikke har en kill-kommando i snap-in'en. For en liste over tilgængelige signaler, se --help.

For at registrere som en systemtjeneste under Microsoft Windows, bruges register. -S-flaget indstiller tjenestens starttilstand, enten "auto" (ved OS-start) eller "efterspørgsel" (på anmodning).

For at fjerne en registreret tjeneste i Microsoft Windows, bruges afregistrering.

Muligheder

C
--kerne-fil

På platforme, hvor dette understøttes, vil serveren forsøge at fange hukommelsessnapshots, når der er nedbrud. Dette gør det muligt at diagnosticere og forebygge potentielle problemer i fremtiden. -D datadir
--pgdata datadir

Angiver placeringen af ​​klyngekonfigurationsfilerne. Hvis det ikke er angivet, bruges værdien af ​​PGDATA-miljøvariablen. -l filnavn
--log filnavn

Udsender logdata til filnavn. Filen oprettes, hvis den ikke allerede eksisterer. I dette tilfælde er umasken sat til 077, hvilket forhindrer andre brugere i at få adgang til denne fil. -m mode
--mode mode

Indstiller klyngestoptilstand. mode accepterer værdierne smart , fast , eller immediate , eller det første bogstav i hver tilgængelig værdi, såsom s . Hvis flaget udelades, så bruges smart. -o muligheder

Specificerer de flag, der sendes til postgres.

Værdien skal indrammes med enkelt eller dobbelte anførselstegn at sikre gruppens integritet. -o initdb-indstillinger

Specificerer de flag, der sendes til initdb.

Værdien skal være omgivet af enkelte eller dobbelte anførselstegn for at sikre gruppens integritet. -s sti

Angiver placeringen af ​​postgres-applikationen. Som standard bruges den samme sti, hvor pg_ctl er placeret, eller, hvis dette mislykkes, tages installationsstien. Oftest er der ikke behov for at bruge denne parameter, undtagen i ikke-standardiserede situationer.

init accepterer parametre svarende til initdb. -s
--stille

Vis kun fejl uden informationsmeddelelser. -t
--tiden er gået

Den maksimale tid (i sekunder) til at vente på, at serveren starter eller stopper. Standard er 60 sekunder. -V
--version

Udskriver versionen af ​​pg_ctl og afbryder udførelse. -w

Venter på, at opstart eller nedlukning er fuldført. Dette er standardtilstanden for stop, men ikke start. Under opstartsfasen forsøger pg_ctl kontinuerligt at oprette forbindelse til serveren. Under stopfasen kontrollerer pg_ctl for tilstedeværelsen af ​​en PID-fil. Denne parameter giver dig mulighed for at indstille input af et kontrolord for SSL ved serverstart. pg_ctl returnerer en udgangskode baseret på resultatet af start- eller stopoperationerne. -W

Ignorer at vente på, at serveren starter eller stopper. Denne adfærd er standard for opstarts- og genstartstilstande. -?
--Hjælp

Udskriv hjælp til kommandoen pg_ctl, og afbryd udførelsen.

Windows-specifikke muligheder

N tjenestenavn

Navnet på den systemtjeneste, der skal registreres. Den bruges som system- og displayværdi. -P adgangskode

Adgangskode for den bruger, der starter tjenesten. -S opstartstype

Systemservice opstartstype. Kan tage værdierne: auto , eller demand , eller være repræsenteret af det første bogstav i navnet på hver given værdi. Standard er auto. -U Brugernavn

Det brugernavn, som tjenesten vil blive lanceret under. For domænebrugere skal du bruge notationen DOMAIN\brugernavn.

Jeg forsøger at køre Postgres 9.2.4 som en tjeneste på Windows 7. Efter installation af postgres fungerer tjenesten fint. Men efter at have installeret postgres som en server til et andet program, holdt tjenesten op med at fungere. Når jeg prøver at starte tjenesten nu, får jeg en besked, der:

"Service postgresql-x64-9.2 - PostgreSQL Server 9.2 på lokal computer Computeren startede og stoppede derefter. Nogle tjenester stopper automatisk, hvis de ikke er i brug af andre tjenester eller programmer."

Når jeg prøver at køre et program, der skal bruge en databaseserver, får jeg denne fejl:

"Der opstod et problem under forsøg på at logge ind eller oprette en produktionsdatabase. Detaljer: Kunne ikke oprette forbindelse til serveren; Måske har ikke været i stand til at oprette forbindelse til fjernforbindelsen. Applikationen skulle nu lukke"

Jeg stødte også på denne fejl en gang, da jeg åbnede det samme program:

"Der opstod et problem under forsøg på at logge ind eller oprette en produktionsdatabase. Detaljer: FATAL: Kunne ikke indlæse pg_hba.conf. Applikationen skulle nu lukke."

Jeg forsøgte at starte en tjeneste, der er registreret som lokalt system konto samt min egen konto (i postgres ejendomme ejendomme) til ingen nytte. Jeg prøvede også at genstarte computeren. Efter mange problemer på internettet lærte jeg, at det er godt at tjekke pg_log-filen. Her er indholdet af den sidste pg_log-post:

2013-05-29 14:59:45 MDT LOG: databasesystemet blev afbrudt; sidst kendt 2013-05-29 14:58:01 MDT 2013-05-29 14:59:45 MDT LOG: databasesystemet blev ikke lukket korrekt ned; automatisk gendannelse i gang 2013-05-29 14:59:45 MDT LOG: optagelse med nullængde ved 0/175BB98 2013-05-29 14:59:45 MDT LOG: gentag er ikke påkrævet 2013-05-29 14:59 :45 MDT LOG: databasesystemet er klar til at acceptere forbindelser 2013-05-29 14:59:45 MDT LOG: autovacuum launcher startede 2013-05-29 15:07:00 MDT LOG: lokale forbindelser understøttes ikke af denne build 2013 -05-29 15:07:00 MDT KONTEKST: linje 1 i konfigurationsfilen "C:/PostgreSQL/data/pg_hba.conf" 2013-05-29 15:07:00 MDT FATAL: kunne ikke indlæse pg_hba.conf 2013- 05-29 15:07:00 MDT LOG: lokale forbindelser understøttes ikke af denne build 2013-05-29 15:07:00 MDT KONTEKST: linje 1 i konfigurationsfilen "C:/PostgreSQL/data/pg_hba.conf" 2013 -05-29 15:07:00 MDT FATAL: kunne ikke indlæse pg_hba.conf 2013-05-29 15:09:03 MDT LOG: modtaget hurtig nedlukningsanmodning 2013-05-29 15:09:03 MDT LOG: afbryde evt. aktive transaktioner 2013-05-29 15:09:03 MDT LOG: autovacuum launcher lukker ned 2013-05-29 15:09:03 MDT LOG: lukker ned 2013-05-29 15:09:03 MDT LOG: databasesystemet er lukke ned

Der ser ud til at være problemer med filen pg_hba.conf, som ser sådan ud:

Lokal alle alle trust vært alle alle 127.0.0.1 255.255.255.255 trust host alle alle 0.0.0.0 0.0.0.0 trust

I henhold til adskillige forslag på internettet prøvede jeg at ændre toplinjen til flere forskellige alternativer (alle værter stoler på/værter alle 127.0.0.1/32 stoler på/værter alle 192.168.0.100/24 ​​tillid osv.). Dette gav mening for mig, da logfilen sagde, at lokale forbindelser ikke understøttes af postgres og også pegede på denne linje. Ingen af ​​mine ændringer havde dog nogen effekt. Jeg prøvede at genstarte min computer efter hver ændring, men intet ændrede sig.

Da jeg ledte efter eksempler på, hvordan en pg_hba.conf-fil typisk ser ud, så eksemplerne lidt anderledes ud end min fil. Jeg bemærkede, at der i PostgreSQL-programfilen, udover pg_hba.conf, også var en fil 20130529-150444-old-pg_hba.conf, som lignede meget mere de eksempler, jeg fandt online. Denne fil har flere linjer med kommentarer før disse sidste par linjer:

# TYPE DATABASE BRUGERADRESSE METODE # IPv4 lokale forbindelser: vært for alle alle 127.0.0.1/32 md5 # IPv6 lokale forbindelser: vært alle alle::1/128 md5 # Tillad replikeringsforbindelser fra localhost af en bruger med # replikeringsprivilegiet. #host replikering postgres 127.0.0.1/32 md5 #host replikering postgres::1/128 md5

Jeg håbede, at dette var den originale pg_hba.conf-fil, og hvis jeg erstattede den nye fil med indholdet af den gamle, ville postgres begynde at arbejde igen. Sådan held er der ikke. Jeg håbede, at flere fejlfiler ville blive logget i pg_log-filen for at se, om den tidligere rapporterede fejl var forsvundet, eller om noget havde ændret sig, men der blev ikke logget flere filer.

Jeg søgte efter en onlinetjeneste i dagevis, og intet, jeg fandt, virkede. Beklager dette langt spørgsmål, men jeg ville gerne være grundig og inkludere alle relevante oplysninger. Jeg ville sætte pris på, hvis nogen kunne kaste lys over dette problem eller komme med forslag.

Denne besked er primært beregnet til mig personligt og til vores supportteam, fordi... Et problem, der ligner det, der er beskrevet nedenfor, opstår med misundelsesværdig frekvens, og du skal huske de grundlæggende trin for at løse det.

Så historien begynder med, at jeg den 30. december kl. 11-30 modtog et opkald med en besked om, at en af ​​vores kunder ikke startede vores system, fordi den ikke kunne oprette forbindelse til databasen (vi bruger PostgreSql version 8.1 som et DBMS ). Folk forklarer dette ved at sige, at for en time siden gik lyset ud, og computeren slukkede forkert, og efter at have tændt for den, holdt alt op med at fungere :)

Gode ​​brugere af vores system ved, hvor startknappen er og ved, at der ikke er to ure i systemet, "et med tal og det andet med sand." Derfor var det eneste, jeg kunne gøre over telefonen, at forsøge at starte DBMS-tjenesten manuelt, men resultatet var, at tjenesten ikke startede. Jeg var nødt til at videresende internettet til den computer (på computere, hvor vores internetsystem er installeret, skulle der ikke være det) for at kunne oprette forbindelse via fjernadgang.

Efter tilslutning til fjerncomputer Jeg forsøgte at starte tjenesten og modtog følgende meddelelse: "The PostgreSql Database Server 8.1 service" på "Local Computer" blev startet og derefter stoppet. Nogle tjenester stopper automatisk, hvis de ikke har noget at gøre, såsom tjenesten Performance Logs and Alerts." Hmm...

Problemet er, at på det tidspunkt var dette den eneste tilgængelige information... PostgreSql-logfilerne er tomme, der er ingen poster i dem, og systemloggene er også tomme.

Fejlretningstjenester er ikke en simpel proces, så mange udviklere tilbyder mekanismer til at starte en tjenesteapplikation som en almindelig konsolapplikation ved hjælp af nøgler kommandolinje. Og PostgreSql er ingen undtagelse i denne henseende; for at køre skal du bruge følgende kommando (Tip: denne kommando kan kun køres fra en ikke-administrativ bruger af systemet, men hvis du glemmer dette, vil PostgreSql meget hurtigt minde dig om dette):

postgres -D" "

Vi kører det og ser på fejlmeddelelsen. I mit tilfælde lød beskeden sådan her:

FATAL - falske data i låsefilen "postmaster.pid"

Selvfølgelig var jeg heldig, problemet viste sig at kunne løses. Af en eller anden grund specificeret fil viste sig at være tom, og jeg havde brug for at kopiere indholdet fra en fungerende forekomst af DBMS, hvilket ikke var svært.

Moralen i denne besked er, at hvis databasen er fejlet, eller der er opstået andre problemer med systemet, så før du geninstallerer DBMS (eller hele systemet) og mister alle data, bør du i det mindste prøve at finde ud af, hvad problemet er, måske er der alle chancer for, at du vil være i stand til at gendanne din ydeevne, ikke de samme på radikale måder.

ZY Godt nytår alle sammen og ønsker, at dine systemer er stabile og pålidelige og ikke ødelægger din søvn, men selvom der opstod nogle problemer, havde du altid muligheder klar til at håndtere denne situation.

Denne besked er primært beregnet til mig personligt og til vores supportteam, fordi... Et problem, der ligner det, der er beskrevet nedenfor, opstår med misundelsesværdig frekvens, og du skal huske de grundlæggende trin for at løse det.

Så historien begynder med, at jeg den 30. december kl. 11-30 modtog et opkald med en besked om, at en af ​​vores kunder ikke startede vores system, fordi den ikke kunne oprette forbindelse til databasen (vi bruger PostgreSql version 8.1 som et DBMS ). Folk forklarer dette ved at sige, at for en time siden gik lyset ud, og computeren slukkede forkert, og efter at have tændt for den, holdt alt op med at fungere :)

Gode ​​brugere af vores system ved, hvor startknappen er og ved, at der ikke er to ure i systemet, "et med tal og det andet med sand." Derfor var det eneste, jeg kunne gøre over telefonen, at forsøge at starte DBMS-tjenesten manuelt, men resultatet var, at tjenesten ikke startede. Jeg var nødt til at videresende internettet til den computer (på computere, hvor vores internetsystem er installeret, skulle der ikke være det) for at kunne oprette forbindelse via fjernadgang.

Efter at have oprettet forbindelse til fjerncomputeren, forsøgte jeg at starte tjenesten og modtog følgende besked: "The PostgreSql Database Server 8.1 service" på "Local Computer" blev startet og derefter stoppet. Nogle tjenester stopper automatisk, hvis de ikke har noget at gøre, såsom tjenesten Performance Logs and Alerts." Hmm...

Problemet er, at på det tidspunkt var dette den eneste tilgængelige information... PostgreSql-logfilerne er tomme, der er ingen poster i dem, og systemloggene er også tomme.

Fejlretningstjenester er ikke en simpel proces, så mange udviklere tilbyder mekanismer til at starte en tjenesteapplikation som en almindelig konsolapplikation ved hjælp af kommandolinjeswitche. Og PostgreSql er ingen undtagelse i denne henseende; for at køre skal du bruge følgende kommando (Tip: denne kommando kan kun køres fra en ikke-administrativ bruger af systemet, men hvis du glemmer dette, vil PostgreSql meget hurtigt minde dig om dette):

postgres -D" "

Vi kører det og ser på fejlmeddelelsen. I mit tilfælde lød beskeden sådan her:

FATAL - falske data i låsefilen "postmaster.pid"

Selvfølgelig var jeg heldig, problemet viste sig at kunne løses. Af en eller anden grund viste den angivne fil sig at være tom, og jeg var nødt til at kopiere dens indhold fra en fungerende forekomst af DBMS, hvilket ikke var svært.

Moralen i denne besked er, at hvis databasen er fejlet, eller der er opstået andre problemer med systemet, så før du geninstallerer DBMS (eller hele systemet) og mister alle data, bør du i det mindste prøve at finde ud af, hvad problemet er, at der måske er enhver chance for, at du vil være i stand til at genoprette din funktionalitet på mindre radikale måder.

ZY Godt nytår alle sammen og ønsker, at dine systemer er stabile og pålidelige og ikke ødelægger din søvn, men selvom der opstod nogle problemer, havde du altid muligheder klar til at håndtere denne situation.