Bir Cluster ERP dağıtımı her veritabanı sunucusunda iki PostgreSQL rolüne ihtiyaç duyar: uygulama rolü ve yedek rolü. Bu sayfa onları deploy/postgres-roles.sql dosyasının oluşturduğu biçimde, yedek çalıştırıcısının her dökümden önce yaptığı denetimi ve deploy/pg-tune.sh dosyasının bir düğüm için yazdığı ayarları açıklar. Parolalar hiçbir zaman bu sayfanın parçası değildir; betik operatörün değiştirdiği yer tutucular taşır.
Kapsam ve kaynak¶
- Tanımlandığı yer:
deploy/postgres-roles.sql,deploy/pg-tune.shvesrc/cluster_erp/server/backup_tenants.py(assert_dump_role_can_read_everything). - Sayı: iki
CREATE ROLEifadesinden sayılan iki rol;pg-tune.shiçindeki üretilen dosyanın satırlarından sayılan on dört ayar.
Roller¶
| Rol | Nitelikler | Kullanan | Kaynak |
|---|---|---|---|
| uygulama rolü | LOGIN, CREATEDB, NOSUPERUSER, NOBYPASSRLS |
Kontrol düzlemi ve kiracı veritabanlarını kendisi oluşturan sunucu. | deploy/postgres-roles.sql:13-27 |
| yedek rolü | LOGIN, BYPASSRLS, NOSUPERUSER, NOCREATEDB, pg_read_all_data üyesi |
Yalnız yedek çalıştırıcısı. | deploy/postgres-roles.sql:29-42 |
Betikte yazılı kurallar:
- Her veritabanı sunucusunda, her veri ikameti bölgesi dahil çalıştırın (
deploy/postgres-roles.sql:2-3). - Çalıştırmadan önce iki parolayı da değiştirin. DDL ifadelerini günlüğe yazan bir sunucuda parolaları bunun yerine sonradan
\passwordile ayarlayın (deploy/postgres-roles.sql:5-8). - Yeniden çalıştırmak güvenlidir: var olan bir rol parolasını korur ve yalnız nitelikler yeniden uygulanır (
deploy/postgres-roles.sql:10-11). - Uygulama rolüne hiçbir zaman
BYPASSRLSverilmez; bu, özel tablolardaki satır korumasını kapatırdı (deploy/postgres-roles.sql:13-15).
CLUSTER_ERP_BACKUP_DB_USER ve CLUSTER_ERP_BACKUP_DB_PASSWORD (veya CLUSTER_ERP_BACKUP_DB_PASSWORD_FILE) ayarları çalıştırıcıyı yedek rolüne yönlendirir (src/cluster_erp/server/backup_tenants.py:67-80). Bkz. yapılandırma başvurusu.
Yedek rolü denetimi¶
Her dökümden önce assert_dump_role_can_read_everything, PostgreSQL'e döküm rolünün süper kullanıcı olup olmadığını veya BYPASSRLS niteliği taşıyıp taşımadığını ve süper kullanıcı ya da pg_read_all_data üyesi olup olmadığını sorar. Yanıtlardan biri hayır olduğunda çalıştırıcı rolü ve eksik niteliği adlandıran bir hatayla durur (src/cluster_erp/server/backup_tenants.py:105-144). postgres-roles.sql dosyasının son SELECT ifadesi iki rol için aynı nitelikleri gösterir (deploy/postgres-roles.sql:44-52).
Ayar değerleri¶
pg-tune.sh düğümün belleğini ve işlemci sayısını okur, PostgreSQL 16'nın conf.d klasörüne tek bir dosya yazar ve PostgreSQL'i yeniden başlatır (deploy/pg-tune.sh:23-25, deploy/pg-tune.sh:33-69).
| Ayar | Yazılan değer | Kaynak |
|---|---|---|
shared_buffers |
belleğin dörtte biri | deploy/pg-tune.sh:37, deploy/pg-tune.sh:51 |
effective_cache_size |
belleğin yüzde 60'ı | deploy/pg-tune.sh:38, deploy/pg-tune.sh:52 |
maintenance_work_mem |
bellek bölü 16, en çok 2048 MB | deploy/pg-tune.sh:39, deploy/pg-tune.sh:53 |
work_mem |
(bellek eksi paylaşılan tamponlar) bölü 4 ve bölü 100, 8 ile 64 MB arası | deploy/pg-tune.sh:40-42, deploy/pg-tune.sh:54 |
random_page_cost |
1.1 |
deploy/pg-tune.sh:55 |
effective_io_concurrency |
200 |
deploy/pg-tune.sh:56 |
wal_buffers |
16MB |
deploy/pg-tune.sh:57 |
min_wal_size |
1GB |
deploy/pg-tune.sh:58 |
max_wal_size |
belleğin dörtte biri, 1024 ile 8192 MB arası | deploy/pg-tune.sh:43-45, deploy/pg-tune.sh:59 |
checkpoint_completion_target |
0.9 |
deploy/pg-tune.sh:60 |
max_worker_processes |
işlemci sayısı | deploy/pg-tune.sh:61 |
max_parallel_workers |
işlemci sayısı | deploy/pg-tune.sh:62 |
max_parallel_workers_per_gather |
işlemci sayısının yarısı, en az 1 | deploy/pg-tune.sh:46, deploy/pg-tune.sh:63 |
max_parallel_maintenance_workers |
işlemci sayısının yarısı, en az 1 | deploy/pg-tune.sh:46, deploy/pg-tune.sh:64 |
Kısıtlar ve doğrulama¶
- Betik yalnız root olarak, yalnız PostgreSQL 16
conf.dklasörü varsa ve yalnızpostgresql.confo klasörü içeriyorsa çalışır (deploy/pg-tune.sh:28-31). - 1 GB'tan az belleği olan bir düğümü reddeder (
deploy/pg-tune.sh:35). - Yeniden başlatmadan sonra uygulanan ayarlardan yedisini yazar ve uygulamanın yeniden başlatılmasını ister (
deploy/pg-tune.sh:70-72). - Sunucunun açılışı, işçi sayısı çarpı havuz artı taşma
max_connectionsdeğerini aşınca uyarır (src/cluster_erp/server/app.py:610-631).pg-tune.sh,max_connectionsdeğerini değiştirmez.
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| yedek rolü | CLUSTER_ERP_BACKUP_DB_USER |
Tam döküm almak için satır korumasını aşarak okuyan, yalnız yedek çalıştırıcısının kullandığı veritabanı rolü. | yedek rolü | deploy/postgres-roles.sql:29-42 |
| satır koruması | FORCE ROW LEVEL SECURITY |
Özel tablolarda tablo sahibine de uygulanan satır düzeyi güvenlik. | satır koruması | src/cluster_erp/server/backup_tenants.py:105-113 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.