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şken | Zorunlu mu | Ne işe yarar |
|---|---|---|
YEKE_DB_URL | PG modu için zorunlu | PostgreSQL bağlantı adresi (postgres://kullanici:parola@host:5432/db). Verilmezse core SQLite kullanır. |
YEKE_PG_POOL_SIZE | opsiyonel | Replika 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:
- Core önce PostgreSQL'e bağlanır (salt bağlantı).
schema_migrationstablosuna salt-okuma bakar; yoksa kurulum "bakir"dir.- Lisansı okur (dosyadan; dosya yoksa ve şema kuruluysa veritabanındaki kayıttan).
- Bayrak yoksa ve veritabanında kullanıcı varsa:
LICENSE_FEATURE_LOCKEDile 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. - 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-migratearacı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ı.