Spis Treści
Instalacja oraz konfiguracja serwera PostgreSQL
Silnik bazy danych alternatywny do mySQL. Wykorzystywany głównie dla:
system antyspamowy dspam
system antyspamowy amavisd
obsługa webmaila Round Cube
baza danych dla drupal
Instalacja
Korzystając z własnego repozytorium pakietów, to należy wykonać:
# wersja 16
pkg install -Uy databases/postgresql16-server
Pakiet postgresql-client zostanie doinstalowany automatycznie
Rozbudowa /etc/login.conf
Od wersji 9.x postgresql ma ustawione w skrypcie startowym:
postgresql_class="postgres"
Konieczne jest zatem dopisanie do /etc/login.conf następujących wierszy:
postgres:\
:lang=en_US.UTF-8:\
:setenv=LC_COLLATE=C:\
:tc=default:a następnie przebudowa bazy danych cap_mkdb:
cap_mkdb /etc/login.conf
PostgreSQL 9.x
Partycja zfs
zfs create -o compress=off sys/data/u/local/pgsql
chmod 0700 /usr/local/pgsql
chown pgsql:pgsql /usr/local/pgsql
PostgreSQL 11+
Partycja zfs
zfs create -o compress=off sys/data/v/db/postgres
chmod 0700 /var/db/postgres
chown postgres:postgres /var/db/postgres
Konfiguracja
Ustawienia dla skryptu startowego
Z wykorzystaniem repozytorium konfiguracji należy ew. zmodyfikować ustawienia w pliku /etc/rc.conf.d/postgres dla katalogu z bazami
Inicjalizacja bazy danych
service postgresql initdb
Podmiana kodowania (bytea)
UWAGA
Podmiana bytea z hex na escape jest potrzebne przez mailzu. Jest to tylko i wyłącznie kodowanie na wyjściu (SELECT??). Jest to dokładnie opisane w dokumentacji Postgres-a. Być może można tego nie ruszać, jeżeli nie ma potrzeby.
--- /var/db/postgres/data16/postgresql.conf.install 2024-10-25 10:25:09.216639000 +0200
+++ /var/db/postgres/data16/postgresql.conf 2024-10-25 10:26:30.842746000 +0200
@@ -215,7 +215,7 @@ dynamic_shared_memory_type = posix # the default is us
# unrecoverable data corruption)
#synchronous_commit = on # synchronization level;
# off, local, remote_write, remote_apply, or on
-#wal_sync_method = fsync # the default is the first option
+wal_sync_method = fdatasync # the default is the first option
# supported by the operating system:
# open_datasync
# fdatasync (default on Linux and FreeBSD)
@@ -225,7 +225,7 @@ dynamic_shared_memory_type = posix # the default is us
#full_page_writes = on # recover from partial page writes
#wal_log_hints = off # also do full page writes of non-critical updates
# (change requires restart)
-#wal_compression = off # enables compression of full-page writes;
+wal_compression = zstd # enables compression of full-page writes;
# off, pglz, lz4, zstd, or on
#wal_init_zero = on # zero-fill new WAL files
#wal_recycle = on # recycle WAL files
@@ -482,8 +482,8 @@ log_destination = 'syslog'
# in all cases.
# These are relevant when logging to syslog:
-#syslog_facility = 'LOCAL0'
-#syslog_ident = 'postgres'
+syslog_facility = 'LOCAL3'
+syslog_ident = 'postgres'
#syslog_sequence_numbers = on
#syslog_split_messages = on
@@ -705,7 +705,7 @@ log_timezone = Poland
#vacuum_multixact_freeze_table_age = 150000000
#vacuum_multixact_freeze_min_age = 5000000
#vacuum_multixact_failsafe_age = 1600000000
-#bytea_output = 'hex' # hex, escape
+bytea_output = 'escape' # hex, escape
#xmlbinary = 'base64'
#xmloption = 'content'
#gin_pending_list_limit = 4MB
Kompatybilność wstecz - bytea a wersja dspam
Po długim szukaniu udało się znaleźć różnicę w obsłudze bytea pomiędzy PostgreSQL9.0 a wyższymi. Chodzi o parametr standard_conforming_strings, który od wersji PostgreSQL9.1 jest domyślnie ustawiony na wartość on. Trzeba jeszcze doczytać w konfiguracji, jakie są konsekwencje zmiany tego parametru na wartość off. Jeżeli jedyną bazą danych jest dspam, to może nie mieć to znaczenia, ale trzeba mieć na uwadze przy kolejnych upgrade-ach zarówno bazy danych jak i dspam.
Źródła w sieci internet
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

[[||target="_blank"]]
[[||target="_blank"]]
[[||target="_blank"]]