
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.
Leave a Comment