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, bir de isteğe bağlı CA dosyası.

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.
YEKE_DB_CA_FILEopsiyonelÖzel bir kurum CA'sıyla imzalanmış sunucu sertifikası için CA dosyasının yolu. 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.
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)"

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 (dosya/env'den, şema zaten kuruluysa veritabanındaki kayıttan da).
  4. Bayrak yoksa: şemaya hiç dokunmadan LICENSE_FEATURE_LOCKED ile açık hata verir. Bakir bir veritabanı bakir kalır.
  5. Bayrak varsa: normal açılışa (baseline/göçler) devam eder.

Ş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ı.