Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı'nda ana sürüm yükseltmeleri

PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz PostgreSQL sürüm 18, 17, 16, 15, 14, 13, 12, 11'i destekler. Postgres topluluğu, yılda bir kez yeni özellikler içeren yeni bir ana sürüm yayınlar. Ayrıca, her ana sürüm küçük sürümler biçiminde düzenli hata düzeltmeleri alır. İkincil sürüm yükseltmeleri, mevcut uygulamalarla geriye dönük uyumlu değişiklikler içerir. PostgreSQL için Azure Veritabanı esnek sunucu örneği, müşterinin bakım penceresi sırasında ikincil sürümleri düzenli aralıklarla güncelleştirir.

Ana sürüm yükseltmeleri, ikincil sürüm yükseltmelerinden daha karmaşıktır. Bunlar, mevcut uygulamalarla geriye dönük olarak uyumlu olmayan iç değişiklikler ve yeni özellikler içerebilir.

PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz, tek bir tıklamayla sunucunun yerinde ana sürüm yükseltmesini gerçekleştiren bir özelliğe sahiptir. Bu özellik, sunucuya erişen kullanıcıların ve uygulamaların kesintisini en aza indirerek yükseltme işlemini basitleştirir.

Yerinde yükseltmeler, ana sürümün yükseltildikten sonra geçerli sunucunun sunucu adını ve diğer ayarlarını korur. Veri geçişi veya uygulama bağlantı dizesi değişiklik gerektirmez. Yerinde yükseltmeler, veri taşımaya göre daha hızlıdır ve daha az kesinti süresi yaşatır.

Uyarı

PostgreSQL için Azure Veritabanı, yalnızca şu anda desteklenen PostgreSQL sürümlerine yerinde ana sürüm yükseltmelerini destekler. Örneğin, yükseltme sırasında hedef sürümün Azure tarafından resmi olarak desteklendiği göz önüne alındığında geçerli sürümü yükseltebilirsiniz. Desteklenmeyen sürümler yükseltme hedefleri olarak seçilemez ve kullanım dışı bir sürüme yükseltme girişimi hataya veya hizmet kesintisine neden olabilir. Ana sürüm yükseltmesi başlatmadan önce her zaman Azure PostgreSQL sürüm oluşturma ilkesine ve yükseltme belgelerine başvurun .

Uyarı

PostgreSQL 18'e ana sürüm yükseltmeleri aşamalar halinde etkinleştiriliyor. Şu anda AvustralyaSoutheast, CanadaCentral, CentralIndia, CentralUS, EastAsia, EastUS, EastUS2, NorthCentralUS, SouthAfricaNorth, SouthCentralUS, SwedenCentral, WestCentralUS, WestUS2 ve WestUS3 bölgelerinde MVU to PostgreSQL 18 kullanılabilir.

Yükseltme İşlemi

