PostgreSQL için Azure Veritabanı’na giriş

Tamamlandı

PostgreSQL için Azure Veritabanı çok sunuculu sürümlerde kullanılabilir.

Uzun yıllar şirket içi PostgreSQL yüklemelerini çalıştırma ve yönetme deneyimine sahip bir veritabanı geliştiricisi olarak, PostgreSQL için Azure Veritabanı özelliklerini nasıl desteklediğini ve ölçeklendirdiği hakkında bilgi edinmek istiyorsunuz.

Bu ünitede PostgreSQL için Azure Veritabanı fiyatlandırma, sürüm desteği, çoğaltma ve ölçeklendirme seçeneklerini keşfedeceksiniz.

PostgreSQL için Azure Veritabanı

PostgreSQL için Azure Veritabanı hizmeti, PostgreSQL'in topluluk sürümünün bir uygulamasıdır. Hizmet, tipik PostgreSQL sistemleri tarafından kullanılan coğrafi uzamsal destek ve tam metin arama gibi ortak özellikleri sağlar.

Microsoft, PostgreSQL'i Azure platformu için uyarlamıştır ve birçok Azure hizmetiyle yakından tümleştirilmiştir. PostgreSQL için Azure Veritabanı hizmeti tamamen Microsoft tarafından yönetilir. Microsoft, yazılım güncelleştirmelerini ve düzeltme eklerini işler ve %99,99 kullanılabilirlik SLA'sı sağlar. Bu, hizmeti kullanarak yalnızca çalışan veritabanlarına ve uygulamalara odaklanabileceğiniz anlamına gelir.

Bu hizmetin her örneğine birden çok veritabanı dağıtabilirsiniz.

Fiyatlandırma katmanları

PostgreSQL için Azure Veritabanı hizmetinin bir örneğini oluşturduğunuzda, fiyatlandırma katmanını seçerek ayırmak istediğiniz işlem ve depolama kaynaklarını belirtirsiniz. Fiyatlandırma katmanı sanal işlemci çekirdeği sayısını, kullanılabilir depolama alanı miktarını ve çeşitli yedekleme seçeneklerini birleştirir. Ne kadar çok kaynak ayırırsanız maliyet o kadar yüksek olur.

PostgreSQL için Azure Veritabanı hizmeti, veritabanı dosyalarınızı, geçici dosyalarınızı, işlem günlüklerinizi ve sunucu günlüklerinizi tutmak için depolamayı kullanır. İsteğe bağlı olarak, geçerli kapasiteye yaklaştığınızda kullanılabilir depolama alanının artırılmasını istediğinizi belirtebilirsiniz. Bu seçeneği belirtmezseniz, depolama alanı tükenen sunucular çalışmaya devam eder, ancak salt okunur olarak çalışır.

Azure portalı fiyatlandırma katmanlarını üç geniş aralıkta gruplandırıyor:

  • Temel, küçük sistemler ve geliştirme ortamları için uygundur, ancak değişken G/Ç performansına sahiptir.
  • İşlemci çekirdeği sayısına ve kullanılabilir depolama alanına bağlı olarak 6000 IOPS'ye kadar tahmin edilebilir performans sağlayan Genel Amaçlı.
  • Bellek için İyileştirilmiş, en fazla 32 bellek için iyileştirilmiş sanal işlemci çekirdeği kullanır ve ayrıca 6000 IOPS'ye kadar öngörülebilir performans sağlar.

Microsoft ayrıca önizleme aşamasında 16 TB'a kadar depolama alanı sağlayıp 20.000 IOPS'ye kadar destek sağlayabilen Büyük depolama seçeneğine sahiptir.

