Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Introduction to the check report of a major engine version upgrade for an ApsaraDB RDS for PostgreSQL instance

Son Güncelleme:Oct 03, 2026

Büyük bir motor sürümü yükseltmesi başlamadan önce ApsaraDB RDS for PostgreSQL bir yükseltme kontrolü yürütür ve kontrol raporu oluşturur. Kontrol sonucu yükseltmenin devam edip edemeyeceğini belirler:

  • Hatalar yükseltmeyi engeller; yükseltmeyi yeniden çalıştırmadan önce tüm hataları giderin.

  • Uyarılar yükseltmeyi engellemez ancak kaynaklar yetersiz olduğunda salt okunur süresini uzatabilir veya yükseltmenin başarısız olmasına neden olabilir.

Kontrol raporunu görüntülemek için konsolda Major Version Upgrade sayfasına gidin, Upgrade Check sekmesini seçin ve ardından hedef rapor için View Information seçeneğine tıklayın.

Aşağıdaki tabloda tüm kontrol modülleri ve bunların yükseltme uygunluğu üzerindeki etkisi özetlenmiştir.

Kontrol modülü Kapsam Tetiklendiğindeki etki
Uyarılar Tüm yükseltme modları Engellemez; kaynak kısıtlamaları altında salt okunur süresini uzatabilir veya hataya neden olabilir
Hatalar Tüm yükseltme modları Yükseltmeyi engeller; yeniden denemeden önce çözülmelidir
pg_upgrade hata günlüğü Tüm yükseltme modları Hatalar algılandığında dahil edilir; uyumsuz eklentileri ve anahtar sözcükleri listeler
Mantıksal çoğaltma uyumsuzlukları Yalnızca sıfır kesinti modu Uyumsuz nesneler mevcutsa sıfır kesinti modunu engeller

İlgili konular

Uyarılar

Uyarılar, salt okunur süresini uzatabilecek veya yükseltmenin başarısız olmasına neden olabilecek kaynak kısıtlamalarını ya da koşulları işaret eder. Yükseltme engellenmez ancak başlatmadan önce uyarıları ele alın.

Kontrol içeriği

Veritabanı nesnelerinin sayısı, yükseltme sırasında örneğin ne kadar süreyle salt okunur durumda kalacağını ve gerekli bellek ile depolama alanını belirler. Kontrol potansiyel bir kaynak yetersizliği algıladığında Upgrade Check sekmesinde Önerilen bellek kapasitesi, Önerilen minimum bellek kapasitesi ve Önerilen disk boyutu değerlerini raporlar.

Sıfır kesinti yükseltmeleri için kontrol ayrıca dizileri de sayar çünkü mantıksal çoğaltma dizileri otomatik olarak senkronize edemez; bunlar yükseltme sonunda kısa bir geçiş aşaması gerektirir.

Önerilen bellek kapasitesi: Örnek belleği bu değere eşit veya daha yüksek olduğunda sistem tüm veritabanlarını eşzamanlı olarak yükseltir ve salt okunur süresini en aza indirir.

Önerilen minimum bellek kapasitesi: Örnek belleği bu değere eşit veya daha yüksek olduğunda yükseltme yetersiz bellek nedeniyle başarısız olmaz. Ancak sistem veritabanlarını ardışık olarak yükseltir; bu durum salt okunur süresini uzatır.

Önerilen disk boyutu: Yükseltme sırasında sistem tüm nesne tanımlarını geçici olarak çoğaltır; bu işlem inode tüketimini kabaca iki katına çıkarır. Kullanılabilir depolama alanı bu değerin altına düşerse yükseltme başarısız olabilir.

Dizi tablosu sayısı kontrolü (yalnızca sıfır kesinti modu): Mantıksal çoğaltma dizileri senkronize etmez. Örnekte bulunan dizi sayısı arttıkça sıfır kesinti yükseltmesinin sonunda gerçekleşen geçiş süresi uzar.

Uyarılar ve çözümler

Disk uyarısı

Uyarı formatı: Total disk space: {*} GB; Used disk: {*} GB; Used inodes: {*}; bytes-per-nodes: {*}; Minimum disk space required for upgrade: {*} GB

Neden: Örnekte çok fazla nesne bulunur; mevcut depolama alanı yükseltme için yetersizdir.

Çözüm:

  • Mavi-yeşil dağıtım modu: Yeni örneğin depolama kapasitesini, yükseltme için gereken minimum disk alanına eşit veya daha büyük bir değere ayarlayın.

  • Yerel yükseltme modu: Yükseltmeye başlamadan önce örneğin depolama kapasitesini, yükseltme için gereken minimum disk alanına eşit veya daha büyük bir değere genişletin. Daha fazla bilgi için bkz. Change the configuration.

Bellek uyarısı

Uyarı formatı: Current memory: {*} GB; Recommended memory: {*} GB; Minimum memory: {*} GB

Neden: Örnekte çok fazla nesne bulunur; mevcut bellek, yükseltme sırasında salt okunur süresini en aza indirmek için yetersizdir.

Çözüm:

  • Mavi-yeşil dağıtım modu: Yeni örneğin teknik özelliklerini, belleğinin minimum bellek gereksinimini karşılayacak şekilde ayarlayın.

  • Yerel yükseltme modu: Mevcut bellek önerilen bellek kapasitesinden azsa örnek teknik özelliklerini yükseltin. Daha fazla bilgi için bkz. Change the configuration.

Abonelik uyarısı

Uyarı formatı: The instance has replication slot subscribers. To prevent subscription data inconsistency, see the Alibaba Cloud documentation

Neden: Örnekte çoğaltma yuvası aboneleri bulunur. Kontrol etmek için aşağıdaki sorguyu çalıştırın:

SELECT * FROM pg_subscription;

Çözüm: Çoğaltma yuvası abonelerini yönetmek için Upgrade the database major version konusundaki adımları izleyin.

Dizi uyarısı (yalnızca sıfır kesinti modu)

Uyarı formatı: Total Sequence tables: {0}. Too many Sequence tables will extend the switchover time for logical replication major version upgrade.

Neden: Örnek diziler içerir. Bunları listelemek için aşağıdaki sorguyu çalıştırın:

SELECT * FROM pg_sequences;

Çözüm: Örnekte çok sayıda dizi varsa üretim ortamını yükseltmeden önce gerçek geçiş süresini ölçmek için örneği klonlayın ve bir test yükseltmesi çalıştırın.

Hatalar

Hatalar yükseltmeyi engeller. Yükseltme kontrolünü yeniden çalıştırmadan önce tüm hataları giderin.

Kontrol içeriği

Sistem aşağıdaki koşulları kontrol eder:

  • Gereksiz süper kullanıcı hesapları veya standart hesaplar için yapılandırılmış geçersiz şifreleme yöntemleri

  • Hedef büyük motor sürümüyle uyumsuz eklentiler veya anahtar sözcükler (pg_upgrade hata günlüğünde kaydedilir)

  • pg_catalog şemasında yüklü pgcrypto eklentisi

  • (Yalnızca sıfır kesinti modu) 20250228 tarihinden eski küçük motor sürümü

  • (Yalnızca sıfır kesinti modu) Mantıksal çoğaltma ile uyumsuz veritabanı nesneleri

Hatalar ve çözümler

Hesap hatası

Hata formatı: Invalid superuser account: {*}; Invalid account: {*}; Please see the Alibaba Cloud documentation

Neden: Örnekte yedek süper kullanıcı hesapları veya geçersiz şifreleme yapılandırmalarına sahip standart hesaplar bulunur.

Çözüm:

  • Yedek süper kullanıcı hesapları: Silme talebinde bulunmak için bir ticket gönderin.

  • Geçersiz standart hesaplar: Etkilenen hesapların parolalarını sıfırlayın.

Ön kontrol hatası

Hata formatı: pg_upgrade pre-check task failed, need to check [pg_upgrade error log] and [pg_upgrade-related files and errors]

Neden: pg_upgrade ön kontrolü başarısız oldu.

Çözüm: Belirli sorunu belirlemek ve çözmek için kontrol raporunun pg_upgrade hata günlüğü bölümünü inceleyin.

pgcrypto eklenti hatası

Hata formatı: The pg_crypto extension is installed in schema: pg_catalog in database: {*}, please see the Alibaba Cloud documentation

Neden: pgcrypto eklentisi, yalnızca daha sonraki PostgreSQL sürümlerinde bulunan işlevleri pg_catalog içinde oluşturur. Bu durum büyük motor sürümü yükseltmesinin başarısız olmasına neden olur.

Çözüm: Etkilenen her veritabanında pgcrypto eklentisini kaldırın ve pg_catalog dışındaki bir şemada yeniden oluşturun.

Küçük sürüm hatası (yalnızca sıfır kesinti modu)

Hata formatı: Zero-downtime major version upgrade requires minimum minor version 20250228

Neden: Örneğin küçük motor sürümü 20250228 tarihinden eskidir.

Çözüm: Küçük motor sürümünü 20250228 veya daha yenisine Upgrade the minor engine version konusundaki adımları izleyerek yükseltin.

pg_upgrade hata günlüğü

Kontrol içeriği

pg_upgrade hata günlüğü, hedef büyük motor sürümüyle uyumsuz eklentileri ve SQL anahtar sözcüklerini kaydeder.

Yaygın hatalar

loadable_libraries.txt: uyumsuz eklentiler

loadable_libraries.txt dosyası, hedef PostgreSQL sürümü tarafından yüklenemeyen kitaplık dosyalarını listeler. Her kitaplık genellikle bir eklentiye karşılık gelir.

Neden: Yüklü bir veya daha fazla eklenti hedef büyük motor sürümüyle uyumsuzdur.

Çözüm: loadable_libraries.txt içinde listelenen eklentileri kontrol edin. Her eklenti için uygulamanızın buna bağlı olup olmadığını doğrulayın; ardından yükseltmeden önce kaldırıp kaldırmayacağınıza karar verin. Her sürümde desteklenen eklentilerin listesi için bkz. Supported extensions.

Aşağıdaki bölümlerde en yaygın uyumsuz eklentiler açıklanmaktadır.

pgrouting

Neden: pgrouting eklentisi hedef büyük motor sürümüyle uyumsuzdur.

Çözüm: Uygulamanız artık gerektirmiyorsa yükseltmeden önce eklentiyi kaldırın. Devam etmeden önce örneğin pgrouting olmadan doğru çalıştığını doğrulayın.

Önemli

pgrouting (veya PostGIS, veya postgis_topology) yüklüyse aşağıdaki sürüm yükseltme sınırlamaları geçerlidir:

  • PostgreSQL 9.4 yalnızca PostgreSQL 10 veya PostgreSQL 11'e yükseltilebilir.

  • PostgreSQL 10 yalnızca PostgreSQL 11'e yükseltilebilir.

  • PostgreSQL 11, 12 veya 13 yükseltilemez.

jsonbx

Neden: jsonbx eklentisi, o sürümde bulunmayan JSON veri türü işlemlerini sağlamak amacıyla PostgreSQL 9.4'te tanıtıldı. PostgreSQL 10 ve sonraki sürümler bu işlemleri yerel olarak desteklediğinden eklentiye artık gerek yoktur.

Çözüm: Uygulamanızın kullandığı jsonbx işlevlerini gözden geçirin; ardından bu işlevlerin hedef sürümdeki davranışlarını kontrol edin. Davranış farklılıkları kabul edilebilirse yükseltmeden önce eklentiyi kaldırın.

Aşağıdaki tabloda jsonbx işlev davranışının PostgreSQL 9.4 ile PostgreSQL 10+ arasındaki farkları gösterilmektedir:

İşlev kullanımı PostgreSQL 9.4 sonucu PostgreSQL 10+ sonucu
select '{"a":1, "b":2, "c":3}'::jsonb - 2; {"a": 1, "b": 2} ERROR: cannot delete from object using integer index
select jsonb_delete('{"a":1, "b":2, "c":3}'::jsonb, '{b}'::text[]); {"a": 1, "c": 3} ERROR: function jsonb_delete(jsonb, text[]) does not exist
select '{"a":{"c":1, "d":2}, "b":3}'::jsonb - '{a, c}'::text[]; {"a": {"d": 2}, "b": 3} {"b": 3}

PostGIS ve postgis_topology

