Anasayfa » PostgreSQL Single Instance Kurulumu

PostgreSQL Single Instance Kurulumu

Bu yazımda Redhat ve Debian tabanlı işletim sistemleri üzerinde Single Node için PostgreSQL database kurulumu ve temel configurasyonların nasıl yapılacağını adım adım anlatacağım. PostgreSQL Single Instance Kurulumu için PostgreSQL 16 version kurulumu yapılacak olup diğer versionlarda da aynı adımlarla kurulabilmektedir.

Bu kurulum demo/test ortamları için idealdir. Gerçek ortamda güvenlik, yedekleme ve izleme gibi adımları ayrıca yapılandırmanız gerekmektedir.

  • Sistem Güncellemesi

İlk olarak sistem paketlerini güncelleyelim: Bu adım sistemdeki tüm uygulamaları güncelleyecektir. Eğer database sunucusunda başka servisler mevcutsa ve onları güncellemek istemiyorsanız bu adımı atlayabilirsiniz.

Redhat:

sudo yum update -y

Ubuntu:

sudo apt upgrade -y

  • Firewalld Yapılandırması

Bu örnekte firewalld servisini tamamen kapatıyoruz. Alternatif olarak sadece PostgreSQL portuna (5432) özel bir izin de verilebilmektedir.

Redhat:

sudo systemctl stop firewalld
sudo chkconfig firewalld off

Ubuntu:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
  • PostgreSQL Kurulumu

Önce PostgreSQL’in resmi deposunu sistemimize ekliyoruz:

Redhat:

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Ubuntu:

GPG Anahtarını ve APT deposunu (pgdg) sisteminize ekler.

sudo curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/postgresql.asc
sudo echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt-cache policy postgresql-16

PostgreSQL 16 database ve server kurulumlarını yapıyoruz.

Redhat:

sudo dnf install postgresql16 postgresql16-server

Ubuntu:

sudo apt install postgresql-16 postgresql-client postgresql-contrib -y
  • Veritabanı Başlatma ve İlk Yapılandırma

Bu adımda initdb adımını yapacağız postgresql default olarak /var/lib/psql dizinin altına database dosyalarını oluşturmaktadır. Biz data ve config ler için ayrı bir directory oluşturup onun altına init yapacağız. Aşağıdaki gibi /data directory oluşturulup yetkiler verilir.

mkdir -p /data/16
mkdir -p /data/16/log
chown -R postgres: /data
chmod 700 -R /data

Sunucu üzerinde veritabanı initialize edilir:

Redhat:

sudo -u postgres /usr/pgsql-16/bin/initdb -D /data/16/

Ubuntu:

Default olarak apt ile kurulumda default directory’e init yapılmış olarak gelir bu sebeple silip tekrar init db yapılır.

sudo -u postgres pg_dropcluster 16 main --stop
sudo -u postgres /usr/lib/postgresql/16/bin/initdb -D /pg_data/16/
  • postgresql.conf

Postgresql database parametreleri postgresql.conf dosyasında bulunmaktadır. Conf dosyasında aşağıdaki değişiklikler yapılmalıdır.

data_directory = '/data/16' 
listen_addresses = '*'
shared_buffers = 2048MB 
max_connections = 200

  • pg_hba.conf Ayarları

PostgreSQL ip bazlı giriş kontrolleri için pg_hba.conf dosyasını kullanmaktadır. Aşağıda tüm istemcilerin bağlantısına izin verecek şekilde hem normal hem de replikasyon erişimi için aşağıdaki satırları ekliyoruz. Sisteminiz de ip bazlı spesifik erişim yetkileri tanımlayacaksanız bu kısımdan yapabilirsiniz:

host    all             all             0.0.0.0/0               scram-sha-256
host    replication     all             0.0.0.0/0               scram-sha-256

Servisi etkinleştirip başlatıyoruz:

Redhat-Ubuntu:

sudo systemctl enable --now postgresql-16

Redhat-Ubuntu:

Servis durumunu kontrol edelim:

sudo systemctl status postgresql-16
  • Postgres Kullanıcısı ile Giriş ve Şifre Değişikliği

Postgres kullanıcısına geçerek veri tabanına bağlanalım ve aşağıdaki gibi şifre değişikliği yapalım:

su - postgres
psql -c "alter user postgres with password 'postgres'"

PostgreSQL temel paramtereler:

Yukarıda database parametrelerinin postgresql.conf dosyasında olduğunu belirtmiştik aşağıda en sık yapılandırılan postgresql.conf parametrelerinden bazılarını açıklayacağız:

  • listen_addresses

PostgreSQL’in hangi IP adreslerinden bağlantı kabul edeceğini belirler. Varsayılan olarak 'localhost' gelir, yani sadece local bağlantılara izin verir. Tüm IP adreslerinden erişime açmak için:

listen_addresses = '*'
  • shared_buffers

Veritabanının bellekte ne kadar alan kullanabileceğini tanımlar. Genellikle toplam RAM’in %25-%40’ı önerilmektedir.

  • port

PostgreSQL default olarak 5432 portunu kullanmaktadır. Port değişikliği için bu parametrede değişiklik yapılabilmektedir.

  • work_mem

Bir sorgu işlenirken PostgreSQL’in her işlem için ayıracağı bellek miktarıdır. Sorguların sayısına göre sistem belleği planlanarak belirlenmelidir.

  • max_connections

Database e bağlantı sağlayacak maximum connection limitini ifade etmektedir.

  • max_wal_size

Bu ayar, WAL dosyalarının toplam boyutunu ifade eder. Belirtilen boyutu geçerse, PostgreSQL’in checkpoint (kontrol noktası) başlatmasına neden olur.

  • min_wal_size

Bu ayar, checkpoint sonrası WAL dosyaları silinirken en az ne kadarının tutulacağını belirtir.

  • Sonuç

Artık PostgreSQL Single Instance Kurulumu dış bağlantılara açık ve temel yapılandırması yapılmış durumda. Gerekli durumlarda psql, pgAdmin, DBeaver gibi araçlarla bağlantı sağlayabilir veya uzak istemcilerden test edebilirsiniz.

Resmi Dökümantasyon için tıklayınız.

Diğer Postgresql Dökümanlar için tıklayınız.

More Reading

Post navigation

Leave a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir