Buyukweb
PostgreSQL Kurulumu ve Temel Yönetim: Güçlü Açık Kaynaklı Veritabanı

PostgreSQL Kurulumu ve Temel Yönetim: Güçlü Açık Kaynaklı Veritabanı

PostgreSQL kurulumu ve temel yönetim. Veritabanı, kullanıcı, şema oluşturma, psql kullanımı, yedekleme ve pg_hba.conf güvenlik yapılandırması.

Büyükweb Teknik Ekibi18 Eylül 20247 dakika okuma

PostgreSQL Kurulumu ve Temel Yönetim

PostgreSQL, güçlü, açık kaynaklı ve genişletilebilir bir ilişkisel veritabanı yönetim sistemidir. MySQL'e kıyasla daha zengin veri tipleri ve gelişmiş özellikler sunar.

PostgreSQL vs MySQL/MariaDB

Özellik PostgreSQL MySQL/MariaDB
ACID uyumu Tam Tam (InnoDB)
JSON desteği JSONB (indekslenebilir) JSON
Full-text search Gelişmiş Temel
Tablespace Destekler Sınırlı
Stored Procedures PL/pgSQL Destekler
Lisans PostgreSQL (açık) GPL/Ticari

Kurulum

Ubuntu/Debian:

apt install postgresql postgresql-contrib

# Servis başlat
systemctl enable --now postgresql

# Sürüm kontrolü
psql --version

RHEL/Rocky Linux:

# PostgreSQL resmi deposunu ekle
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf -qy module disable postgresql
dnf install -y postgresql16-server

# Başlat
postgresql-16-setup initdb
systemctl enable --now postgresql-16

psql Kullanımı

# postgres kullanıcısı olarak bağlan
sudo -u postgres psql

# Belirli veritabanına bağlan
sudo -u postgres psql -d sitem_db

# Uzak bağlantı
psql -h 192.168.1.100 -U kullanici -d sitem_db

Temel psql Komutları:

-- Yardım
\?
\h SELECT

-- Veritabanları listesi
\l

-- Bağlan
\c sitem_db

-- Tablo listesi
\dt

-- Tablo yapısı
\d kullanicilar

-- Kullanıcı listesi
\du

-- psql'den çık
\q

Kullanıcı Yönetimi

-- postgres olarak bağlı iken:

-- Kullanıcı (rol) oluştur
CREATE USER webkullanici WITH PASSWORD 'guclu_sifre';

-- Superuser oluştur
CREATE USER adminkullanici WITH PASSWORD 'sifre' SUPERUSER;

-- Şifre değiştir
ALTER USER webkullanici WITH PASSWORD 'yeni_sifre';

-- Kullanıcı sil
DROP USER eskikullanici;

-- Kullanıcıları listele
\du
-- veya
SELECT usename, usesuper, usecreatedb FROM pg_user;

Veritabanı Yönetimi

-- Veritabanı oluştur
CREATE DATABASE sitem_db
    WITH OWNER = webkullanici
    ENCODING = 'UTF8'
    LC_COLLATE = 'tr_TR.UTF-8'
    LC_CTYPE = 'tr_TR.UTF-8';

-- Yetki ver
GRANT ALL PRIVILEGES ON DATABASE sitem_db TO webkullanici;

-- Veritabanı sil
DROP DATABASE test_db;

-- Veritabanı boyutu
SELECT pg_size_pretty(pg_database_size('sitem_db'));

Şema Yönetimi

-- Şema oluştur (namespace)
CREATE SCHEMA app;
CREATE SCHEMA logs;

-- Şemada tablo oluştur
CREATE TABLE app.kullanicilar (
    id SERIAL PRIMARY KEY,
    kullanici_adi VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL UNIQUE,
    olusturulma_tarihi TIMESTAMPTZ DEFAULT NOW()
);

-- Şema yetkisi
GRANT USAGE ON SCHEMA app TO webkullanici;
GRANT ALL ON ALL TABLES IN SCHEMA app TO webkullanici;

Tablo ve Veri Yönetimi

-- Tablo oluştur
CREATE TABLE urunler (
    id SERIAL PRIMARY KEY,
    isim VARCHAR(200) NOT NULL,
    fiyat NUMERIC(10,2) NOT NULL,
    stok INTEGER DEFAULT 0,
    ozellikler JSONB,
    etiketler TEXT[],
    olusturulma TIMESTAMPTZ DEFAULT NOW()
);