Neden: Yüklü PostGIS sürümü, hedef büyük motor sürümünün kitaplık bağımlılıklarıyla uyumsuzdur.

Önemli

Tanınmış metin (WKT) biçimi için PostGIS ayrıştırma davranışı büyük sürümler arasında farklılık gösterir. Eklentiyi üretim ortamında yükseltmeden önce örneği klonlayın ve uyumluluğu klonlanmış örnekte test edin. Klonlama adımları için bkz. Back up PostgreSQL data ve Restore PostgreSQL data.

Çözüm:

  1. Küçük motor sürümünü yükseltin.

  2. PostGIS eklentisini güncelleyin. Daha fazla bilgi için bkz. PostGIS extension upgrade.

  3. PostGIS sürümünün en az 3.3.2 olduğunu doğrulayın:

    \dx
  4. Yükseltme kontrolünü yeniden çalıştırın.

Önemli

PostGIS, postgis_topology veya pgrouting yüklüyse sürüm yükseltme sınırlamaları geçerlidir. Ayrıntılar için pgrouting bölümüne bakın.

tables_with_oids.txt: OID'li tablolar

tables_with_oids.txt dosyası, WITH OIDS bildirimiyle oluşturulan tabloları listeler. PostgreSQL 12 ve sonraki sürümler WITH OIDS ifadesini desteklemez.

Neden: Bir veya daha fazla tablo, hedef sürümde desteklenmeyen WITH OIDS bildirimini kullanır.

Çözüm:

  • Seçenek 1 (önerilen): WITH OIDS ifadesini hala destekleyen PostgreSQL 11'e yükseltin.

  • Seçenek 2: tables_with_oids.txt içinde listelenen tabloları gözden geçirin ve uygulamanızın OID değerlerine bağlı olmadığını doğrulayın. Ardından etkilenen her tablo için aşağıdaki ifadeyi çalıştırın:

    ALTER TABLE {table_name} SET WITHOUT OIDS;

Mantıksal çoğaltma uyumsuzlukları (yalnızca sıfır kesinti modu)

Sıfır kesintili büyük motor sürümü yükseltmeleri, verileri kaynak örnekten hedef örneğe senkronize etmek için mantıksal çoğaltma kullanır. Belirli veritabanı nesneleri mantıksal çoğaltma tarafından desteklenmez. Kontrol aşağıdakilerden herhangi birini tespit ederse örnek sıfır kesinti modunu kullanamaz.

Kontrol içeriği

Sistem şunları kontrol eder:

  • Yabancı tablolar

  • Birincil anahtarı veya benzersiz anahtarı olmayan tablolar

  • Materyalize edilmiş görünümler

  • Büyük nesneler

  • Mantıksal çoğaltmayla birlikte kullanılması yasaklanmış eklentiler

  • Mantıksal çoğaltma gereksinimlerini karşılamayan parametre değerleri

Uyumsuzluklar ve çözümler

Yabancı tablolar

Hata formatı: Foreign tables in database: {0}. Total databases: {1}

Neden: Örnek, mantıksal çoğaltmanın çoğaltamadığı yabancı tablolar içerir.

Çözüm: Tüm yabancı tabloları kaldırın.

  1. Her veritabanında yabancı tabloları belirleyin:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('f')
    GROUP BY relkind;
  2. Yabancı tabloları kaldırın:

    DROP FOREIGN TABLE [ IF EXISTS ] name [ CASCADE | RESTRICT ];

Daha fazla bilgi için PostgreSQL documentation on DROP FOREIGN TABLE adresine bakın.

Birincil anahtarı veya benzersiz anahtarı olmayan tablolar

Hata formatı: Tables without primary key or unique key in database: {0}. Total databases: {1}

Neden: Mantıksal çoğaltma, çoğaltma sırasında satırları tanımlamak için her tablonun bir birincil anahtara, benzersiz anahtara veya REPLICA IDENTITY FULL ayarına sahip olmasını gerektirir.