Yerinde ana sürüm yükseltmeleriyle ilgili dikkat edilmesi gereken önemli noktalardan bazıları şunlardır:

  • Yükseltmeye başlamadan önce sunucunuzda en az 10-20% boş depolama alanı olduğundan emin olun. Yükseltme işlemi sırasında, geçici günlük dosyaları ve meta veri işlemleri disk kullanımını artırabilir. Yetersiz boş alan yükseltme hatalarına veya geri alma sorunlarına neden olabilir.
  • Yerinde ana sürüm yükseltme işlemi sırasında PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz, yükseltmenin başarısız olmasına neden olabilecek olası sorunları belirlemek için bir ön denetim yordamı çalıştırır.
    • Ön denetim herhangi bir uyumsuzluk bulursa, bir hata iletisiyle birlikte yükseltme ön denetiminin başarısız olduğunu gösteren bir günlük olayı oluşturur.
    • Ön denetim başarılı olursa PostgreSQL için Azure Veritabanı esnek sunucu örneği hizmeti durdurur ve yükseltmeyi başlatmadan hemen önce örtük bir yedekleme alır. Hizmet, bir yükseltme hatası olduğunda veritabanı örneğini önceki sürümüne geri yüklemek için bu yedeklemeyi kullanabilir.
  • PostgreSQL için Azure Veritabanı esnek sunucu örneği, yerinde ana sürüm yükseltmeleri gerçekleştirmek için pg_upgrade aracını kullanır. Hizmet, sürümleri atlama ve doğrudan sonraki sürümlere yükseltme esnekliği sağlar.
  • Yüksek kullanılabilirlik (HA) için etkinleştirilen bir sunucunun yerinde ana sürüm yükseltmesi sırasında hizmet HA'yı devre dışı bırakır, birincil sunucuda yükseltmeyi gerçekleştirir ve yükseltme tamamlandıktan sonra HA'yı yeniden etkinleştirir.
  • Uzantıların çoğu, bazı özel durumlar dışında yerinde ana sürüm yükseltmesi sırasında otomatik olarak sonraki sürümlere yükseltilir.
  • PostgreSQL için Azure Veritabanı esnek sunucu örneği için yerinde ana sürüm yükseltme işlemi, desteklenen en son ikincil sürümü otomatik olarak dağıtır.
  • Yerinde ana sürüm yükseltmesi çevrimdışı bir işlemdir ve bu işlem sırasında sunucunun kullanılamayacağı anlamına gelir. Çoğu yükseltme 15 dakikadan kısa bir süre içinde tamamlasa da, gerçek süre veritabanının boyutuna ve karmaşıklığına bağlıdır. Özellikle, gerekli süre PostgreSQL örneğinizdeki nesne sayısıyla (tablolar, dizinler, şemalar) doğrudan orantılıdır. Daha büyük veya daha karmaşık şemalar daha uzun yükseltme süreleri yaşayabilir.
  • Yükseltmeden önce uzun süre çalışan işlemler veya yüksek iş yükü veritabanını kapatmak için geçen süreyi artırabilir ve yükseltme süresini artırabilir.
  • Yerinde ana sürüm yükseltmesi başarılı olduktan sonra, önceki sürüme geri dönmenin otomatik bir yolu yoktur. Ancak, veritabanı örneğinin önceki sürümünü geri yüklemek için yükseltmeden önceki bir zamana yönelik belirli bir noktaya kadar geri yükleme (PITR) gerçekleştirebilirsiniz.
  • PostgreSQL için Azure Veritabanı esnek sunucu örneğiniz, yükseltme sırasında veritabanınızın anlık görüntüsünü alır. Yükseltme başlamadan önce anlık görüntü alınır. Yükseltme başarısız olursa sistem veritabanınızı anlık görüntüden durumuna otomatik olarak geri yükler.
  • PostgreSQL 16, rol tabanlı güvenlik önlemlerini tanıtır. PostgreSQL için Azure Veritabanı esnek sunucu örneğinde ana sürüm yükseltmesinin ardından, sunucuda oluşturulan ilk kullanıcı (YÖNETİÇİ seçeneği verilmiştir) artık temel bakım işlemleri için diğer roller üzerinde yönetici ayrıcalıklarına sahip olacak.

Yükseltmeyle İlgili Önemli Noktalar ve Sınırlamalar

Yerinde ana sürüm yükseltmesi sırasında ön denetim işlemi başarısız olursa, yükseltme ayrıntılı bir hata iletisiyle engellenir. Yükseltmenin başarısız olmasına veya beklenmedik şekilde davranmasına neden olabilecek bilinen sınırlamalar aşağıdadır:

