Instance’nın Kapatılıp Başlatılması
Postgresql Instance’nın Başlatılması

Hazır paketlerden (yum/apt install postgresql…) kurulum yapıldı ise işletim sistemine
göre servisler oluşturuluyor. Böylece systemctl komutları ile kapatıp açılabilir ve
açılışı otomatik hale getirilebilir (systemctl enable postgres…).
Not: Ek bölümlerde hazır paketten kurulumun ve mimarinin anlatıldığı birinci bölümde
kaynak koddan kurulum örneğini inceleyebilirsiniz. (Kaynak koddan kurulum için -> )
| Cluster (data dizini) | /pg/data/13.6 |
| Binary lerin bulunduğu dizin | /pg/home/13.6/bin |
| Port (diğer instance lardan dolayı değiştirildi) | 5434 |
# Her seferinde tam pathi yazmamak için .profile dosyasının en altına aşağıdaki satırlar eklenebilir. vim /var/lib/postgresql/.profile export PGDATA=/pg/data/13.6 export PGDATABASE=postgres export PGUSER=postgres export PGPORT=5434 export PATH=/pg/home/13.6/bin:$PATH # Çalışılan oturumda, güncel değişkenlerin aktif olması için; source ~/.profile # Kontrol edilir. postgres@srv1:~$ which postgres /pg/home/13.6/bin/postgres
Veritabanını açmak için aşağıdaki komutlar çalıştırılır.
postgres@srv1:~$ postgres -D /pg/data/13.6/ LOG:starting PostgreSQL 13.6 on x86_64-pc-linux-gnu,compiled by gcc (Debian 8.3.0-6)8.3.0,64-bit [9860] LOG: listening on IPv4 address “0.0.0.0”, port 5434 [9860] LOG: listening on IPv6 address “::”, port 5434 [9860] LOG: listening on Unix socket “/tmp/.s.PGSQL.5434” [9861] LOG: database system was shut down at 16:13:34 +03 [9860] LOG: database system is ready to accept connections
Not: Bu şekilde postgresql instance’ı ön planda çalışır. SSH oturumu sonlandırılırsa
instance da kapanır.
Çevre değişkenlerinde (environment variables) $PGDATA tanımlanmış ise “–D “
parametresi yazılmayabilir
Bu şekilde arka planda çalıştırıp stdout ve sterr de log dosyasına yönlendirilmiş olur. postgres -D /pg/data/13.6/ > postgresql.log 2>&1 & # Debug modda çalıştırmak için (-d 5), dikkatli kullanılmalıdır log dosyası çok hızlı büyür. postgres -D /pg/data/13.6/ -d 5 > debugpostgres.log 2>&1 &
postgres : Birçok parametre alabililir, man postgres ya da postgresql.org
sitesinde detaylar mevcut.pg_ctl : Yukarıda anlatılan postgres ile aynı işe yaramakla birlikte pg_ctl
daha kullanışlıdır.
# Arka planda çalıştırır logu postgresql.log dosyasına yönlendirir. postgres@srv1:~$ pg_ctl start -l postgresql.log # -D seçeneği burada da kullanılabilir. pg_ctl -D /pg/data/13.6/ -l postgresql.log 2>&1 & # status, stop ve restart seçenekleri de mevcuttur. postgres@srv1:~$ pg_ctl status/stop/restart -l postgresql.log # reload, konfigurasyon dosyasını okutur restart gerektirmeyen ayarları aktif eder. postgres@srv1:~$ pg_ctl reload -D /pg/data/13.6 # promote, hot standby sunucuyu primari yapar yani yazma ve okumaya açar. postgres@srv1:~$ pg_ctl promote -D /pg/data/13.6
# root ile systemctl root başlatılabilir kapatılabilir. sudo systemctl start/stop/restart postgresql@14-main.service # statüsünün kontrolü sudo systemctl status postgresql@14-main.service # enable ile açılış ve kapanışta otomatik olarak postgreste açılıp kapanır. sudo systemctl enable postgresql@14-main.service
systemctl : Başlatma ve kapatma scriptleri, işletim sisteminin systemd servis
yönetim aracı ile entegre edilebilir. İşletim sistemi kapatılırken ya da açılırken
veritabanının da otomatik olarak kapanması ve açılması sağlanabilir. Hazır paketlerden
kurulum yapıldığında systemd servisleri de otomatik olarak geliyor.pg_ctlcluster : systemd entegrasyonunu kolaylaştırır. Çoklu cluster olan
ortamlarda işlem yapılmak istenen veritabanının cluster dizinini ve doğru pg_ctl’ i
çağırır.
Instance’ın Kontrolü
pgrep -u postgres -fa -- -D 5932 /pg/home/13.6/bin/postgres -D /pg/data/13.6 --config-file=/pg/data/13.6/postgresql.conf pgrep -fa -- -D |grep postgres 5932 /pg/home/13.6/bin/postgres -D /pg/data/13.6 –config file=/pg/data/13.6/postgresql.conf # Port bilgisi sed -n 4p $PGDATA/postmaster.pid 5434 # veya sed
pgrep ve sed araçları ile instance’ın çalıştığı konfig dosyasını proses numarısını (PID)
ve TCP port gibi bilgilerini temin etmek mümkündür.
Postgresql Instance’nın Kapatılması
postgres@srv1:~$ pg_ctl -D /pg/data/13.6 stop -m s waiting for server to shut down....................... done postgres@srv1:~$ pg_ctl -D /pg/data/13.6 stop -m f waiting for server to shut down.... done server stopped postgres@srv1:~$ pg_ctl -D /pg/data/13.6 stop -m i waiting for server to shut down.... done server stopped
Smart Mode : (SIGTERM) Yeni oturumlara (bağlantılara) izin verilmez. Mevcut
oturumları sonlandırmaz, çalışmasına izin verir. Ancak tüm oturumlar sonlandığında
instance’ı kapatır. Üretim ortamındaki bir veritabanında, tüm oturumların sonlanmasını
uzun süre beklemek zorunda kalabilirsiniz (ayları bulabilir).
Fast Mode : (SIGINT) Yeni oturumlara (bağlantılara) izin verilmez. Mevcut
oturumları sonlandırır. Commit etti ise yazar commit etmedi ise rollback yapar ve tüm
oturumlar sonlandırılır. Hızlı ve tutarlı kapatır. Açılışta recovery gerekmez. Default
kapatma modudur.
Immediate Mode : Tüm server prosesleri anında sonlandırır. Sunucunun elektrik
fişini çekmekle aynı şeydir.
Değişikliğe uğramış buffer alanı veri dosyalarına (datafiles) yazılamadığı ve commit
edilememiş değişikliler geri alınamadığı (rolled back) için tutarsız kapanır.
Açılışta transaction (WAL – write-ahead-log) log dosyalarından recovery işlemi
gerektirir.
