Etkin olmayan çoğaltma yuvaları, write-ahead logging (WAL) günlüklerinin sürekli birikmesine neden olur. Bu durum ele alınmadığında biriken WAL günlükleri disk alanını tüketir, örneği kilitler ve tüm yazma isteklerini engeller. İş yükünüzü etkilemeden önce etkin olmayan çoğaltma yuvalarını belirlemek ve silmek için WAL günlük yönetimi özelliğini kullanın.
Etkin olmayan çoğaltma yuvalarını derhal silin. Biriken WAL günlükleri aşağıdaki kritik arızaya yol açabilir:
Örnek kilidi: Disk alanı tükendiğinde örnek salt okunur moda geçer ve tüm yazma isteklerini reddeder.
Silinen çoğaltma yuvaları yeniden kullanılamaz.
Arka plan
Bir çoğaltma yuvası, çoğaltma ilerlemesini izler ve tüm aboneler WAL günlüklerini tüketene kadar bu günlüklerin saklanmasını sağlar. Bu yaklaşım, akışlı çoğaltmada veri kaybını önler.
Abone bağlantısı kesildiğinde, yanlış yapılandırıldığında veya uzun bir çoğaltma gecikmesi yaşadığında yuva etkin olmayan duruma geçer. Etkin olmadığı süre boyunca yuva, WAL günlüklerini süresiz olarak tutar; yuva kaldırılana veya yeniden etkinleştirilene kadar checkpoint işlemi bu günlükleri silemez.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir ApsaraDB RDS for PostgreSQL örneği
ApsaraDB RDS konsolu erişimi
Çoğaltma yuvalarını yönetin
Çoğaltma yuvalarını görüntüleyin
Konsolda:
Örnekler sayfasına gidin. Üst gezinme çubuğunda örneğinizin bulunduğu bölgeyi seçin. Örnek kimliğine tıklayın.
Sol gezinme bölmesinde Logs > WAL Logs seçeneğini belirleyin.
WAL File Management sekmesinde çoğaltma yuvaları listesini inceleyin.
Whether Active sütunu (active alanıyla eşlenir) her bir yuvanın durumunu gösterir. INACTIVE durumundaki yuvalar WAL günlüklerini biriktirir.
Aşağıdaki tabloda WAL File Management sekmesindeki tüm alanlar açıklanmaktadır.
| Sütun | **pg_replication_slots içindeki alan** |
Açıklama |
|---|---|---|
| Slot name | slot_name |
Çoğaltma yuvasının adı. |
| Slot type | slot_type |
Çoğaltma yuvası türü: physical veya logical. |
| Plugin | plugin |
Yuva tarafından kullanılan çıktı eklentisi. ApsaraDB RDS for PostgreSQL varsayılan olarak test_decoding, pgoutput ve wal2json desteği sunar. |
| Temporary slot | temporary |
Yuvanın geçici olup olmadığı. Geçici yuva yalnızca mevcut oturum için vardır ve oturum sonlandığında otomatik olarak silinir. Değerler: true (geçici), false (kalıcı). |
| Database name | database |
Çoğaltma yuvasının bulunduğu veritabanı. |
| Accumulated WAL files | AliPG tarafından hesaplanır | Yuva için biriken WAL günlüklerinin hacmi (MB cinsinden). pg_wal_lsn_diff(pg_current_wal_insert_lsn(), restart_lsn) kullanılarak hesaplanır. |
| Logical subscription latency | AliPG tarafından hesaplanır | Bu yuvaya karşılık gelen abone düğümündeki çoğaltma gecikmesi (saniye cinsinden). pg_stat_replication verisinden türetilir. |
| Whether active | active |
Yuvanın kullanımda olup olmadığı. Değerler: ACTIVE, INACTIVE. |
Etkin olmayan bir çoğaltma yuvasını silin
Konsolda:
WAL File Management sekmesinde Whether Active sütununda
INACTIVEdeğeri bulunan bir yuvayı bulun.Çoğaltma yuvası hâlâ kullanılıyorsa durumu ACTIVE olarak değiştirin.
Yuvaya artık ihtiyaç duyulmuyorsa Actions sütunundaki Delete seçeneğine tıklayın.
Etkin çoğaltma yuvaları silinemez.
Silme işleminden sonra yuva tarafından tutulan WAL günlükleri otomatik olarak serbest bırakılır ve checkpoint işlemi tarafından temizlenir.
Kullanım notları
Etkin çoğaltma yuvaları silinemez.
Silinen bir çoğaltma yuvası yeniden kullanılamaz. Çoğaltmaya devam edilmesi gerekiyorsa yeni bir yuva oluşturun.
İlgili parametreler
Aşağıdaki PostgreSQL parametreleri WAL günlüklerinin saklanmasını ve checkpoint davranışını kontrol eder. Bunları örnek parametrelerinde yapılandırın.
| Parametre | Açıklama |
|---|---|
max_wal_size |
Checkpoint işlemini tetikleyen WAL günlük boyutu. |
min_wal_size |
Gelecekteki bir checkpoint işleminde yeniden kullanılmak üzere diskte tutulan minimum WAL günlük boyutu. Bu eşiğin altındaki WAL günlükleri silinmek yerine geri dönüştürülür. |
wal_buffers |
Henüz diske yazılmamış WAL verileri için kullanılan paylaşımlı bellek miktarı. |
Sonraki adımlar
API referansı
DescribeSlots: Bir örnek için tüm çoğaltma yuvalarını sorgulayın.
DeleteSlot: Bir örnekten bir çoğaltma yuvasını silin.