Desteklenmeyen Sunucu Yapılandırmaları

  • Yerinde yükseltmeler sırasında okuma replika desteklenmez. Birincil sunucuyu yükseltmeden önce okuma çoğaltmasını (basamaklı okuma çoğaltmaları dahil) silmeniz gerekir. Yükseltmeden sonra replikayı yeniden oluşturabilirsiniz.
  • Ağ trafiği kuralları yükseltme işlemlerini engelleyebilir.
    • Esnek sunucu örneğinizin sanal ağı içindeki 5432 ve 6432 bağlantı noktalarından ve Azure Depolama'ya (günlük arşivleme için) trafik gönderebildiğinden/alabildiğinden emin olun.
    • Ağ Güvenlik Grupları (NSG) bu trafiği kısıtlarsa, HA yükseltme sonrasında otomatik olarak yeniden etkinleştirilmez. NSG kurallarını el ile güncelleştirmeniz ve HA'yı yeniden etkinleştirmeniz gerekebilir.
  • Mantıksal çoğaltma yuvaları yerinde ana sürüm yükseltmeleri sırasında desteklenmez.
  • SSDv2 depolama alanı kullanan sunucular ana sürüm yükseltmeleri için uygun değildir.
  • Bağımlı pg_stat_activity görünümler, ana sürüm yükseltmeleri sırasında desteklenmez.
  • PG11'den daha yüksek bir sürüme yükseltme gerçekleştiriyorsanız, önce SCRAM'ı etkinleştirerek ve tüm oturum açma rolü parolalarını sıfırlayarak esnek sunucunuzu SCRAM kimlik doğrulamasını kullanacak şekilde yapılandırmanız gerekir.

Uzantı Sınırlamaları

Yerinde ana sürüm yükseltmeleri tüm PostgreSQL uzantılarını desteklemez. Desteklenmeyen uzantılar bulunursa yükseltme ön denetim sırasında başarısız olur.

  • Aşağıdaki uzantılar düzenli kullanım için desteklenir , ancak varsa yerinde ana sürüm yükseltmesini engeller. Yükseltmeden önce kaldırın ve hedef sürümde destekleniyorsa yeniden etkinleştirin: timescaledb, dblink, orafce, postgres_fdw.
  • Aşağıdaki uzantılar kalıcı olmayan yardımcı program uzantılarıdır ve tasarım gereği yükseltmeden sonra bırakılması ve yeniden oluşturulması gerekir: pg_repack, hypopg.
  • PostgreSQL 17'ye yükseltirken aşağıdaki uzantılar desteklenmez ve yükseltmeden önce kaldırılmalıdır. Bunları yalnızca hedef sürümde destekleniyorsa yeniden etkinleştirebilirsiniz: age, azure_ai, hll, pg_diskann, pgrouting.

Not: Bu uzantılardan herhangi biri sunucu parametresinde azure.extensions görünürse yükseltme engellenir. Yükseltmeyi başlatmadan önce bunları parametresinden kaldırın.

PostGIS-Specific Düşünceler

PostGIS veya bağımlı uzantılar kullanıyorsanız, search_path sunucu parametresini şunları içerecek şekilde yapılandırmanız gerekir:

  • PostGIS ile ilgili şemalar
  • Bağımlı uzantılar, dahil olmak üzere: postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, address_standardizer, address_standardizer_data_us, fuzzystrmatch
  • search_path doğru yapılandırılmaması, yükseltme sonrasında yükseltme hatalarına veya bozuk nesnelere yol açabilir.