Çözüm: Etkilenen her tabloya bir birincil anahtar veya benzersiz anahtar ekleyin ya da REPLICA IDENTITY FULL ayarını yapın.

  1. Her veritabanında birincil anahtarı veya benzersiz anahtarı olmayan tabloları belirleyin:

    SELECT COUNT(*) AS count
    FROM information_schema.tables t
    LEFT JOIN information_schema.table_constraints tc
        ON t.table_name = tc.table_name
        AND t.table_schema = tc.table_schema
        AND (tc.constraint_type = 'PRIMARY KEY' OR tc.constraint_type = 'UNIQUE')
    JOIN pg_class c
        ON t.table_name = c.relname
    JOIN pg_namespace ns
        ON c.relnamespace = ns.oid
        AND ns.nspname = t.table_schema
    WHERE t.table_type = 'BASE TABLE'
        AND tc.constraint_type IS NULL
        AND t.table_schema NOT IN ('pg_catalog', 'information_schema')
        AND c.relreplident != 'f';
  2. Tabloda REPLICA IDENTITY FULL ayarını yapın (anahtar eklemek mümkün değilse):

    ALTER TABLE name REPLICA IDENTITY FULL;
  3. Veya bir birincil anahtar veya benzersiz anahtar ekleyin:

    -- Primary key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
    
    -- Unique key
    ALTER TABLE name
        ADD CONSTRAINT constraint_name UNIQUE (column_name);

Daha fazla bilgi için PostgreSQL documentation on unique constraints adresine bakın.

Materyalize edilmiş görünümler

Hata formatı: Materialized views in database: {0}. Total databases: {1}

Neden: Mantıksal çoğaltma materyalize edilmiş görünümleri çoğaltamaz.

Çözüm: Tüm materyalize edilmiş görünümleri kaldırın.

  1. Her veritabanında materyalize edilmiş görünümleri belirleyin:

    SELECT COUNT(*) AS count, relkind
    FROM pg_class
    WHERE relkind IN ('m')
    GROUP BY relkind;
  2. Materyalize edilmiş görünümleri kaldırın:

    DROP MATERIALIZED VIEW IF EXISTS name;

Büyük nesneler

Hata formatı: Large objects in database: {0}. Total databases: {1}

Neden: Mantıksal çoğaltma, pg_largeobject içinde depolanan büyük nesneleri çoğaltamaz.

Çözüm: Büyük nesneleri kaldırın.

Uyarı

Büyük nesnelerin kaldırılması geri alınamaz. Silme ifadesini çalıştırmadan önce hiçbir uygulamanın bu nesnelere başvurmadığını doğrulayın. Bu işlemi bir bakım penceresi sırasında gerçekleştirin ve öncelikle üretim dışı bir örnekte test edin.

  1. Her veritabanında büyük nesneleri sayın:

    SELECT COUNT(*) AS count
    FROM pg_largeobject_metadata;
  2. Her büyük nesneyi kaldırın:

    SELECT lo_unlink(largeobject_oid);

Yasaklanmış eklentiler

Hata formatı: Logical replication prohibited extensions in database: {0}. Total databases: {1}

Neden: Aşağıdaki eklentiler mantıksal çoğaltmayla uyumsuzdur ve sıfır kesinti yükseltmesi sırasında mevcut olamaz: pg_partman, pg_cron, pg_active ve pglogical.

Çözüm: Uyumsuz eklentileri geçici olarak kaldırın.

  1. Her veritabanında yasaklanmış herhangi bir eklentinin yüklü olup olmadığını kontrol edin:

    SELECT COUNT(*) AS count
    FROM pg_extension
    WHERE extname IN ('pg_partman', 'pg_cron', 'pg_active', 'pglogical');
  2. Her yasaklanmış eklentiyi kaldırın:

    DROP EXTENSION extension_name;

Parametre gereksinimleri karşılanmadı

Hata formatı: Logical replication requires wal_level to be logical, max_wal_sender and max_replication_slots to be at least {0}, instance wal_level is: {1}, max_wal_sender is: {2}, max_replication_slots is: {3}

Neden: Aşağıdaki parametrelerden biri veya daha fazlası mantıksal çoğaltma gereksinimlerini karşılamıyor: wal_level, max_wal_sender veya max_replication_slots.

Çözüm: Parametre değerlerini güncelleyin. Bazı değişikliklerin etkili olması için yeniden başlatma gerekir. Daha fazla bilgi için bkz. Set the parameters of an instance.