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
Örneklerde kullanılacak veritabanı kaynak koddan kurulmuştur. Dizin bilgileri tablodaki gibidir.

# 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.

Kategori seçin...