PostgreSQL

Linux Üzerinde PostgreSQL Kurulumu ve Yapılandırma

4 Dakika Okuma Süresi.

PostgreSQL, esnekliği, geniş veri türleri desteği ve güçlü veri bütünlüğü özellikleriyle öne çıkan bir açık kaynak veri tabanı yönetim sistemidir. Pek çok uygulama ve sistem için tercih edilen PostgreSQL, özellikle Linux platformlarında sıkça kullanılır. Bu makalede, PostgreSQL’in hem Debian/Ubuntu hem de RHEL/CentOS tabanlı Linux sistemlerinde nasıl kurulacağını, yapılandırılacağını ve optimize edileceğini adım adım inceleyeceğiz.

Neden PostgreSQL?

PostgreSQL, diğer veri tabanı yönetim sistemleriyle kıyaslandığında çeşitli avantajlar sunar:

  1. Açık Kaynak ve Geniş Destek: PostgreSQL tamamen açık kaynaklıdır ve büyük bir topluluk tarafından desteklenir.
  2. Gelişmiş Veri Türleri: JSON, XML, Hstore gibi karmaşık veri türlerini destekler.
  3. ACID Uyumluluğu: Veri bütünlüğü ve tutarlılığı sağlar.
  4. Genişletilebilirlik: Kullanıcı tanımlı fonksiyonlar, veri türleri ve daha fazlası ile özelleştirilebilir.
  5. Performans ve Ölçeklenebilirlik: Büyük veri tabanları için güçlü performans sunar.

Şimdi, PostgreSQL’in Linux sistemlerinde nasıl kurulacağını inceleyelim.

Adım 1: Depoları Güncelleme

PostgreSQL’i kurmadan önce, sisteminizdeki mevcut paketlerin güncel olduğundan emin olmanız gerekir. Bu adım hem RHEL/CentOS hem de Debian/Ubuntu sistemleri için gereklidir.

Debian/Ubuntu için:

sudo apt-get update 

Bu komut, sistemdeki tüm paket listelerini günceller ve en yeni paket sürümlerini sağlar.

RHEL/CentOS için:

sudo yum update 

Bu komut, sistemdeki mevcut paketlerin güncellenmesini sağlar.

Adım 2: PostgreSQL Paketini Kurma

Şimdi PostgreSQL paketini sisteminize kurabilirsiniz. Bu adımda kullanılan komutlar işletim sistemine göre farklılık gösterir.

Debian/Ubuntu için:

sudo apt-get install postgresql postgresql-contrib 

Bu komut, PostgreSQL veri tabanı sunucusunu ve bazı ek araçları (contrib paketleri) sisteminize kurar.

RHEL/CentOS için:

sudo yum install postgresql-server postgresql-contrib 

Bu komut, PostgreSQL sunucusunu ve gerekli ek araçları sisteminize kurar.

Adım 3: PostgreSQL’i Başlatma ve Etkinleştirme

Kurulumdan sonra PostgreSQL hizmetini başlatmanız ve sistem açıldığında otomatik olarak başlamasını sağlamanız gerekir.

Debian/Ubuntu için:

sudo systemctl start postgresql 
sudo systemctl enable postgresql 

Bu komutlar PostgreSQL hizmetini başlatır ve sistem açıldığında otomatik olarak başlamasını sağlar.

RHEL/CentOS için:

PostgreSQL’i kurduktan sonra, veri tabanı dosyalarını başlatmanız gerekecektir:

sudo postgresql-setup initdb 
sudo systemctl start postgresql 
sudo systemctl enable postgresql 

Bu adımlar, PostgreSQL hizmetini başlatır ve sistem açıldığında otomatik olarak başlamasını sağlar.

Adım 4: PostgreSQL Konsoluna Erişim

PostgreSQL varsayılan olarak “postgres” adlı bir süper kullanıcı oluşturur. Bu kullanıcı ile PostgreSQL konsoluna erişip yönetimsel işlemler yapabilirsiniz.

Her iki sistemde de geçerli:

sudo -i -u postgres psql 

Bu komutlar, “postgres” kullanıcısına geçiş yapar ve PostgreSQL’in kendi terminal arayüzü olan psql‘i başlatır.