gereken işlemci çekirdeği ve depolama alanı sayısına ince ayar yapabilirsiniz. İşlem kaynaklarının ölçeğini artırıp azaltabilirsiniz; depolama ölçeğini azaltamaz, yalnızca artıramaz ve veritabanlarınızı oluşturduktan sonra gerektiğinde Genel Amaçlı ve Bellek için İyileştirilmiş fiyatlandırma katmanları arasında geçiş yapabilirsiniz. Sadece ihtiyacın olan kadar ödersin.

Image showing the pricing tiers in the Azure portal

Dekont

İşlemci çekirdeği sayısını değiştirirseniz, Azure bu işlem ayırmasıyla yeni bir sunucu oluşturur. Sunucu çalışırken istemci bağlantıları yeni sunucuya geçirilir. Bu anahtar bir dakika kadar sürebilir. Bu aralık boyunca yeni bağlantı yapılamaz ve tüm uçuş içi işlemler geri alınır.

Yalnızca yedekleme seçeneklerinin depolama boyutunu değiştirirseniz hizmette kesinti olmaz.

Fiyatlandırma katmanı ve ayrılan işlem kaynakları, hizmetin destekleyeceği en fazla eşzamanlı bağlantı sayısını belirler. Örneğin, Genel Amaçlı fiyatlandırma katmanını seçip 64 sanal çekirdek ayırırsanız, hizmet 1900 eşzamanlı bağlantıyı destekler. İki sanal çekirdeğe sahip Temel Katman, en fazla 100 eşzamanlı bağlantıyı işler. Azure'ın kendisi, sunucuyu izlemek için bu bağlantılardan beş tane gerektirir. Kullanılabilir bağlantı sayısını aşarsanız, istemciler ÖNEMLİ: ne yazık ki zaten çok fazla istemci var hatasını alır.

Fiyatlar değişebilir. En son bilgiler için PostgreSQL için Azure Veritabanı fiyatlandırma sayfasını ziyaret edin.

Sunucu parametreleri

PostgreSQL'in şirket içi yüklemesinde , postgresql.conf dosyasında sunucu yapılandırma parametrelerini ayarlarsınız. Sunucu parametreleri sayfası aracılığıyla yapılandırma parametrelerini değiştirmek için PostgreSQL için Azure Veritabanı kullanın. PostgreSQL'in şirket içi yüklemesi için tüm parametreler PostgreSQL için Azure Veritabanı için uygun değildir, bu nedenle Sunucu parametreleri sayfasında yalnızca Azure'a uygun olan parametreler listelenir.

Image showing the Server parameters page in the Azure portal

Dinamik olarak işaretlenmiş parametrelerde yapılan değişiklikler hemen geçerlilik kazanır. Statik parametreler sunucunun yeniden başlatılmasını gerektirir. Portalın Genel Bakış sayfasındaki Yeniden Başlat düğmesini kullanarak sunucuyu yeniden başlatırsınız:

Image showing the Overview page in the Azure portal with the Restart button highlighted

Yüksek kullanılabilirlik

PostgreSQL için Azure Veritabanı, yüksek oranda kullanılabilir bir hizmettir. Yerleşik hata algılama ve yük devretme mekanizmaları içerir. Bir donanım veya yazılım sorunu nedeniyle işleme düğümü durursa, yeni bir düğüm değiştirilecek şekilde değiştirilir. Şu anda bu düğümü kullanan tüm bağlantılar bırakılır ancak yeni düğümde otomatik olarak açılır. Başarısız düğüm tarafından gerçekleştirilen tüm işlemler geri alınır. Bu nedenle, istemcilerin başarısız işlemleri algılayıp yeniden deneyecek şekilde yapılandırıldığından her zaman emin olmanız gerekir.

Desteklenen PostgreSQL sürümleri

PostgreSQL için Azure Veritabanı hizmeti şu anda 9.5 sürümüne geri dönerek PostgreSQL sürüm 11'i desteklemektedir. Hizmetin bir örneğini oluştururken hangi PostgreSQL sürümünün kullanılacağını belirtirsiniz. Microsoft, PostgreSQL'in yeni sürümleri kullanıma sunuldukçe hizmeti güncelleştirmeyi hedefler ve önceki iki ana sürümle uyumluluğu sürdürür.

