yeke.io · dokümanlar · enterprise

PostgreSQL Bağlantısı

YEKE varsayılan olarak SQLite kullanır. Enterprise ile mevcut PostgreSQL sunucunuza bağlanabilirsiniz. Bağlantı ayarlarını, snapshot anahtarını ve lisans gereksinimlerini aşağıda bulabilirsiniz.

Genel bakış

İki sürücü, tek anahtarlı seçim.

YEKE_DB_URL verilirse PostgreSQL, verilmezse YEKE_DB_PATH altındaki SQLite dosyası kullanılır. İki ayar birlikte verilirse core başlamaz. PostgreSQL bağlantısı başarısız olursa SQLite’a geçilmez; core hatayla durur.

PostgreSQL kullanılan SQL yüzeyinin tamamında SQLite'ın disipliniyle davranır: tarih ISO-8601 metin, boole 0/1, JSON metin olarak tutulur. Kurumun DBA'sı için önemli olan tek fark bağlantı şeklidir: aşağıdaki §3.

Bağlantıyı kurma

Tek ortam değişkeni; TLS ayarları da bağlantı adresinin içinde.

DeğişkenZorunlu muNe işe yarar
YEKE_DB_URLPG modu için zorunluPostgreSQL bağlantı adresi (postgres://kullanici:parola@host:5432/db). Verilmezse core SQLite kullanır.
YEKE_PG_POOL_SIZEopsiyonelReplika başına havuz boyutu, varsayılan 10. Doğru değer kurumun DBA'sıyla konuşulur; YEKE kurumun havuz politikasını bilemez.
kubectl -n yeke-system create secret generic yeke-core-secrets \
  --from-literal=YEKE_DB_URL="postgres://<kullanici>:<parola>@<pg-host>:5432/<db>" \
  --from-literal=YEKE_SNAPSHOT_KEY="$(openssl rand -hex 32)"

Yukarıdaki örnek Kubernetes içindir; tek makinedeki docker run komutu Kurulum → Enterprise (PostgreSQL) bölümünde.

TLS ve kurum CA'sı. TLS ayarları bağlantı adresinin parametreleridir. Sunucu sertifikası kurumun kendi CA'sıyla imzalıysa kök sertifika dosyasını core'un okuyabileceği bir yola koyun ve adrese ekleyin: ?sslmode=verify-full&sslrootcert=/etc/yeke/pg-ca.pem. Sertifika zinciri ve sunucu adı birlikte doğrulanır; dosya okunamazsa ya da sertifika doğrulanamazsa core açılmaz.

sslmode=require libpq'dan farklı olarak sertifikayı da doğrular; sürücü bu davranışın ileride değişeceği uyarısını bastığı için açıkça verify-full yazın. sslmode=disable reddedilmez — bağlantı kurumun kendi DB ağıdır ve TLS'siz iç ağ PG kurulumları meşru bir kurum standardıdır. Kurum CA'sı sayfasındaki YEKE_PUBLIC_CA_FILE core'un kendi sertifikası içindir, bu bağlantıyı kapsamaz.

Sunucu yapılandırması şart koşulmaz: sürücünün kullandığı her şey standart istemci yeteneğidir (düz SQL, TLS, advisory kilit). Eklenti kurulumu istenmez.

Desteklenen bağlantı şekli

Bağlantı hedefinin şekli bir sözleşmedir; kurumsal PG'ye bir havuzlayıcı üstünden bağlanmak istisna değil normdur.

YEKE_DB_URL doğrudan postmaster'a ya da session kipli bir havuzlayıcıya işaret etmelidir.

transaction/statement kipli havuzlama desteklenmez

PgBouncer kullanıyorsanız YEKE için session modunda bir pool ayırın veya doğrudan PostgreSQL’e bağlanın. Lider seçimi için kullanılan advisory lock ve oturum ayarları bağlantıya bağlıdır; transaction ve statement pooling desteklenmez.

Açılış probu bu uyuşmazlığı erken yakalar: bağlantı hedefi bu şekli sağlamıyorsa core açık bir hatayla durur, sessizce yanlış davranmaz.

Asgari sürüm ve havuz

Sınır teknik değil destek-politikası sınırıdır.

PostgreSQL 15 veya üzeri desteklenir. pg.Pool bağlantı havuzunun boyutu YEKE_PG_POOL_SIZE ile ayarlanır; varsayılan değer replica başına 10’dur.

Snapshot anahtarı

SQLite modunda opsiyonel, PostgreSQL modunda zorunlu.

Saklanan credential'ları, AI anahtarlarını ve hook sırlarını şifreleyen 32 baytlık YEKE_SNAPSHOT_KEYi SQLite modunda vermezseniz core kendisi üretip veri dizinine yazar. PostgreSQL modunda bu davranış yoktur — core anahtarı üretmez, anahtar YEKE_SNAPSHOT_KEY (env) ya da YEKE_SNAPSHOT_KEY_FILE (dosya) üzerinden dışarıdan verilmek zorundadır. Kubernetes'te bu bir Secret'tır; yukarıdaki §2'deki örnek komutta ikisi birlikte oluşturulur.

Gerekçe dosya sistemi bağımsızlığıdır: PostgreSQL modunda core hiçbir dizinin var ya da yazılabilir olmasını istemez — anahtarı kendisi üretip bir dizine yazmak bu bağımsızlığı baştan bozardı.

Lisans kapısı: ha-postgres

Kapılanan şey çoklu replica değil, PostgreSQL bağlantısının kendisi.

PostgreSQL sürücüsü Enterprise ha-postgres özelliğinin arkasındadır — tek replica’lı bir PostgreSQL kurulumu bile bu bayrağı ister, ayrı bir bayrak açılmaz. Açılış sırası bilinçlidir:

  1. Core önce PostgreSQL'e bağlanır (salt bağlantı).
  2. schema_migrations tablosuna salt-okuma bakar; yoksa kurulum "bakir"dir.
  3. Lisansı okur (dosyadan; dosya yoksa ve şema kuruluysa veritabanındaki kayıttan).
  4. Bayrak yoksa ve veritabanında kullanıcı varsa: LICENSE_FEATURE_LOCKED ile açık hata verir. Kullanıcısı olmayan (bakir) veritabanında ise core lisanssız açılır, şemayı kurar ve kurulum formu ilk yöneticiyle birlikte lisans bloğunu ister; lisans sonra veritabanında durur.
  5. Bayrak varsa: normal açılışa (baseline/göçler) devam eder.

Lisansı dosyayla yönetmek isteğe bağlıdır (GitOps, HA): YEKE_LICENSE_PATH verilirse lisans dosyadan okunur, kurulum ekranı lisans istemez ve Lisans ekranı yüklemeyi reddeder.

Şema önceki bir açılıştan zaten kuruluysa core onu asla silmez (DROP atmaz) — kurumun veritabanındaki nesneler kurumundur; lisans bayrağı sonradan kaldırılırsa hata şemanın yerinde durduğunu ve temizliğin kurumun kararı olduğunu söyler.

0.26.1 notu: Arşiv tablosu (archived_operations) olmayan eski bir kurulumda göç 38 artık DÜŞMÜYOR — tablo yoksa ilgili adımı atlar ve core açılır; tablo VARKEN davranış değişmedi. Tablo eksikse açılış log'u bunu söyleyen tek bir satır basar, kurulum düzeltilene kadar HER açılışta. Aynı kurulumda uyum raporu artık hata vermez: arşivi "okunamadı" olarak beyan eder ve canlı kayıtlarla üretilmeye devam eder. Tablo tamamlanana kadar YEKE_RETENTION_ARCHIVE'i açmayın — arşiv yazma modu archive_stalled ile durur.

Sınırlar

Bağlanan taraf YEKE'dir, işleten taraf değil.

  • YEKE PostgreSQL'i kurmaz, kümelemez, yedeklemez, işletmez. Kurumun sağladığı bir PostgreSQL'e bağlanır — sürümü, kümelemesi, replikasyonu, yedekleme politikası ve performans ayarı kurumun DBA disiplinidir.
  • Sunucu yapılandırması istenmez. Eklenti kurulumu ya da özel bir GUC ayarı gerekmez.
  • Community'de PostgreSQL yoktur. SQLite, Community'nin ve tek-node kurulumların birinci sınıf yoludur ve öyle kalır.
  • Var olan bir SQLite kurulumunu elle taşımak desteklenmez. Yolu yeke-migrate aracıdır.

Var olan bir SQLite kurulumunuz mu var?

PostgreSQL'e bağlanmak, var olan bir SQLite kurulumunu otomatik taşımaz. Yolu yeke-migrate aracıdır: çevrimdışı, tek yönlü, bütünlük doğrulamalı.