Adım 5: Temel Yapılandırma ve Yeni Kullanıcı Oluşturma

PostgreSQL kurulumunun ardından, kendi kullanıcılarınızı ve veri tabanlarınızı oluşturmanız gerekir. Bu adımlar PostgreSQL’in günlük kullanımına yönelik temel yapılandırma işlemlerini kapsar.

Yeni Kullanıcı Oluşturma:

CREATE USER yeni_kullanici WITH PASSWORD 'guclu_sifre'; 

Bu komutla yeni bir kullanıcı oluşturursunuz.

Veri Tabanı Oluşturma:

CREATE DATABASE yeni_veritabani OWNER yeni_kullanici; 

Bu komut, oluşturduğunuz kullanıcıya ait bir veri tabanı oluşturur.

Yetkilendirme ve İzinler:

GRANT ALL PRIVILEGES ON DATABASE yeni_veritabani TO yeni_kullanici; 

Bu komut, kullanıcıya veri tabanı üzerinde tam yetki verir.

Adım 6: PostgreSQL Yapılandırma ve Optimizasyon İpuçları

PostgreSQL’i kurduktan sonra, veri tabanı sunucunuzun performansını artırmak ve güvenliğini sağlamak için bazı yapılandırma ayarlarını optimize etmek önemlidir.

6.1. PostgreSQL Konfigürasyon Dosyaları

PostgreSQL’in yapılandırma dosyaları, veri tabanının davranışını belirler. Önemli dosyalar şunlardır:

  • postgresql.conf: Ana yapılandırma dosyasıdır. Bellek ayarları, bağlantı sınırları ve loglama gibi çeşitli parametreleri içerir.
  • pg_hba.conf: Bağlantı kontrol dosyasıdır. Hangi kullanıcıların, hangi IP adreslerinden erişebileceğini belirler.

Bu dosyalar, Debian/Ubuntu tabanlı sistemlerde genellikle /etc/postgresql/ dizininde, RHEL/CentOS tabanlı sistemlerde ise /var/lib/pgsql/data/ dizininde bulunur.

6.2. Bellek ve Performans Ayarları

PostgreSQL’in performansını optimize etmek için bellek ayarlarını düzenlemek önemlidir:

  • shared_buffers: PostgreSQL’in verileri hafızada tutmak için ayırdığı bellek miktarını belirler. Tipik olarak toplam RAM’in %25’i olarak ayarlanır.
  • work_mem: Sorgu sırasında kullanılacak bellek miktarını belirler. Daha büyük değerler, büyük veri kümeleri üzerinde daha hızlı sıralama ve toplama işlemleri sağlar.
  • maintenance_work_mem: Veri tabanı bakım görevleri için ayrılan bellek miktarını belirler. Bu parametre, indekslerin yeniden oluşturulması ve tabloların analizi sırasında kullanılır.

Bu ayarlar, her iki Linux dağıtım ailesinde de aynı konfigürasyon dosyalarında bulunur, ancak dosyaların yolları farklıdır.

6.3. Bağlantı Yönetimi

Büyük veri tabanlarında, bağlantı yönetimi kritik bir konudur. max_connections parametresi, aynı anda kaç bağlantının yapılabileceğini belirler. Aşırı bağlantı sayıları performans sorunlarına neden olabilir, bu yüzden bu değerin dikkatli bir şekilde ayarlanması gerekir.

6.4. Yedekleme ve Kurtarma Stratejileri

Veri güvenliğini sağlamak için düzenli yedekleme yapmak hayati öneme sahiptir. Yedekleme stratejilerini oluştururken aşağıdaki adımları izleyin:

  • Tam Yedekleme: Belirli aralıklarla veri tabanının tam yedeğini alın.
  • Artımlı Yedekleme: Tam yedeklemeler arasında yapılan değişiklikleri içeren artımlı yedeklemeler gerçekleştirin.
  • Otomatik Yedekleme: pg_dump ve cron gibi araçlar kullanarak otomatik yedekleme görevleri oluşturun.

Bu stratejiler, hem Debian/Ubuntu hem de RHEL/CentOS sistemlerinde geçerlidir ve veri kaybını önlemek için hayati öneme sahiptir.