DBAtlas · Veritabanı operasyon atlası

Publication'a tablo ekle ve subscription'ı yenile (REFRESH PUBLICATION)

PostgreSQLLogical Replication

Komut

-- Publisher:
ALTER PUBLICATION pub_app ADD TABLE siparis;
-- PG15+: şemadaki tüm tablolar: ALTER PUBLICATION pub_app ADD TABLES IN SCHEMA sema;
SELECT pubname, schemaname, tablename FROM pg_publication_tables WHERE pubname = 'pub_app';
-- Subscriber (tablo yapısı önceden oluşturulmuş olmalı):
ALTER SUBSCRIPTION sub_app REFRESH PUBLICATION WITH (copy_data = true);
SELECT srrelid::regclass AS table_name, srsubstate FROM pg_subscription_rel ORDER BY 1;

Ne yapar?

Publisher'da yayına yeni tablo ekler; subscriber'da REFRESH PUBLICATION yeni tabloları subscription'a dahil eder ve copy_data = true ile ilk kopyayı (tablesync) başlatır. srsubstate: i = init, d = veri kopyalanıyor, f = kopya bitti, s = senkronize, r = ready.

Ne zaman kullanılır?

Çalışan bir logical replication'a yeni tablo eklendiğinde veya publication'dan tablo çıkarıldığında.

Dikkat

FOR ALL TABLES veya TABLES IN SCHEMA yayınlarında bile subscriber yeni tabloyu REFRESH yapılmadan almaz. Subscriber'da tablo yoksa REFRESH hata verir; DDL replike edilmez. UPDATE/DELETE yayınlanan tabloda PRIMARY KEY veya REPLICA IDENTITY yoksa publisher'da bu işlemler hata verir. Büyük tablonun ilk kopyası publisher'da uzun süre slot ve snapshot tutar.

DBAtlas'ta aç →

İlgili