Am rulat postgres ca un container Docker de ceva vreme. Inițial, TZ și PGTZ nu au fost setate, așa că cred că era implicit UTC. Pe sistemul meu de dezvoltare am încercat următoarele în docker-compose.yml:
postgres:
imagine: postgres:13
porturi: ["5557:5432"]
reporniți: dacă nu este oprit
volume:
- ./Index:/var/lib/postgresql/data
mediu inconjurator:
TZ: „America/Cayman”
PGTZ: „America/Cayman”
POSTGRES_PASSWORD: „postgres”
și asta pare să facă ajustarea la fusul orar local. Nu am implementat asta într-un sistem live, pentru că mă întreb dacă asta va da peste cap ceva în ceea ce privește istoricul tranzacțiilor DB și fișierele jurnal etc. Integritatea DB este în regulă acum și am o copie de rezervă care se întoarce în multe moduri. Nu sunt sigur că este chiar necesar să setați fusul orar, dar este bine să aveți toate containerele setate la zona locală, mai degrabă decât UTC.
Cealaltă problemă nu are legătură și este oarecum menționată aici: AVERTISMENT: nu s-a putut deschide fișierul de statistici „pg_stat_tmp/global.stat”: operațiunea nu este permisă
Scurt:
Acel index al bazei de date este mapat într-un folder de pe gazdă în rădăcina pachetului Docker și totul pare să funcționeze bine în ceea ce privește baza de date. Folosesc un Mac, dar dacă listez permisiunea de la CLI pentru folderul DB, primesc:
-rw-------@ 1 scotti staff 3 Feb 22 11:01 PG_VERSION
drwx------@ 6 staff scotti 192 22 februarie 11:54 baza
drwx------@ 60 scotti personal 1920 22 februarie 16:00 global
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_commit_ts
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_dynshmem
-rw-------@ 1 scotti staff 4782 Feb 22 11:02 pg_hba.conf
-rw-------@ 1 scotti staff 1636 Feb 22 11:01 pg_ident.conf
drwx------@ 5 scotti staff 160 Feb 22 17:46 pg_logical
drwx------@ 4 scotti staff 128 Feb 22 11:01 pg_multixact
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_notify
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_replslot
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_serial
drwx------@ 2 sscotti staff 64 Feb 22 11:01 pg_snapshots
drwx------@ 2 scotti staff 64 Feb 22 16:00 pg_stat
drwx------@ 5 scotti staff 160 Feb 22 17:50 pg_stat_tmp
drwx------@ 3 scotti staff 96 Feb 22 11:01 pg_subtrans
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_tblspc
drwx------@ 2 scotti staff 64 Feb 22 11:01 pg_twophase
drwx------@ 4 scotti staff 128 Feb 22 11:01 pg_wal
drwx------@ 3 scotti staff 96 Feb 22 11:01 pg_xact
-rw-------@ 1 scotti staff 88 Feb 22 11:01 postgresql.auto.conf
-rw-------@ 1 scotti staff 28073 Feb 22 11:01 postgresql.conf
-rw-------@ 1 scotti staff 36 Feb 22 16:00 postmaster.opts
-rw------- 1 scotti staff 94 Feb 22 16:00 postmaster.pid
Dosarul pg_stat este de fapt gol.
și pg_stat_temp are:
-rw------- 1 scotti staff 1952 Feb 22 17:54 db_0.stat
-rw------- 1 scotti staff 20360 Feb 22 17:54 db_13395.stat
-rw------- 1 scotti staff 1151 Feb 22 17:54 global.stat
Problema pare să fie că fișierele DB sunt legate la un folder local de pe gazdă, mai degrabă decât la un volum Docker. Este mult mai convenabil să îl legați la un folder local ușor accesibil de la gazdă, dar cred că există unele probleme de permisiuni legate de asta. S-ar putea să vreau de fapt să trec la un volum, dar volumul trebuie să fie în continuare persistent și să facă backup cu ușurință pe un serviciu NAS local sau Cloud pe care îl folosim pentru backup.
Cu Docker Desktop pentru MacOS, pare să existe o mică afectare a performanței folosind foldere legate mai degrabă decât volume, dar pe LINUX nu pare să cauzeze o problemă, deși avertismentul „fișier cu statistici” apare și acolo.
Mulțumiri.