Yükseltmeyle ilgili dikkat edilmesi gereken diğer noktalar

  • Olay tetikleyicileri: Yükseltme ön denetimi, DDL komutlarına bağlandıkları ve diğer ana sürümler arasında değişen sistem kataloglarına başvurabilecek olmaları nedeniyle olay tetikleyicilerini engeller; yükseltmeden önce tüm EVENT TRIGGER öğelerini bırakın ve sorunsuz bir yükseltme işlemi sağlamak için yükseltmeden sonra yeniden oluşturun.
  • Büyük nesneler (LO'lar): Milyonlarca büyük nesneye (içinde pg_largeobject depolanan) sahip veritabanları, yüksek bellek kullanımı veya günlük hacmi nedeniyle yükseltme hatalarına neden olabilir. Kullanılmayan LO'ları temizlemek için vacuumlo yardımcı programını kullanın ve birçok LO hala kullanılıyorsa yükseltmeden önce sunucunuzun ölçeğini artırmayı göz önünde bulundurun.

Uyarı

Vacuumlo ile dikkatli olun. vacuumlo geleneksel başvuru sütunlarına (oid, lo) göre yalnız bırakılmış büyük nesneleri tanımlar. Uygulamanız özel veya dolaylı başvuru türleri kullanıyorsa, geçerli büyük nesneler yanlışlıkla silinebilir. Ayrıca, vacuumlo özellikle milyonlarca büyük nesneye sahip veritabanlarında önemli CPU, bellek ve IOPS tüketebilir. Bakım pencereleri sırasında çalıştırın ve önce üretim dışı ortamda test edin.

Yükseltme sonrası

Ana sürüm yükseltmesi tamamlandıktan sonra, ANALYZE komutunu her veritabanında çalıştırarak pg_statistic tablosunu yenilemenizi öneririz. Eksik veya eski istatistikler hatalı sorgu planlarına yol açabilir ve bu da performansı düşürebilir ve aşırı bellek alabilir.

postgres=> analyze;
ANALYZE

Yükseltme günlüklerini görüntüleme

Ana sürüm yükseltme günlükleri (PG_Upgrade_Logs), ayrıntılı sunucu günlüklerine doğrudan erişim sağlar. PG_Upgrade_Logs Yükseltme sürecinizle tümleştirmek, yeni PostgreSQL sürümlerine daha sorunsuz ve şeffaf bir geçiş sağlamaya yardımcı olabilir.

Aşağıdaki sunucu parametrelerini kullanarak ana sürüm yükseltme günlüklerinizi sunucu günlükleriyle aynı şekilde yapılandırabilirsiniz:

  • Özelliği açmak için logfiles.download_enable değerini ON olarak ayarlayın.
  • Gün cinsinden günlük dosyalarının saklama süresini tanımlamak için logfiles.retention_days kullanın.

Yükseltme günlüklerini ayarlama

kullanmaya PG_Upgrade_Logsbaşlamak için PostgreSQL sunucu günlüklerinin ve ana sürüm yükseltme günlüklerinin yakalanmasını yapılandırabilirsiniz.

Sunucu günlükleri için kullanıcı arabirimi aracılığıyla yükseltme günlüklerine erişebilirsiniz. Burada PostgreSQL ana sürüm yükseltmelerinizin ilerleme durumunu ve ayrıntılarını gerçek zamanlı olarak izleyebilirsiniz. Bu kullanıcı arabirimi günlükleri görüntülemek için merkezi bir konum sağlar, böylece yükseltme işlemini daha kolay izleyebilir ve sorunlarını giderebilirsiniz.

Yükseltme günlüklerini kullanmanın avantajları

  • İçgörü sağlayan tanılamalar: PG_Upgrade_Logs Yükseltme işlemiyle ilgili değerli içgörüler sağlar. Gerçekleştirilen işlemler hakkında ayrıntılı bilgileri yakalar ve oluşan hataları veya uyarıları vurgular. Bu ayrıntı düzeyi, daha sorunsuz bir geçiş için yükseltme sırasında ortaya çıkabilecek sorunları tanılama ve çözme açısından önemlidir.
  • Kolaylaştırılmış sorun giderme: Bu günlüklere doğrudan erişimle olası yükseltme engellerini hızla tanımlayıp giderebilir, kapalı kalma süresini azaltabilir ve işlemlerinizin üzerindeki etkiyi en aza indirebilirsiniz. Günlükler, daha verimli ve etkili bir sorun çözümü sağlayarak önemli bir sorun giderme aracı görevi görür.

Uyarı

Yerinde ana sürüm yükseltmeleri otomatik olarak dağıtılan sunucularda desteklenir. Otomatik olarak dağıtılan bir sunucuda başarılı bir yerinde Ana Sürüm Yükseltmesi sonrasında, kullanıcı adı biçimi username@servername artık desteklenmeyecektir. Bunun yerine standart biçimi kullanmanız gerekir: kullanıcı adı. Kimlik doğrulaması sorunlarını önlemek için uygulamalarınızdaki ve betiklerinizdeki tüm bağlantı dizelerini dikkatle gözden geçirin ve güncelleştirerek yükseltmeden sonra güncelleştirilmiş kullanıcı adı biçimini kullandıklarından emin olun.