Azure, veritabanlarınıza yapılan yükseltmeleri PostgreSQL'in ikincil sürümleri arasında otomatik olarak yönetir ancak ana sürümler arasında yönetmez. Örneğin, PostgreSQL sürüm 10 kullanan bir veritabanınız varsa, Azure veritabanını otomatik olarak 10.1 sürümüne yükseltebilir. Sürüm 11'e geçmek istiyorsanız, verilerinizi geçerli hizmet örneğindeki veritabanlarından dışarı aktarmanız, PostgreSQL için Azure Veritabanı hizmetinin yeni bir örneğini oluşturmanız ve verilerinizi bu yeni örneğe aktarmanız gerekir.

Koordinatör ve çalışan düğümleri

Veriler parçalanır ve çalışan düğümleri arasında dağıtılır. Koordinatördeki sorgu altyapısı karmaşık sorguları paralel hale getirerek işlemeyi uygun çalışan düğümlerine yönlendirebilir. Çalışan düğümleri, işlenen verileri hangi parçaların barındırdığına göre seçilir. Ardından koordinatör, çalışan düğümlerini istemciye geri göndermeden önce sonuçları biriktirir. Yalnızca tek bir çalışan düğümü kullanılarak daha basit sorgular gerçekleştirilebilir. İstemciler ayrıca koordinatöre bağlanır ve hiçbir zaman bir çalışan düğümüyle doğrudan iletişim kurmaz.

Hizmetinizde çalışan düğümlerinin sayısını gerektiği gibi artırıp azaltabilirsiniz.

Verileri dağıtma

Dağıtılmış tablolar oluşturarak verileri çalışan düğümleri arasında dağıtabilirsiniz. Dağıtılmış bir tablo parçalara ayrılır ve her parça bir çalışan düğümündeki depolamaya ayrılır. Bir sütunu dağıtım sütunu olarak tanımlayarak verilerin nasıl bölündüğünü belirtirsiniz. Veriler, bu sütundaki verilerin değerlerine göre parçalanır. Dağıtılmış bir tablo tasarlarken, dağıtım sütununu dikkatle seçmek önemlidir; genellikle ilgili satırları gruplandırmak için kullanılacak çok sayıda farklı değer içeren bir sütun kullanmanız gerekir. Örneğin, müşterilerin siparişleri hakkındaki bilgileri depolayan bir e-ticaret sisteminin tablosunda, müşteri kimliği makul bir dağıtım sütunu olabilir. Belirli bir müşterinin tüm siparişleri aynı parçada tutulur, ancak tüm müşterilerin siparişleri parçalara yayılır.

Başvuru tabloları da oluşturabilirsiniz. Bu tablolar, şehir adları veya durum kodları gibi arama verilerini içerir. Bir başvuru tablosu, tüm çalışan düğümlerine tamamen çoğaltılır. Başvuru tablosundaki veriler görece statik olmalıdır; her değişiklik için tablonun her kopyasının güncelleştirilmesi gerekir.

Son olarak, yerel tablolar oluşturabilirsiniz. Yerel tablo parçalanmamıştır, ancak koordinatör düğümünde depolanır. Birleştirmeler için gerekli olma olasılığı düşük olan verilerle küçük tablolar tutmak için yerel tabloları kullanın. Örnek olarak kullanıcıların adları ve oturum açma bilgileri verilebilir.

PostgreSQL için Azure Veritabanı'de verileri çoğaltma

Salt okunur çoğaltmalar, yoğun okuma gerektiren iş yüklerini işlemek için kullanışlıdır. İstemci bağlantıları çoğaltmalara yayılarak hizmetin tek bir örneğindeki yük hafifletilebilir. İstemcileriniz dünyanın farklı bölgelerinde bulunuyorsa, verileri her istemci kümesine yakın konumlandırmak ve gecikme süresini azaltmak için bölgeler arası çoğaltma kullanırsınız.