-- Index oluştur
CREATE INDEX idx_urunler_isim ON urunler(isim);
CREATE INDEX idx_urunler_jsonb ON urunler USING GIN(ozellikler);

-- Veri ekle
INSERT INTO urunler (isim, fiyat, stok, ozellikler, etiketler)
VALUES ('Laptop', 15000.00, 50, '{"marka":"Dell","ram":"16GB"}', '{"bilgisayar","laptop"}');

-- JSONB sorgulama
SELECT isim FROM urunler WHERE ozellikler->>'marka' = 'Dell';
SELECT isim FROM urunler WHERE ozellikler @> '{"ram":"16GB"}';

-- Array sorgulama
SELECT isim FROM urunler WHERE 'laptop' = ANY(etiketler);

pg_hba.conf Güvenlik Yapılandırması

# Yapılandırma dosyası konumu
find /etc -name "pg_hba.conf" 2>/dev/null
# Genellikle: /etc/postgresql/16/main/pg_hba.conf
# pg_hba.conf formatı:
# TİP   VERİTABANI   KULLANICI   ADRES   METOD

# Lokal bağlantılar
local   all          postgres                peer
local   all          all                     md5

# IPv4 lokal bağlantılar
host    all          all         127.0.0.1/32  md5

# Belirli IP'ye izin ver
host    sitem_db     webkullanici  192.168.1.0/24  md5

# Tüm IP'lerden SSL ile bağlantı
hostssl all          all         0.0.0.0/0   md5
# Değişiklikleri uygula
systemctl reload postgresql

Yedekleme ve Geri Yükleme

# Tek veritabanı yedekle (SQL format)
sudo -u postgres pg_dump sitem_db > sitem_db.sql

# Binary format (daha hızlı geri yükleme)
sudo -u postgres pg_dump -Fc sitem_db > sitem_db.dump

# Tüm veritabanları
sudo -u postgres pg_dumpall > all_databases.sql

# Geri yükle
sudo -u postgres psql sitem_db < sitem_db.sql
sudo -u postgres pg_restore -d sitem_db sitem_db.dump

# Otomatik yedekleme
cat > /etc/cron.daily/pg-backup << 'EOF'
#!/bin/bash
BACKUP_DIR="/var/backups/postgresql"
mkdir -p $BACKUP_DIR
sudo -u postgres pg_dump sitem_db | gzip > $BACKUP_DIR/sitem_$(date +%Y%m%d).sql.gz
find $BACKUP_DIR -mtime +7 -delete
EOF
chmod +x /etc/cron.daily/pg-backup

Performans İzleme

-- Aktif bağlantılar
SELECT pid, usename, datname, client_addr, state, query
FROM pg_stat_activity
WHERE state != 'idle';

-- Tablo boyutları
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) AS size
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

-- Sorgu istatistikleri (pg_stat_statements gerekir)
SELECT query, calls, total_exec_time, rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Büyükweb VDS sunucularında PostgreSQL full root erişimiyle tam kontrol size aittir. pgAdmin 4 ile görsel yönetim de mümkündür.


Veritabani Performans Optimizasyonu

Veritabani web uygulamalarinin kalbidir.

MySQL/MariaDB Tuning

innodb_buffer_pool_size'i RAM'in %60-70'ine ayarlayin. slow_query_log ile yavas sorgulari tespit edin. max_connections optimize edin.

Indeksleme

WHERE, JOIN, ORDER BY sutunlarina indeks ekleyin. EXPLAIN ile sorgu planlari analiz edin. Composite index kullanin.

Baglanti Havuzu

ProxySQL ile gelismis baglanti yonetimi. Connection pooling ile maliyet azaltma. Persistent connections kullanin.

Replikasyon

Master-Slave ile okuma yukunu dagitin. Galera Cluster ile multi-master yuksek erisilebilirlik. Semi-senkron replikasyon degerlendirin.

Yedekleme

mysqldump mantiksal, xtrabackup fiziksel yedek. Binary log ile point-in-time recovery. Incremental yedekleme ile tasarruf.

Sik Sorulan Sorular

MySQL mi PostgreSQL mi?

MySQL cogu web uygulamasi ile uyumlu. PostgreSQL gelismis veri tipleri ve JSON icin ideal. CMS'ler genelde MySQL kullanir.

Veritabanim buyudu ne yapmaliyim?

