sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man loggar frågor i PostgreSQL

  • Hitta konfigurationsfilen
    • Leta reda på datakatalogsökvägen
  • Konfigurera PostgreSQL för att generera loggutdata
    • Starta om PostgreSQL-tjänsten
  • Verifierar logggenerering

Att aktivera loggning inom PostgreSQL görs ganska enkelt genom att ändra en handfull konfigurationsinställningar och sedan starta om servern. Även om dessa inställningar kan ändras "i minnet" och därigenom möjliggör tillfällig loggning för endast den specifika klientsessionen, kommer vi i den här handledningen att täcka hur man konfigurerar postgres för att permanent skapa iterativa loggfiler för alla sessioner och anslutningar.

Hitta konfigurationsfilen

Om du är osäker på var postgresql.conf config-filen finns, den enklaste metoden för att hitta platsen är att ansluta till postgres-klienten (psql ) och utfärda SHOW config_file; kommando:

postgres=# SHOW config_file;
               config_file
------------------------------------------
 /etc/postgresql/9.3/main/postgresql.conf

I det här fallet kan vi se sökvägen till postgresql.conf filen för denna server är /etc/postgresql/9.3/main/postgresql.conf . Öppna bara den filen med din favorittextredigerare så kan vi börja ändra inställningarna:

$ nano /etc/postgresql/9.3/main/postgresql.conf

Hitta sökvägen till datakatalogen

Det är också en bra idé att bekräfta sökvägen till data katalog för din postgres-installation. Detta kommer att vara användbart senare, och att hämta sökvägen är en fråga om en annan enkel SHOW uttalande:

postgres=# SHOW data_directory;
        data_directory
------------------------------
 /var/lib/postgresql/9.3/main

På vissa installationer, konfigurationsfilen och data katalogen kommer att ligga längs samma väg, medan de i andra (som det här exemplet) är olika. Hur som helst, kopiera ned denna data katalogsökväg för senare användning.

Konfigurera PostgreSQL för att generera loggutdata

Med postgresql.conf fil öppnas, scrolla ned till ERROR REPORTING AND LOGGING avsnitt och du kommer sannolikt att se ett antal konfigurationsalternativ kommenterade. De mest kritiska av dessa inställningar är log_destination och logging_collector . Nedan finns de rekommenderade inställningarna, men ändra gärna dessa för att passa dina egna behov:

#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------

# - Where to Log -

log_destination = 'csvlog'              # Valid values are combinations of
                                        # stderr, csvlog, syslog, and eventlog,
                                        # depending on platform.  csvlog
                                        # requires logging_collector to be on.

# This is used when logging to stderr:
logging_collector = on          # Enable capturing of stderr and csvlog
                                        # into log files. Required to be on for
                                        # csvlogs.
                                        # (change requires restart)

# These are only used if logging_collector is on:
log_directory = 'pg_log'                # directory where log files are written,
                                        # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
                                        # can include strftime() escapes

Här säger vi till postgres att skapa loggar i CSV formatera och mata ut dem till pg_log katalogen (inom data katalog). Vi har också avkommenterat log_filename inställning för att skapa ett eget namn inklusive tidsstämplar för loggfilerna.

Du kan hitta detaljerad information om alla dessa inställningar i den official documentation .

Starta om PostgreSQL-tjänsten

Det sista steget är att starta om PostgreSQL-tjänsten så att dessa inställningar, särskilt logging_collector , träder i kraft. Att utföra en postgres-omstart kommer att skilja sig från system till system, men vanligtvis för ett unix-system ser kommandot ut ungefär så här:

$ service postgresql restart
 * Restarting PostgreSQL 9.3 database server                               [ OK ]

Verifiera logggenerering

När systemet har startat om bör loggning börja omedelbart. För att säkerställa att så är fallet, navigera till data/pg_log katalogen för din postgres-installation. Kom ihåg att vi tog tag i data katalogsökväg tidigare, så navigera helt enkelt till den katalogen genom att lägga till /pg_log till slutet för att komma in i loggkatalogen:

$ cd /var/lib/postgresql/9.3/main/pg_log

Lista nu filerna och du bör se att en loggfil har skapats efter den tidigare omstarten av tjänsten:

$ ls -l
-rw------- 1 postgres postgres 935 Apr 13 20:30 postgresql-2016-04-13_203022.csv

Där har vi det; automatiskt genererade loggfiler aktiveras med PostgreSQL genom att bara ändra några konfigurationsinställningar.


  1. Vilka effekter har användningen av en binär sammanställning?

  2. Vilka är skillnaderna mellan ett klustrat och ett icke-klustrat index?

  3. Hur UTC_DATE() fungerar i MariaDB

  4. Migrera databas från Postgres till MySQL