Olağanüstü durum kurtarma için bir acil durum planının parçası olarak çoğaltmaları da kullanabilirsiniz. Ana sunucu kullanılamaz duruma gelirse, yine de bir çoğaltmaya bağlanabilirsiniz.

Dekont

Ana öğe kaybolur veya silinirse, tüm salt okunur çoğaltmalar bunun yerine okuma-yazma sunucularına dönüşür. Ancak, bu sunucular birbirinden bağımsız olacaktır, bu nedenle bir sunucudaki verilerde yapılan değişiklikler kalan sunuculara kopyalanmaz.

Çoğaltma oluşturma

Salt okunur çoğaltma, özgün sunucuda tutulan veritabanlarının bir kopyasını içerir ve bu kopya ana sunucu olarak adlandırılır. Ana şablonun çoğaltmasını oluşturmak için Azure portalını veya CLI'yi kullanırsınız.

Image showing the Replication page for the Azure Database for PostgreSQL service

Salt okunur bir çoğaltma oluşturduğunuzda Azure, PostgreSQL için Azure Veritabanı hizmetinin yeni bir örneğini oluşturur ve sonra veritabanlarını ana sunucudan yeni sunucuya kopyalar. Çoğaltma salt okunur modda çalışır. Verileri değiştirme girişimleri başarısız olur.

Çoğaltma gecikmesi

Çoğaltma zaman uyumlu değildir ve ana sunucudaki verilerde yapılan değişikliklerin çoğaltmalarda görünmesi biraz zaman alabilir. Çoğaltmalara bağlanan istemci uygulamalarının bu nihai tutarlılık düzeyiyle başa çıkabilmesi gerekir. Azure İzleyici, Çoğaltmalar Arasında Maksimum Gecikme ve Çoğaltma Gecikmesi ölçümlerini kullanarak çoğaltmadaki zaman gecikmesini izlemenizi sağlar.

Yönetim ve izleme

Veritabanlarınızı yönetmek ve izlemek üzere PostgreSQL için Azure Veritabanı bağlanmak için pg Yönetici gibi tanıdık araçları kullanabilirsiniz. Ancak sunucu yönetimi ve bakımı Microsoft tarafından gerçekleştirildiğinden sunucuyu yedekleme ve geri yükleme gibi sunucuyla ilgili bazı işlevler kullanılamaz.

Image showing the pgAdmin tool connected to Azure Database for PostgreSQL

İzleme PostgreSQL için Azure Veritabanı için Azure araçları