Gereksiz verileri temizleyin, tablo optimize edin, arsivleme yapin, partitioning kullanin.

Ne siklikla yedek almaliyim?

Kritik veritabanlari saatlik, standart siteler gunluk. Buyuk degisikliklerden once manuel yedek.

Sonuc

Veritabani optimizasyonu uygulama performansini dogrudan etkiler. Indeksleme, tuning ve yedekleme ile veri katmaninizi guclendirin.

Veritabani Boyut Yonetimi

Buyuk Tablolar icin Stratejiler

  • Partitioning: Tarihe gore tablolari bolumlendirin. Sorgu performansi artar.
  • Arsivleme: Eski verileri arsiv tablolarina tasiyin.
  • Sikistirma: InnoDB sikistirmasi ile disk kullanimini %50-75 azaltin.

WordPress Veritabani Optimizasyonu

  • wp_options autoload: Gereksiz autoload kayitlari temizleyin.
  • Post revisions: wp-config.php'de WP_POST_REVISIONS sinirlayin.
  • Transient veriler: Suresi dolmus verileri duzenli temizleyin.
  • Spam yorumlar: Toplu silin.

Veritabani Guvenlik

  • Varsayilan portu degistirin
  • Uygulama bazli kullanici olusturun
  • Minimum gerekli yetki verin
  • SSL ile baglanti sifreleyin
  • Duzenli guvenlik taramasi yapin

Hosting ve Sunucu Terimleri Sozlugu

Terim Aciklama
VDS Virtual Dedicated Server - Sanal ozel sunucu
NVMe SSD Non-Volatile Memory Express - En hizli disk teknolojisi
LiteSpeed Yuksek performansli web sunucu yazilimi
CloudLinux Paylasimli hosting icin kaynak izolasyon isletim sistemi
cPanel Populer web hosting kontrol paneli
Plesk Web hosting ve sunucu yonetim paneli
KVM Kernel-based Virtual Machine - Tam sanallastirma teknolojisi
DDoS Distributed Denial of Service - Dagitik hizmet engelleme saldirisi
SSL/TLS Veri iletisimini sifreleyen guvenlik protokolu
TTFB Time to First Byte - Sunucu yanit suresi
CDN Content Delivery Network - Icerik dagitim agi
WAF Web Application Firewall - Web uygulama guvenligi duvari
IOPS Input/Output Operations Per Second - Disk performans olcusu
Uptime Sunucunun kesintisiz calisma suresi yuzdesi
Bandwidth Veri transfer kapasitesi

Bu terimleri anlamak, hosting ve sunucu hizmetlerini daha bilinçli secmenize yardimci olur. Detayli bilgi icin Buyukweb blog yazilarini takip edin veya teknik destek ekibimize danisIn.

Teknik Destek ve Yardim Kanallari

Buyukweb olarak musterilerimize birden fazla destek kanali sunuyoruz:

Canli Destek (Tawk.to)

Web sitemiz uzerinden 7/24 canli destek ile aninda yardim alin. Teknik sorulariniz, fatura islemleriniz ve genel bilgi talepleriniz icin canli destek ekibimiz hizmetinizdedir.

Telefon Destegi

0850 302 60 70 numarasindan hafta ici ve hafta sonu teknik destek alabilirsiniz. Acil durumlar ve karmasik sorunlar icin telefon destegi en hizli cozum yoludur.

E-posta Destegi

destek@buyukweb.com adresine detayli sorun tanimlamanizi gonderin. Ekran goruntuleri ve hata mesajlari ile birlikte gonderdiginiz talepler daha hizli cozumlenir.

Musteri Paneli

my.buyukweb.com uzerinden destek talepleri olusturun, faturalarinizi yonetin ve hizmetlerinizi kontrol edin. Ticket sistemi ile tum iletisiminiz kayit altindadir.

Bilgi Bankasi

Blog yazilarimiz ve rehberlerimiz ile sik karsilasilan sorunlarin cozumlerini kendiniz bulabilirsiniz. WordPress kurulumu, DNS ayarlari, e-posta yapilandirmasi gibi konularda adim adim rehberler mevcuttur.

Buyukweb teknik ekibi, hosting alaninda 17 yillik tecrubesi ile her turlu sorununuza profesyonel cozum sunar.

Etiketler:

#postgresql#kurulum rehberi#veritabanı#database#veri yönetimi

Bu yazıyı paylaş