Hata Raporlama ve Logging
Where to Log
log_destination
log_destination
listesi csvlog içeriyorsa; günlük kayıtları, günlükleri programlara yüklemek için uygun olan virgülle ayrılmış değerler (comma separated value-CSV) formatında yazılır. Ayrıntılar için CSV-Format Log Çıktısı Kullanma bölümüne bakın. CSV formatında günlük çıktısı oluşturmak için logging_collector
etkinleştirilmelidir.log_destination
listesi stderr veya csvlog içerdiğinde; logging collector tarafından kullanımda olan günlük dosyalarının konumunu ve ilişkili günlük kaydı hedefini kaydetmek için current_logfiles
dosyası oluşturulur. Bu, veritabanı tarafından kullanımda olan günlükleri bulmak için kullanışlı bir yol sağlar. Bu dosyanın içeriğinin bir örneği:stderr log/postgresql.log
csvlog log/postgresql.csv
current_logfiles
, rotasyonun bir etkisi olarak yeni bir günlük dosyası oluşturulduğunda ve log_destination
yeniden yüklendiğinde tekrar oluşturulur. current_logfiles
, log_destination
stderr veya csvlog içermediğinde ve logging collector devre dışı bırakıldığında kaldırılır.LOCAL0
‘dan LOCAL7
‘ye kadar syslog facility kullanabilir, ancak çoğu platform bu gibi mesajları yok sayar. Çalışmasını sağlamak için syslog daemon yapılandırma dosyasına şu şekilde ekleme yapmanız gerekir:local0. */var/log/postgresql
logging_collector
archive_command
gibi komut dosyaları tarafından üretilen hata mesajları genel örneklerdir. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir. log_directory
logging_collector
etkinleştirildiğinde günlük dosyalarının oluşturulacağı dizini belirler. Mutlak bir yol olarak veya küme veri dizinine ( data directory ) göre belirtilebilir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. Öntanımlı değeri log
‘dur. log_filename
logging_collector
etkinleştirildiğinde oluşturulan günlük dosyalarının adlarını ayarlar. Değer strftime
kalıbı olarak işlenir. Zamanla değişen dosya adları %
kaçışları ile belirtilir. Saat dilimine bağlı %
kaçışları varsa, hesaplama log_timezone
ile belirtilen bölgede yapılır. Doğrudan sistemin strft
zamanı kullanılmadığı için platform spesifik uzantıları çalışmaz. Varsayılan, postgresql-%Y-%m-%d_%H%M%S.log
şeklindedir.log_destination
‘da CSV formatında çıktı etkinleştirildiğinde zaman damgalı günlük dosyası adına .csv
eklenir.Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.
log_file_mode
logging_collector
etkinleştirildiğinde, Unix sistemlerde günlük dosyalarının izinlerini ayarlar. (Windows’da bu parametre yoksayılır.) Parametre değerinin, chmod
ve umask
sistem çağrıları tarafından kabul edilen formatta sayısal bir mod olması beklenir.Varsayılan izinler
0600
‘dır, yani yalnızca sunucu sahibi günlük dosyalarını okuyabilir ve yazabilir. Bir diğer yaygın kullanım ayarı 0640
‘tır ve sahip grubunun üyelerinin dosyaları okumasına izin verir. Böyle bir ayarı kullanmak için ve dosyaları küme veri dizininin dışında bir yerde depolamak için log_directory
‘yi değiştirmeniz gerekecektir. Her durumda, hassas veriler içerdiği için günlük dosyalarını herkes tarafından okunabilir hale getirmek akıllıca değildir.Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.
log_rotation_age
logging_collector
etkinleştirildiğinde tek bir günlük dosyasının maksimum kullanım süresini belirler ve bu değerden sonra yeni bir günlük dosyası oluşturulur. Bu değer birimsiz belirtilirse dakika olarak alınır. Varsayılan 24 saattir. Yeni günlük dosyalarının zamana dayalı olarak oluşturulmasını devre dışı bırakmak için 0 olarak ayarlayın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. log_rotation_size
logging_collector
etkinleştirildiğinde tek bir günlük dosyasının maksimum boyutunu belirler. Bu miktarda veri bir günlük dosyasına gönderildikten sonra, yeni bir günlük dosyası oluşturulacaktır. Bu değer birimsiz belirtilirse kilobayt olarak alınır. Öntanımlı değeri 10 megabayttır. Yeni günlük dosyalarının boyuta dayalı olarak oluşturulmasını devre dışı bırakmak için 0 olarak ayarlayın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. log_truncate_on_rotation
logging_collector
etkinleştirildiğinde PostgreSQL günlük dosyalarına ekleme yapmak yerine mevcut günlük dosyasını truncate (üzerine yazmak) eder. Truncate yalnızca zamana dayalı rotasyon sebepli yeni dosya açılırken meydana gelir, sunucu başlangıcında veya boyuta dayalı rotasyon sırasında değil. Kapalı olduğunda, var olan dosyalara her durumda ekleme yapılacaktır. Örneğin, bu ayarı postgresql-%H.log
gibi bir log_filename
ile birlikte kullanılması 24 saatlik günlük dosyalarının oluşturulup ve döngüsel olarak bunların üzerine yazılmasıyla sonuçlanır. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.Örnek: 7 günlük
server_log.Mon
, server_log.Tue
, vb. şekilde günlük dosyaları tutmak ve geçen haftanın günlüğünün üzerine bu haftanın günlüğünü otomatik olarak yazmak için, log_filename
değerini server_log.%a
, log_truncate_on_rotation = on
ve log_rotation_age = 1440
olarak ayarlayın.Örnek: Her saatte bir günlük dosyası olarak 24 saatlik günlükler ve günlük dosyası boyutu 1 GB’ı aşarsa daha erken rotasyon için
log_filename
değerini server_log.%H%M
, log_truncate_on_rotation = on
, log_rotation_age = 60
ve log_rotation_size = 1000000
olarak ayarlayın. log_filename
‘in %M
içermesi, meydana gelebilecek boyuta dayalı rotasyonlarda mevcut saatlik dosya adından farklı bir dosya adı seçmek içindir. syslog_facility
LOCAL0
, LOCAL1
, LOCAL2
, LOCAL3
, LOCAL4
, LOCAL5
, LOCAL6
, LOCAL7
arasından seçim yapabilirsiniz. Öntanımlı değeri LOCAL0
‘dır. Ayrıca sisteminizin syslog daemon belgelerine bakın. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. syslog_ident
postgres
‘tir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. syslog_sequence_numbers
on
(varsayılan) ise her mesajın önüne artan bir sıra numarası eklenir ([2] gibi). Bu, birçok syslog uygulamasının varsayılan olarak gerçekleştirdiği ‘— last message repeated N times —’ bastırmasını engeller. Daha modern syslog uygulamalarında tekrarlanan mesaj bastırma yapılandırılabildiğinde bu gerekli olmayabilir. Tekrarlanan mesajları bastırmak istiyorsanız bunu kapatabilirsiniz.Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.
syslog_split_messages
on
(varsayılan) ayarında, mesajlar satırlara bölünür ve uzun satırlar, geleneksel syslog uygulamaları için tipik boyut sınırı olan 1024 bayta sığacak şekilde bölünür. off
ayarında, PostgreSQL sunucusu günlük mesajları syslog servisine olduğu gibi teslim edilir ve büyük mesajlarla başa çıkmak syslog servisine bırakılır.Eğer syslog bir metin dosyasına kaydediliyorsa etki her iki şekilde de aynı olacaktır ve çoğu syslog uygulaması büyük iletileri işleyemeyeceği veya bunları işlemek için özel olarak yapılandırılması gerekeceği için en iyisi ayarı açık bırakmaktır. syslog nihayetinde başka bir ortama yazıyorsa, mesajları mantıksal olarak bir arada tutmak gerekli veya daha yararlı olabilir.
Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.
event_source
PostgreSQL
‘dir. Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.When to Log
log_min_messages
DEBUG5
, DEBUG4
, DEBUG3
, DEBUG2
, DEBUG1
, INFO
, NOTICE
, WARNING
, ERROR
, LOG
, FATAL
ve PANIC
‘dir. Her seviye, onu takip eden tüm seviyeleri kapsar. Seviye ne kadar düşük olursa, günlüğe o kadar az mesaj gönderilir. Varsayılan, WARNING
‘dır. LOG
‘un burada client_min_messages‘dakinden farklı bir sıralamada olduğunu unutmayın. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_min_error_statement
DEBUG5
, DEBUG4
, DEBUG3
, DEBUG2
, DEBUG1
, INFO
, NOTICE
, WARNING
, ERROR
, LOG
, FATAL
ve PANIC
‘dir. Varsayılan ERROR
‘dır. Bu hataya, günlük mesajlarına, fatal error’lara ve paniklere neden olan SQL ifadelerinin günlüğe kaydedileceği anlamına gelir. Başarısız ifadelerin günlüğe kaydedilmesini kapatmak için bu parametreyi PANIC
olarak ayarlayın. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_min_duration_statement
Bu parametre,
log_min_duration_sample
parametresini geçersiz kılar, yani bu ayarı aşan süreye sahip sorgular örneklemeye tabi değildir ve her zaman günlüğe kaydedilir.Genişletilmiş sorgu protokolü kullanan istemciler için Parse, Bind ve Execute adımlarının süreleri bağımsız olarak günlüğe kaydedilir.
log_statement
ile birlikte kullanırken, log_statement
nedeniyle günlüğe kaydedilen ifadeler süre günlüğü mesajında tekrarlanmayacaktır. log_min_duration_sample
log_statement_sample_rate
tarafından kontrol edilen örnekleme oranıyla yürütülen ifadelerin bir alt kümesi için log_min_duration_statement
ile aynı türden günlük girişleri üretir. Örneğin, 100 ms ayarları, 100 ms ve daha uzun süre çalışan tüm SQL ifadeleri örnekleme için dikkate alacaktır. Bu parametrenin etkinleştirilmesi, tüm sorguları günlüğe kaydedemeyecek kadar yüksek trafik olduğunda faydalı olabilir. Bu değer birimsiz belirtilirse milisaniye olarak alınır. Bunu 0 olarak ayarlamak tüm ifade sürelerini örnekler. -1 (varsayılan) örnekleme ifadesi sürelerini devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.Bu ayar,
log_min_duration_statement
‘tan daha düşük önceliğe sahiptir. log_min_duration_statement
‘ı aşan süredeki ifadeler örneklemeye tabi değildir ve her zaman günlüğe kaydedilir.log_min_duration_statement
için verilen notlar bu ayar için de geçerlidir. log_statement_sample_rate
log_min_duration_sample
‘ı aşan süredeki ifadelerin oranını belirler. Örnekleme stokastiktir; örneğin 0.5, istatistiksel olarak herhangi bir ifadenin günlüğe kaydedilme ihtimalinin 1/2 olduğu anlamına gelir. Varsayılan değer 1.0’dır, tüm örneklenmiş ifadeler günlüğe kaydedilir. Bunu 0 olarak ayarlamak örneklenmiş ifade süresi günlük kaydını devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_transaction_sample_rate
log_transaction_sample_rate
, transaction’ların örneğini oluşturmada yardımcı olabilir. Varsayılan 0’dır, herhangi bir ek transaction’dan gelen ifadelerin günlüğe kaydedilmemesi anlamına gelir. Bunu 1 olarak ayarlamak, tüm transaction’ların tüm ifadelerini günlüğe kaydeder. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.Aşağıda verilen tabloda, PostgreSQL tarafından kullanılan mesaj önem seviyeleri açıklanmıştır. Günlük çıktısı, syslog veya Windows olay günlüğüne gönderilirdiğinde önem seviyeleri tabloda gösterildiği şekilde çevrilir.
Seviye | Kullanım | syslog | eventlog |
---|---|---|---|
DEBUG1 .. DEBUG5 | Geliştiriciler tarafından kullanılmak üzere sırayla daha ayrıntılı bilgi sağlar. | DEBUG | INFORMATION |
INFO | Kullanıcı tarafından dolaylı olarak talep edilen bilgileri sağlar. ör, VACUUM VERBOSE çıktısı. | INFO | INFORMATION |
NOTICE | Kullanıcılara yardımcı olabilecek bilgiler sağlar. ör, uzun tanımlayıcıların truncation’ına dair bildirim. | NOTICE | INFORMATION |
WARNING | Olası sorunlara ilişkin uyarılar verir. | NOTICE | WARNING |
ERROR | Mevcut komutun iptal edilmesine neden olan hatayı bildirir. | WARNING | ERROR |
LOG | Yöneticilere ilgilendikleri bilgileri raporlar. ör, checkpoint aktivitesi | INFO | INFORMATION |
FATAL | Mevcut oturumun iptal edilmesine neden olan hatayı bildirir. | ERR | ERROR |
PANIC | Tüm veritabanı oturumlarının iptal edilmesine neden olan hatayı bildirir. | CRIT | ERROR |
What to Log
application_name
NAMEDATALEN
sabitinden daha az karakterde herhangi bir string olabilir (standart build’de 64 karakter). Genellikle sunucuya bağlanan uygulama tarafından ayarlanır. Bu isim, pg_stat_activity
view’ında görüntülenecek ve CSV günlük girişlerine dahil edilecektir. log_line_prefix
parametresi ile normal günlük girişlerine de dahil edilebilir. Bu parametre değerinde yalnızca yazdırılabilir ASCII karakterleri kullanılabilir. Diğer karakterler soru işaretleriyle (?) değiştirilecektir. debug_print_parse (boolean) / debug_print_rewritten (boolean) / debug_print_plan (boolean)
LOG
mesajı seviyesinde yayınlanır ve sunucu günlüğünde görünürler ancak istemciye gönderilmezler. Bunu, client_min_messages
ve / veya log_min_messages
ayarlayarak değiştirebilirsiniz. Bu parametreler varsayılan olarak kapalıdır. debug_pretty_print
debug_pretty_print
, debug_print_parse
, debug_print_rewritten
ve debug_print_plan
tarafından üretilen mesajları girintiler. Bu parametre kapalıyken sağlanan ‘kompakt’ format daha okunabilirdir ancak çok daha uzun çıktılar verir. Varsayılan olarak açıktır. log_checkpoints
log_connections
log_disconnections
log_connections
ile benzer olmakla birlikte oturum süresini de içerir. Bu parametre yalnızca süper kullanıcılar tarafından oturum başlangıcında değiştirebilir ve bir oturum içinde hiç değiştirilemez. Varsayılan olarak kapalıdır. log_duration
Extended sorgu protokolü kullanan istemciler için Parse, Bind ve Execute adım süreleri bağımsız olarak günlüğe kaydedilir.
log_error_verbosity
TERSE
, DEFAULT
ve VERBOSE
‘dur. Her biri görüntülenen mesajlara daha fazla alan ekler. TERSE
; DETAIL
, HINT
, QUERY
ve CONTEXT
hata bilgilerinin günlüğe kaydını dahil etmez. VERBOSE
çıktısı, SQLSTATE
hata kodunu ve hatayı oluşturan kaynak kod dosyası adını, işlev adını ve satır numarasını içerir. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_hostname
log_line_prefix
%
karakterleri, aşağıda verilen durum bilgisiyle değiştirilen ‘kaçış dizileri’ (escape sequences) başlar. Tanınmayan kaçışlar yok sayılır. Diğer karakterler doğrudan günlük satırına kopyalanır. Bazı kaçışlar yalnızca oturum süreçleri tarafından tanınır ve ana sunucu süreci gibi background süreçler tarafından boş olarak değerlendirilir. Durum bilgileri, %
ve opsiyondan arasında sayısal değişmez bir değer verilerek sola ve sağa hizalanabilir. Negatif bir değer, durum bilgisinin sağını boşlukla doldurarak minimum uzunluk sağlarken, pozitif değer solu boşluklarla doldurur. Doldurma, günlük dosyalarının okunabilirliği için kullanılabilir.Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir. Varsayılan değer, bir zaman damgası ve süreç ID kaydeden
%m [%p]
‘dir.Kaçış | Etki | Session only |
---|---|---|
%a | Uygulama adı | yes |
%u | Kullanıcı adı | yes |
%d | Veri tabanı adı | yes |
%r | Uzak host adı veya IP adresi ve uzak port | yes |
%h | Uzak host adı veya IP adresi | yes |
%b | Backend tipi | no |
%p | Süreç ID | no |
%t | Milisaniyesiz zaman damgası | no |
%m | Milisaniyeli zaman damgası | no |
%n | Milisaniyeli zaman damgası ( Unix epoch olarak) | no |
%i | Komut etiketi: oturumun mevcut komut türü | yes |
%e | SQLSTATE hata kodu | no |
%c | Oturum ID: aşağıdaki açıklamaya bakın | no |
%l | Her oturum ve süreç için günlük satırının numarası, 1’den başlar. | no |
%s | Süreç başlangıç zaman damgası | no |
%v | Sanal işlem kimliği (backendID/localXID) | no |
%x | Transaction ID (atanmamışsa 0) | no |
%q | Çıktı üretmez, oturum dışı süreçlere dizenin bu noktasında durmasını söyler, oturum süreçleri tarafından yok sayılır. | no |
%% | Gerçek % | no |
pg_stat_activity
view’ındaki ‘backend_type’ sütununa karşılık gelir. Günlükte, bu view’da gösterilmeyen ek türler görünebilir.%c
kaçışı, noktayla ayrılmış iki 4 baytlık hexadecimal sayıdan oluşan, neredeyse benzersiz bir oturum tanımlayıcısı yazdırır. Sayılar süreç başlama zamanı ve süreç ID’dir, bu nedenle %c
bu öğeleri yazdırmanın alan tasarrufu sağlayan bir yoludur. Örneğin, pg_stat_activity’den oturum tanımlayıcısını oluşturmak için şu sorguyu kullanın:SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' || to_hex(pid)
FROM pg_stat_activity;
log_lock_waits
deadlock_timeout
süresinden daha uzun süre beklediğinde bir günlük mesajı üretilip üretilmeyeceğini kontrol eder. Bu parametre, kilit beklemelerinin düşük performansa neden olup olmadığını belirlenirken kullanışlıdır. Varsayılan olarak kapalıdır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_parameter_max_length
0
, bağlama parametrelerinin günlüğe kaydedilmesini devre dışı bırakır. -1
(varsayılan), bağlama parametrelerinin olduğu gibi kaydedilmesine izin verir. Bu değer birimsiz belirtilirse bayt olarak alınır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir.Bu ayar yalnızca
log_statement
, log_duration
ve ilgili ayarların bir sonucu olarak yazdırılan günlük mesajlarını etkiler. Bu ayarın 0
olmayan değerleri, özellikle parametreler binary formda gönderildiyse, metne dönüştürme gerekli olduğundan bazı ek yükler getirir. log_parameter_max_length_on_error
0
(varsayılan), hata mesajlarına bağlama parametrelerinin dahil edilmesini devre dışı bırakır. -1
, bağlama parametrelerinin tam olarak yazdırılmasına izin verir. Bu değer birimsiz belirtilirse bayt olarak alınır. Bu ayarın sıfır olmayan değerleri ek yük getirir. Çünkü PostgreSQL, sonuçta bir hata olsun ya da olmasın parametre değerlerinin metinsel temsillerini her bir ifadenin başlangıcında bellekte saklama ihtiyacı duyar. Bağlama parametreleri binary formda gönderildiğinde, metin olarak gönderildiklerine göre ek yük daha fazladır, çünkü ilk durum veri dönüştürme gerektirirken ikincisi yalnızca dizenin kopyalanmasını gerektirir. log_statement
none
(kapalı), ddl
, mod
ve all
(tüm ifadeler) ‘dir. ddl
; CREATE, ALTER ve DROP ifadeleri gibi tüm veri tanımlama ifadelerini günlüğe kaydeder. mod
, tüm ddl
ifadelerinin yanı da INSERT, UPDATE, DELETE, TRUNCATE ve COPY FROM gibi veri değiştirme ifadelerini günlüğe kaydeder. PREPARE, EXECUTE ve EXPLAIN ANALYZE deyimleri de, içerdikleri komutlar uygun türde ise günlüğe kaydedilir. Genişletilmiş sorgu (extended query) protokolü kullanan istemciler için günlüğe kaydetme, bir Execute mesajı alındığında gerçekleşir ve Bağlama (Bind) parametrelerinin değerleri dahil edilir. Öntanımlı ayar none
‘dir. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_replication_commands
off
. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_temp_files
-1
ayarı, böyle bir günlük kaydını devre dışı bırakır. Bu ayarı yalnızca süper kullanıcılar değiştirebilir. log_timezone
GMT
‘dir, ancak bu genellikle postgresql.conf‘ta geçersiz kılınır; initdb, sistem ortamına karşılık gelen bir ayar kuracaktır. Daha fazla bilgi için bkz. . Bu parametre yalnızca postgresql.conf dosyasından ve sunucu komut satırından ayarlanabilir.CSV Formatında Log Çıktısı Kullanma
log_destination
listesine csvlog
‘un dahil edilmesi, günlük dosyalarını bir veritabanı tablosuna aktarmak için kullanışlı bir yol sağlar. Bu parametre şu sütunlarla virgülle ayrılmış değerler (CSV) biçiminde günlük satırları yayınlar: milisaniyeli zaman damgası, kullanıcı adı, veritabanı adı, süreç ID; istemci host: bağlantı noktası numarası (port), oturum ID, herbir oturum için satır numarası, komut etiketi, oturum başlangıç zamanı, sanal transaction ID, normal transaction ID, hata düzeyi, SQLSTATE
kodu, hata mesajı, hata mesajı ayrıntısı, ipucu, hataya neden olan dahili sorgu (varsa), oradaki hata pozisyonunun karakter sayısı, hata bağlamı, hataya yol açan kullanıcı sorgusu (varsa ve log_min_error_statement
tarafından etkinleştirilmişse), oradaki hata konumunun karakter sayısı, PostgreSQL kaynak kodundaki hatanın konumu (log_error_verbosity
ayrıntılı olarak ayarlanmışsa), uygulama adı ve backend türü. CSV biçimli günlük çıktısını depolamak için örnek bir tablo tanımı:
CREATE TABLE postgres_log
(
log_time timestamp(3) with time zone,
user_name text,
database_name text,
process_id integer,
connection_from text,
session_id text,
session_line_num bigint,
command_tag text,
session_start_time timestamp with time zone,
virtual_transaction_id text,
transaction_id bigint,
error_severity text,
sql_state_code text,
message text,
detail text,
hint text,
internal_query text,
internal_query_pos integer,
context text,
query text,
query_pos integer,
location text,
application_name text,
backend_type text,
PRIMARY KEY (session_id, session_line_num)
);
COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
CSV günlük dosyalarını içe aktarmayı basitleştirmek için yapmanız gereken birkaç şey vardır:
- Günlük dosyalarınız için tutarlı, öngörülebilir bir adlandırma düzeni sağlamak için
log_filename
velog_rotation_age
parametrelerini ayarlayın. Bu, dosya adını öngörmenizi ve bir günlük dosyasının ne zaman tamamlandığını ve dolayısıyla içe aktarılmaya hazır olduğunu bilmenizi sağlar. - Günlük dosyası adının tahmin edilmesini zorlaştıracağından boyut tabanlı günlük rotasyonunu devre dışı bırakmak için
log_rotation_size
değerini 0 olarak ayarlayın. log_truncate_on_rotation
öğesini açık olarak ayarlayın, böylece eski günlük verileri aynı dosyadaki yenileriyle karıştırılmaz.- Yukarıda verilen tablo tanımı, bir birincil anahtar spesifikasyonu içerir. Bu, aynı bilgilerin yanlışlıkla iki kez içe aktarılmasına karşı koruma sağlamak için yararlıdır.
COPY
komutu, içe aktardığı tüm verileri tek seferde işler, bu nedenle herhangi bir hata içe aktarmanın tamamının başarısız olmasına neden olur. Tam olmayan bir günlük dosyasını içe aktarırsanız daha sonra tamamlandığında dosyayı tekrar içe aktardığınızda birincil anahtar ihlali içe aktarmanın başarısız olmasına neden olur. İçe aktarmadan önce, günlük tamamlanana ve kapanana kadar bekleyin. Ayrıca bu prosedür tamamen yazılmamış bir parçalı satırın yanlışlıkla içe aktarılmasına karşı koruma sağlayarakCOPY
‘nın başarısız olmasına neden olur.
Süreç Başlığı
Bu başlık altında verilen ayarlar, sunucu süreçlerinin süreç başlıklarının değiştirilmesini kontrol eder. Süreç başlıkları ps ve Windows Process Explorer gibi programlar kullanılarak görüntülenir. Ayrıntılar için bkz .
cluster_name
Ad,
NAMEDATALEN
‘den daha az karakterde herhangi bir dize olabilir (standart build’de 64 karakter). cluster_name
parametre değerinde yalnızca yazdırılabilir ASCII karakterler kullanılabilir. Diğer karakterler soru işareti (?) ile değiştirilecektir. Bu parametre boş dizeye ‘ ‘ (varsayılan böyle) ayarlanırsa ad gösterilmez. Bu parametre yalnızca sunucu başlangıcında ayarlanabilir. update_process_title
Kaynak:
[2]. postgresqlco.nf