Parametreler ve Değerleri

vim /pg/data/13.6/postgresql.conf

listen_addresses = '192.168.56.61,localhost'

port= 5432

log_connections = yes

log_destination = ‘stderr’

search_path = '"$user", public'

shared_buffers = 128MB

datestyle = 'iso, mdy'

timezone = 'Europe/Istanbul'

#Yapılan değişikliklerin bir kısmı, instance ı kapatıp açmadan reload ile aktif olur.


postgres@srv1:~$ pg_ctl reload

veya

psql

postgres=# select pg_reload_conf();

Bütün parametre isimleri büyük küçük harfe duyarlıdır.
Parametrelerin aldığı veri tipleri;
Boolean : On, off, true, false, yes, no, 1, 0 değerlerini alabilen veri tipi.
String : Metin veri tipi.
Numeric : Basamak tanımlanabilen sayısal veri tipi.
Numeric with Unit : B, kB, 32MB, 16GB, TB, us, ms, s, min, h, d gibi.
Enumerated : Değerler dizisi, günler aylar vb.

postgres=# alter system set shared_buffers = '256MB' ;
postgres=# select sourcefile, name, setting from pg_file_settings;

sourcefile | name | setting
---------------------------+----------------------------+-------
../postgresql.conf |port | 5432
../postgresql.conf |max_connections | 100
../postgresql.conf |shared_buffers | 128MB
../postgresql.conf |dynamic_shared_memory_type | posix
../postgresql.conf |max_wal_size | 1GB
../postgresql.conf |min_wal_size | 80MB
../postgresql.conf |log_timezone | Europe/Istanbul
../postgresql.conf |datestyle | iso, mdy
../postgresql.conf |timezone | Europe/Istanbul
../postgresql.conf |lc_messages | en_US.UTF-8
../postgresql.conf |lc_monetary | en_US.UTF-8
../postgresql.conf |lc_numeric | en_US.UTF-8
../postgresql.conf |lc_time | en_US.UTF-8
../postgresql.conf |default_text_search_config | pg_catalog.english
../postgresql.auto.conf | shared_buffers | 256MB
(15 rows)

postgresql.auto.conf dosyasının manuel ya da diğer uygulamalar tarafından
değiştirilmesi önerilmez. Sadece alter system set ile müdahale edilmelidir.
Böylece ne zaman ne değiştirilmiş pg_file_settings view’ ından izlenebilir ve bir
sorun durumunda hızlıca müdahale edilebilir.

Parametrelerin SQL Üzerinden Değiştirilmesi ve Sorgulanması

ALTER SYSTEM               # Sistem genelinde etkinlik kazanır.
#Veritabanı seviyesindeki ayarlardır. Sistem ayarlarından baskındır.

ALTER DATABASE
# Role seviyesindeki ayarlardır. En üstteki diğer ikisinden
 baskındır.

ALTER ROLE
# Parametreyi defaulta çeker.

ALTER SYSTEM RESET configuration_parameter;
ALTER SYSTEM RESET ALL;    # Tüm sistemi default değerlere çeker.
show all ;                 # Tüm ayarları gösterir.
show shared_buffers ;      # Sadece shared buffers’ ı ekrana döker.

SQL komutları ile pg_settings sorgulanarak daha detaylı bilgi alınabilir.

Örnek;

postgres=# alter system set work_mem='32MB';

select pending_restart from pg_settings where name = 'work_mem';
pending_restart
-----------------

f -> Restart bekleyen parametreler bu şekilde görülebilir.

postgres=# show work_mem ;
work_mem
----------
4MB

postgres=# select pg_reload_conf();
pg_reload_conf
----------------
t

postgres=# show work_mem ;
work_mem
----------
32MB

Parametrelerin Shell Üzerinden Değiştirilmesi

postgres -c log_connections=yes -c log_destination= 'syslog'

... [5661] LOG: ending log output to stderr
... [5661] HINT: Future log output will go to log destination "syslog".
………
env PGOPTIONS=”-c work_mem=1GB -c commit_delay=1min” psql

Instance kapalı ve konfigurasyon dosyalarında log_connections parametresi
off olduğu sırada, instance açılırken parametrelerde değişiklik yapılabilir. Bu
şekilde verilen değerler postgresql.conf dosyasından baskındır yani
postgresql.conf’deki ayarları ezer.
env PGOPTIONS ile oturuma özel değerler tanımlanabilir.

Konfigurasyon Dosyasının İçeriğini Yönetme

include ‘shared.conf’
include ‘memory.conf’
include ‘server.conf’
include_dir ‘conf.d’

# Örnek klasör içeriği

00shared.conf
01memory.conf
02server.conf

Kompleks birçok parametre bulunuyorsa bunları farklı dosyalara bölerek
postgresql.conf içinde adreslenebilir. Dosyanın tam ismi verilmezse
postgresql.conf dosyasının bulunduğu dizinde olduğunu varsayar.
Aynı şekilde konfigurasyon dosyalarını barındıran dizin de adreslenebilir.

Dosya Konumları

postgres=# select name, setting from pg_settings
where name in
(‘data_directory’,
‘config_file’,
‘hba_file’,
‘ident_file’,
‘external_pid_file’);

name             |  setting
-------------------+-------------------------------
config_file      | /pg/data/13.6/postgresql.conf
data_directory   | /pg/data/13.6
external_pid_file|
hba_file         | /pg/data/13.6/pg_hba.conf
ident_file       | /pg/data/13.6/pg_ident.conf

postgresql.conf : konfigurasyon dosyasından da lokasyonları görüntülemek ve
değiştirmek mümkündür.
data_directory : Data dosyalarının yerini adresler. Bu parametre sadece
instance’ın açılışında ayarlanabilir.
config_file : Ana konfigurasyon dosyasının (postgresql.conf) yerini adresler. Sadece postgres komutu ile açılışta kullanılabilir.
hba_file : (host based authentication) Host temelli doğrulama için kullanılan
pg_hba.conf konfigurasyon dosyasının yerini adresler. Sadece instance’ın
başlatılması sırasında ayarlanabilir.
ident_file : İşletim sistemi ile veritabanı kullanıcılarının eşleştirilmesi için
kullanılan pg_ident.conf dosyasının yerini adresler. pg_ident.conf dosyasının
yeri de sadece instance’ın başlatılması sırasında belirtilebilir.
external_pid_file : Yönetimsel işler için oluşturulan ek prosesin ismini verir.
Sadece instance’ın başlatılması sırasında ayarlanabilir.

Kategori seçin...