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 yanipostgresql.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ölerekpostgresql.conf içinde adreslenebilir. Dosyanın tam ismi verilmezsepostgresql.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ılanpg_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.