Azure, sunucu ve veritabanı performansını izlemek ve sorunları gidermek için kullanabileceğiniz kapsamlı bir hizmet kümesi sağlar. Bu hizmetler PostgreSQL'in ayırdığınız Azure kaynaklarını nasıl kullandığınızı görüntülemenizi sağlar. Sisteminizi ölçeklendirmeniz, veritabanlarınızdaki tabloların ve dizinlerin yapısını değiştirmeniz ve çalışma zamanı istatistiklerini ve diğer olayları görselleştirmeniz gerekip gerekmediğini değerlendirmek için bu bilgileri kullanırsınız. Kullanılabilir hizmetler şunlardır:

  • Azure İzleyici. PostgreSQL için Azure Veritabanı CPU ve depolama kullanımı, G/Ç oranları, bellek doluluğu, etkin bağlantı sayısı ve çoğaltma gecikmesi gibi öğeleri izlemenizi sağlayan ölçümler sağlar:

    Image showing the Azure Monitor with metrics for Azure Database for PostgreSQL

  • Sunucu Günlükleri. Azure günlükleri her PostgreSQL sunucusu için kullanılabilir hale getirir. Bunları Azure portalından indirirsiniz:

    Image showing the server logs for an instance of the Azure Database for PostgreSQL service

  • Sorgu Deposu ve Sorgu Performansı Analizler. PostgreSQL için Azure Veritabanı, sunucudaki veritabanlarında çalıştırılacak sorgularla ilgili bilgileri depolar ve bunları query_store şemasında azure_sys adlı bir veritabanına kaydeder. Bu bilgileri görmek için query_store.qs_view görünümünü sorgularsınız. varsayılan olarak, PostgreSQL için Azure Veritabanı küçük bir ek yük getirdiğinden sorgu bilgilerini yakalamaz, ancak pg_qs.query_capture_mode sunucu özelliğini ALL veya TOP olarak ayarlayarak izlemeyi etkinleştirebilirsiniz.

    Image showing the server server parameters page for Azure Database for PostgreSQL

    Ayrıca Sorgu Deposu'nı, beklemeye zaman harcayan sorgular hakkındaki bilgileri yakalayacak şekilde yapılandırabilirsiniz. Başka bir sorgu bir tabloda kilit oluştururken veya sorgu çok fazla G/Ç gerçekleştirdiğinden veya bellek yetersiz olduğundan sorgunun beklemesi gerekebilir. Bu bilgileri query_store.runtime_stats_view görünümünde görürsünüz.

    SQL deyimlerini çalıştırmak yerine bu istatistikleri görselleştirmeyi tercih ediyorsanız Azure portalında Sorgu Performansı İçgörüleri'ni kullanın:

    Image showing Query Performance Insight

  • Performans Önerileri. Azure portalında da kullanılabilen Performans Öneriler yardımcı programı, uygulamalarınızın çalıştırılan sorgularını inceler. Ayrıca veritabanındaki yapılara bakar ve verilerinizi düzenlemeyi ve dizinleri eklemeyi veya kaldırmayı göz önünde bulundurmanız gerekip gerekmediğini önerir.

İstemci bağlantısı

PostgreSQL için Azure Veritabanı bir güvenlik duvarının arkasında çalışır. Hizmetinize ve veritabanınıza erişmek için istemcilerinizin bağlandığı IP adresi aralıkları için bir güvenlik duvarı kuralı eklemeniz gerekir. Hizmete Azure'ın içinden (Azure Uygulaması Hizmetleri kullanılarak çalışan bir uygulama gibi) erişmeniz gerekiyorsa Azure hizmetlerine erişimi de etkinleştirmeniz gerekir.

Güvenlik duvarını yapılandırma

Güvenlik duvarını yapılandırmanın en basit yolu, Azure portalında hizmetiniz için Bağlan ion Güvenlik ayarlarını kullanmaktır. Her istemci IP adresi aralığı için bir kural ekleyin. Bu sayfayı, hizmetinize SSL bağlantılarını zorlamak için de kullanırsınız.

Image showing the firewall configuration for Azure Database for PostgreSQL

Masaüstü bilgisayarınızın IP adresini eklemek için araç çubuğunda İstemci IP'si Ekle'ye tıklayın.

Salt okunur çoğaltmaları yapılandırdıysanız, istemciler için erişilebilir hale getirmek için her birine bir güvenlik duvarı kuralı eklemeniz gerekir.

İstemci bağlantı kitaplıkları

Kendi istemci uygulamalarınızı yazıyorsanız, PostgreSQL veritabanına bağlanmak için uygun veritabanı sürücüsünü kullanmanız gerekir. Bu kitaplıkların çoğu programlama diline bağımlıdır. Bağımsız üçüncü taraflar tarafından korunurlar. PostgreSQL için Azure Veritabanı Python, PHP, Node.js, Java, Ruby, Go, C# (.NET), ODBC, C ve C++ için istemci kitaplıklarını destekler.

İstemci yeniden deneme mantığı

Daha önce de belirtildiği gibi, yüksek kullanılabilirlik kurtarma sırasında yük devretme ve CPU kaynaklarının ölçeğini artırma gibi bazı olaylar bağlantıda kısa bir kesintiye neden olabilir. Devam eden tüm işlemler geri alınır. PostgreSQL için Azure Veritabanı bağlı bir istemciyi otomatik olarak çalışan bir düğüme yönlendirir, ancak istemci tarafından o sırada gerçekleştirilen tüm işlemler hata döndürür. Bu oluşumu geçici bir özel durum olarak değerlendirmelisiniz. Uygulama kodunuz bu özel durumları yakalamaya ve yeniden denemeye hazır olmalıdır.

PostgreSQL için Azure Veritabanı'de desteklenen PostgreSQL özellikleri

PostgreSQL için Azure Veritabanı, PostgreSQL veritabanları tarafından yaygın olarak kullanılan özelliklerin çoğunu destekler, ancak bazı özel durumlar vardır. Desteklenmeyen bir özelliğe ihtiyacınız varsa, bu bağımlılığı kaldırmak için veritabanınızı ve uygulama kodunuzu yeniden çalıştırmanız veya PostgreSQL'i bir sanal makinede çalıştırmayı göz önünde bulundurmanız gerekir. İkinci durumda, sunucuyu yönetmek ve bakımını yapmak için sorumluluk almanız gerekir.

PostgreSQL için Azure Veritabanı'da desteklenen uzantılar

Çoğu PostgreSQL işlevi uzantılarda kapsüllenmiş durumdadır. Uzantılar, sunucuda depolanan SQL nesneleri ve kod paketleridir; bunlar komutu kullanılarak CREATE EXTENSION bir veritabanına yüklenebilir. PostgreSQL için Azure Veritabanı şu anda aşağıdakiler için yaygın olarak kullanılan birçok uzantı sağlar:

  • Veri türleri
  • İşlevler
  • Tam metin araması
  • Dizinler (çiçek açma, btree_gist ve btree_gin)
  • plpgsql dili
  • PostGIS
  • Birçok yönetim işlevi

Bir PostgreSQL sunucusunu diğerine bağlamak için dblink ve postgres_fdw paketlerini kullanırsınız; bu, bir sunucudaki kodun başka bir sunucuda tutulan verilere erişmesini sağlar. PostgreSQL için Azure Veritabanı'da yalnızca PostgreSQL için Azure Veritabanı kullanılarak oluşturulan sunucular arasında bağlantı kurabilirsiniz. Şirket içi veya sanal makine gibi başka bir yerde barındırılan PostgreSQL sunucularına giden bağlantılar oluşturamazsınız.

Dekont

Desteklenen uzantıların listesi sürekli gözden geçiriliyor ve değişebilir. Aşağıdaki sorguyla desteklenen uzantıların listesini oluşturacaksınız. Kendi özel uzantılarınızı oluşturup PostgreSQL için Azure Veritabanı yükleyemezsiniz:

SELECT * FROM pg_available_extensions;

PostgreSQL için Azure Veritabanı şunları içerir:İsteğe bağlı bir uzantı olarak TimescaleDB veritabanı. Bu veritabanı, zaman serisi iş yüklerini destekleyen zamana dayalı analiz işlevleri ve diğer özellikleri içerir. Bu veritabanını kullanmak için shared_preload_libraries sunucu parametresindeTIMESCALEDB seçeneğini belirleyin ve sunucuyu yeniden başlatın.

Saklı yordamlar ve tetikleyiciler için dil desteği

Plpgsql dışındaki diller için destek genellikle saklı yordamınızı derlemenizi veya kodu ayrı olarak tetiklemenizi ve derlenmiş kitaplığı sunucuya yüklemenizi gerektirir. Temel olarak güvenlik nedeniyle bunu PostgreSQL için Azure Veritabanı ile yapamazsınız. Başka dillerde yazılmış kodunuz varsa plpgsql'ye taşımanız gerekir.