PostgreSQL için Azure Veritabanı - Tek Sunucu’daki okuma amaçlı çoğaltmalar

ŞUNLAR IÇIN GEÇERLIDIR: PostgreSQL için Azure Veritabanı - Tek Sunucu

Önemli

PostgreSQL için Azure Veritabanı - Tek Sunucu kullanımdan kaldırma yolundadır. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya yükseltmenizi kesinlikle öneririz. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya geçiş hakkında daha fazla bilgi için bkz. PostgreSQL için Azure Veritabanı Tek Sunucuya ne oluyor?.

Okuma amaçlı çoğaltma özelliği, verileri PostgreSQL için Azure Veritabanı bir sunucudan salt okunur bir sunucuya çoğaltmanıza olanak tanır. Çoğaltmalar PostgreSQL altyapısı yerel fiziksel çoğaltma teknolojisiyle zaman uyumsuz olarak güncelleştirilir. Birincil sunucudan en çok beş çoğaltmaya çoğaltabilirsiniz.

Çoğaltmalar, normal PostgreSQL için Azure Veritabanı sunucularına benzer şekilde yönetilen yeni sunuculardır. Her okuma amaçlı çoğaltma için sanal çekirdek ve depolama alanında sağlanan işlem için GB/ay olarak faturalandırılırsınız.

Çoğaltma oluşturmayı ve yönetmeyi öğrenin.

Okuma amaçlı çoğaltma ne zaman kullanılır?

Okuma amaçlı çoğaltma özelliği, yoğun okuma gerektiren iş yüklerinin performansını ve ölçeğini geliştirmeye yardımcı olur. Okuma iş yükleri çoğaltmalara, yazma iş yükleri ise birincil sunucuya yönlendirilebilir. Okuma amaçlı çoğaltmalar farklı bir bölgeye de dağıtılabilir ve olağanüstü durum kurtarma durumunda okuma/yazma sunucusu olarak yükseltilebilir.

BI ve analiz iş yükleri genellikle raporlama için veri kaynağı olarak okuma amaçlı çoğaltmaları kullanır.

Çoğaltmalar salt okunur olduğundan birincil sunucudaki yazma kapasitesi yüklerini doğrudan azaltmaz.

Dikkat edilmesi gereken noktalar

Bu özellik, gecikmenin kabul edilebilir olduğu senaryolara ve sorguları boşaltmaya yöneliktir. Çoğaltma verilerinin güncel olması beklenen zaman uyumlu çoğaltma senaryolarına yönelik değildir. Birincil sunucu ile çoğaltma arasında ölçülebilir bir gecikme olacaktır. Bu, iş yüküne ve birincil ile çoğaltma arasındaki gecikme süresine bağlı olarak dakikalar hatta saatler içinde olabilir. Çoğaltmadaki veriler sonunda birincil sunucudaki verilerle tutarlı hale gelir. Bu gecikmeye ayak uydurabilecek iş yükleri için bu özelliği kullanın.

Not

İş yüklerinin çoğunda, okuma amaçlı çoğaltmalar birincil sunucudan neredeyse gerçek zamanlı güncelleştirmeler sunar. Öte yandan kalıcı, ağır, yazma yoğunluklu birincil iş yükleri ile çoğaltma gecikmesi uzamaya devam edebilir ve asla birincil sunucuya yetişemeyebilir. Bu, WAL dosyaları çoğaltmaya alınana kadar silinmediğinden birincil sunucudaki depolama kullanımını da artırabilir. Bu durum devam ederse çoğaltmayı gecikme bakımından tekrar iyi duruma getirmek için kullanılan seçenek, yazma yoğunluklu iş yükleri tamamlandıktan sonra okuma amaçlı çoğaltmayı silip yeniden oluşturmaktır. Zaman uyumsuz okuma amaçlı çoğaltmalar, bu tür ağır yazma iş yükleri için uygun değildir. Uygulamanız için okuma amaçlı çoğaltmaları değerlendirirken, iş yükü döngüsünün çeşitli noktalarında olası gecikmeye ve beklenen RTO/RPO'ya erişmek için en yoğun ve yoğun olmayan süreler boyunca tam uygulama iş yük döngüsü için çoğaltmadaki gecikmeyi izleyin.

Not

4 TB'a kadar depolama yapılandırmasıyla yapılandırılan çoğaltma sunucuları için otomatik yedeklemeler gerçekleştirilir.

Bölgeler arası çoğaltma

Birincil sunucunuzdan farklı bir bölgede okuma amaçlı çoğaltma oluşturabilirsiniz. Bölgeler arası çoğaltma, olağanüstü durum kurtarma planlaması veya verileri kullanıcılarınıza yaklaştırma gibi senaryolar için yararlı olabilir.

Not

Temel katman sunucuları yalnızca aynı bölge çoğaltmayı destekler.

Birincil sunucunuzu herhangi bir PostgreSQL için Azure Veritabanı bölgesinde oluşturabilirsiniz. Birincil sunucunun eşleştirilmiş bölgesinde veya evrensel çoğaltma bölgelerinde çoğaltması olabilir. Aşağıdaki resimde birincil bölgenize bağlı olarak hangi çoğaltma bölgelerinin kullanılabilir olduğu gösterilmektedir.

Çoğaltma bölgelerini okuma

Evrensel çoğaltma bölgeleri

Birincil sunucunuzun bulunduğu konumdan bağımsız olarak aşağıdaki bölgelerden herhangi birinde istediğiniz zaman bir okuma amaçlı çoğaltma oluşturabilirsiniz. Bunlar evrensel çoğaltma bölgeleridir:

Doğu Avustralya, Güneydoğu Avustralya, Güney Brezilya, Orta Kanada, Doğu Kanada, Orta ABD, Doğu Asya, Doğu ABD, Doğu ABD 2, Doğu Japonya, Batı Japonya, Orta Kore, Güney Kore, Orta Kuzey ABD, Kuzey Avrupa, Orta Güney ABD, Güneydoğu Asya, Güney Birleşik Krallık Güney, Birleşik Krallık Batı, Batı Avrupa, Batı ABD, Batı ABD 2, Orta Batı ABD.

Eşleştirilmiş bölgeler

Evrensel çoğaltma bölgelerine ek olarak, birincil sunucunuzun Eşleştirilmiş Azure bölgesinde okuma amaçlı çoğaltma oluşturabilirsiniz. Bölgenizin çiftini bilmiyorsanız Azure Eşleştirilmiş Bölgeler makalesinden daha fazla bilgi edinebilirsiniz.

Olağanüstü durum kurtarma planlaması için bölgeler arası çoğaltmalar kullanıyorsanız, çoğaltmayı diğer bölgelerden biri yerine eşleştirilmiş bölgede oluşturmanızı öneririz. Eşleştirilmiş bölgeler eşzamanlı güncelleştirmelerden kaçınarak fiziksel yalıtım ve veri yerleşimi önceliklerini belirler.

Dikkate alınması gereken sınırlamalar vardır:

  • Tek yönlü çiftler: Bazı Azure bölgeleri yalnızca bir yönde eşleştirilir. Bu bölgeler Arasında Batı Hindistan, Güney Brezilya yer alır. Bu, Batı Hindistan'daki bir birincil sunucunun Güney Hindistan'da bir çoğaltma oluşturabileceği anlamına gelir. Ancak, Güney Hindistan'daki birincil sunucu Batı Hindistan'da çoğaltma oluşturamaz. Bunun nedeni Batı Hindistan'ın ikincil bölgesinin Güney Hindistan olmasıdır, ancak Güney Hindistan'ın ikincil bölgesi Batı Hindistan değildir.

Çoğaltma oluşturma

Çoğaltma oluşturma iş akışını başlattığınızda boş bir PostgreSQL için Azure Veritabanı sunucusu oluşturulur. Yeni sunucu, birincil sunucuda bulunan verilerle doldurulur. Oluşturma süresi birincil kümedeki verilerin miktarına ve son haftalık tam yedeklemeden bu yana geçen süreye bağlıdır. Süre birkaç dakikadan birkaç saate kadar değişebilir.

Her çoğaltma, depolama otomatik büyütme için etkinleştirilir. Otomatik büyütme özelliği, çoğaltmanın bu çoğaltmaya çoğaltılan verilere ayak uydurmasını ve depolama alanı dışından kaynaklanan hatalardan kaynaklanan çoğaltmanın bozulmasına engel olmasını sağlar.

Okuma amaçlı çoğaltma özelliği, mantıksal çoğaltmayı değil PostgreSQL fiziksel çoğaltmasını kullanır. Varsayılan işlem modu, çoğaltma yuvalarını kullanarak çoğaltma akışı yapmaktır. Gerektiğinde, yakalamak için günlük gönderimi kullanılır.

Azure portalda okuma amaçlı çoğaltma oluşturmayı öğrenin.

Kaynak PostgreSQL sunucunuz müşteri tarafından yönetilen anahtarlarla şifreleniyorsa, göz önünde bulundurulması gereken diğer konular için belgelere bakın.

Çoğaltmaya bağlanma

Bir çoğaltma oluşturduğunuzda, birincil sunucunun güvenlik duvarı kurallarını veya sanal ağ hizmet uç noktasını devralmaz. Bu kuralların çoğaltma için bağımsız olarak ayarlanması gerekir.

Çoğaltma, yönetici hesabını birincil sunucudan devralır. Birincil sunucudaki tüm kullanıcı hesapları okuma çoğaltmalarına çoğaltılır. Okuma amaçlı çoğaltmaya yalnızca birincil sunucuda bulunan kullanıcı hesaplarını kullanarak bağlanabilirsiniz.

Normal bir PostgreSQL için Azure Veritabanı sunucusunda yaptığınız gibi, çoğaltmaya ana bilgisayar adını ve geçerli bir kullanıcı hesabını kullanarak bağlanabilirsiniz. myadmin yönetici kullanıcı adıyla my replica adlı bir sunucu için psql kullanarak çoğaltmaya bağlanabilirsiniz:

psql -h myreplica.postgres.database.azure.com -U myadmin@myreplica -d postgres

İstemde, kullanıcı hesabının parolasını girin.

Çoğaltmayı izleme

PostgreSQL için Azure Veritabanı, çoğaltmayı izlemek için iki ölçüm sağlar. İki ölçüm, Çoğaltmalar Arasında Maksimum Gecikme ve Çoğaltma Gecikmesi'dir. Bu ölçümlerin nasıl görüntüleneceğini öğrenmek için okuma amaçlı çoğaltma nasıl yapılır makalesinin Çoğaltmayı izleme bölümüne bakın.

Çoğaltmalar Arasında Maksimum Gecikme ölçümü, birincil ve en gecikmeli çoğaltma arasındaki gecikmeyi bayt cinsinden gösterir. Bu ölçüm yalnızca birincil sunucuda kullanılabilir ve yalnızca okuma amaçlı çoğaltmalardan en az biri birincil sunucuya bağlıysa ve birincil sunucu akış çoğaltma modundaysa kullanılabilir. Gecikme bilgileri, bir dosya gönderimi çoğaltma modunda birincilin arşivlenmiş günlüklerini kullanarak çoğaltma birincile yetişme sürecindeyken ayrıntıları göstermez.

Çoğaltma Gecikmesi ölçümü, son yeniden oynatılan işlemden bu yana geçen süreyi gösterir. Birincil sunucunuzda hiçbir işlem gerçekleşmediyse ölçüm bu zaman gecikmesini yansıtır. Bu ölçüm geçerlidir ve yalnızca çoğaltma sunucuları için kullanılabilir. Çoğaltma Gecikmesi görünümden pg_stat_wal_receiver hesaplanır:

SELECT EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp());

Çoğaltma gecikmesi iş yükünüz için kabul edilemeyen bir değere ulaştığında sizi bilgilendirecek bir uyarı ayarlayın.

Ek içgörüler için, tüm çoğaltmalarda çoğaltma gecikmesini bayt cinsinden almak için birincil sunucuyu doğrudan sorgular.

Not

Birincil sunucu veya okuma amaçlı çoğaltma yeniden başlatılırsa, yeniden başlatma ve yakalama süresi Çoğaltma Gecikmesi ölçümüne yansıtılır.

Çoğaltmayı durdurma / Çoğaltmayı yükseltme

Birincil ve çoğaltma arasında çoğaltmayı dilediğiniz zaman durdurabilirsiniz. Durdurma eylemi, çoğaltmanın yeniden başlatılmasına neden olur ve çoğaltmayı bağımsız, tek başına okunabilir bir sunucu olarak yükselter. Tek başına sunucusundaki veriler, çoğaltma durdurulduğunda çoğaltma sunucusunda bulunan veriler olur. Birincildeki sonraki güncelleştirmeler çoğaltmaya yayılmaz. Ancak, çoğaltma sunucusunda henüz uygulanmamış birikmiş günlükler olabilir. Yeniden başlatma işleminin bir parçası olarak çoğaltma, istemci bağlantılarını kabul etmeden önce bekleyen tüm günlükleri uygular.

Not

Çoğaltma sunucusunda yönetici parolasını sıfırlama şu anda desteklenmiyor. Ayrıca, aynı istekteki çoğaltmayı yükseltme işleminin yanı sıra yönetici parolasının güncelleştirilmesi de desteklenmez. Bunu yapmak istiyorsanız, önce çoğaltma sunucusunu yükseltmeniz ve ardından yeni yükseltilen sunucudaki parolayı ayrı olarak güncelleştirmeniz gerekir.

Dikkat edilmesi gereken noktalar

  • Okuma amaçlı bir çoğaltmada çoğaltmayı durdurmadan önce çoğaltmanın ihtiyacınız olan tüm verilere sahip olduğundan emin olmak için çoğaltma gecikmesini denetleyin.
  • Tek başına sunucu haline getirilmeden önce okuma amaçlı çoğaltmanın bekleyen tüm günlükleri uygulaması gerektiğinden, çoğaltmada önemli bir gecikme olabileceğinden çoğaltmayı durdurma işlemi gerçekleştiğinde yazma ağır iş yükleri için RTO daha yüksek olabilir. Çoğaltmayı yükseltmeyi planlarken lütfen buna dikkat edin.
  • Yükseltilen çoğaltma sunucusu yeniden bir çoğaltmaya oluşturulamaz.
  • Bir çoğaltmayı birincil sunucu olarak yükseltirseniz, eski birincil sunucuya çoğaltma oluşturamazsınız. Eski birincil bölgeye geri dönmek istiyorsanız, yeni bir adla yeni bir çoğaltma sunucusu oluşturabilir (veya) eski birincil sunucuyu silip eski birincil sunucunun adını kullanarak yeni bir çoğaltma oluşturabilirsiniz.
  • Birden çok okuma amaçlı çoğaltmanız varsa ve bunlardan birini birincil sunucunuz olarak yükseltirseniz, diğer çoğaltma sunucuları eski birincil sunucuya bağlanmaya devam eder. Çoğaltmaları yeni, yükseltilen sunucu için yeniden oluşturmanız gerekebilir.

Çoğaltmayı durdurduğunuzda, çoğaltma önceki birincil ve diğer çoğaltmalara yönelik tüm bağlantıları kaybeder.

Çoğaltmaya çoğaltmayı durdurmayı öğrenin.

Çoğaltmaya yük devretme

Birincil sunucu hatası durumunda, otomatik olarak okuma amaçlı çoğaltmaya yük devretmez .

Çoğaltma zaman uyumsuz olduğundan, birincil ile çoğaltma arasında önemli bir gecikme olabilir. Gecikme miktarı, birincil sunucuda çalışan iş yükünün türü ve birincil sunucu ile çoğaltma sunucusu arasındaki gecikme süresi gibi çeşitli faktörlerden etkilenir. Nominal yazma iş yükü olan tipik durumlarda çoğaltma gecikmesinin birkaç saniye ile birkaç dakika arasında olması beklenir. Ancak, birincilin çok yoğun yazma yoğunluklu iş yükü çalıştırdığı ve çoğaltmanın yeterince hızlı yakalanmadığı durumlarda gecikme çok daha yüksek olabilir. Çoğaltma Gecikmesi ölçümünü kullanarak her çoğaltma için çoğaltma gecikmesini izleyebilirsiniz. Bu ölçüm, çoğaltmada son yeniden oynatılan işlemden bu yana geçen süreyi gösterir. Bir süre boyunca çoğaltma gecikmesini gözlemleyerek ortalama gecikmeyi tanımlamanızı öneririz. Çoğaltma gecikmesi ile ilgili bir uyarı ayarlayabilirsiniz, böylece beklenen aralığın dışına çıkarsa işlem yapmanız bildirilir.

İpucu

Çoğaltmaya yük devretme yaparsanız, çoğaltmanın birincilden bağlantısını kaldırdığınız zamandaki gecikme ne kadar verinin kaybolduğunu gösterir.

Bir çoğaltmaya yük devretmek istediğinize karar verdikten sonra,

  1. Çoğaltmaya çoğaltmayı durdurma
    Bu adım, çoğaltma sunucusunu tek başına sunucu haline getirmek ve yazmaları kabul edebilmek için gereklidir. Bu işlemin bir parçası olarak çoğaltma sunucusu yeniden başlatılır ve birincil sunucuyla bağlantısı kaldırılır. Çoğaltmayı durdurma işlemini başlattıktan sonra, arka uç işleminin henüz uygulanmamış olan artık günlükleri uygulaması ve veritabanını okunabilir bir sunucu olarak açması genellikle birkaç dakika sürer. Bu eylemin etkilerini anlamak için bu makalenin Çoğaltmayı durdurma bölümüne bakın.

  2. Uygulamanızı (eski) çoğaltmaya işaret etme
    Her sunucunun benzersiz bir bağlantı dizesi vardır. Uygulamanızı bağlantı dizesi birincil yerine (eski) çoğaltmaya işaret eden şekilde güncelleştirin.

Uygulamanız okuma ve yazma işlemlerini başarıyla gerçekleştirdikten sonra yük devretme işlemini tamamlamış olursunuz. Uygulama deneyimlerinizin kapalı kalma süresi, bir sorun algılayıp yukarıdaki 1. ve 2. adımları tamamlamanıza bağlıdır.

Olağanüstü durum kurtarma

Kullanılabilirlik alanı düzeyi veya bölgesel hatalar gibi büyük bir olağanüstü durum olayı olduğunda, okuma amaçlı çoğaltmanızı yükselterek olağanüstü durum kurtarma işlemi gerçekleştirebilirsiniz. Kullanıcı arabirimi portalından okuma amaçlı çoğaltma sunucusuna gidebilirsiniz. Ardından çoğaltma sekmesini seçin ve çoğaltmayı durdurarak bağımsız bir sunucu olarak yükseltebilirsiniz. Alternatif olarak, çoğaltma sunucusunu durdurmak ve yükseltmek için Azure CLI'yi kullanabilirsiniz.

Dikkat edilmesi gereken noktalar

Bu bölümde, okuma amaçlı çoğaltma özelliğiyle ilgili önemli noktalar özetlenmektedir.

Önkoşullar

Okuma çoğaltmaları ve mantıksal kod çözme , bilgi için Postgres önceden yazma günlüğüne (WAL) bağlıdır. Bu iki özelliğin Postgres'ten farklı günlüğe kaydetme düzeyleri gerekir. Mantıksal kod çözme, okuma amaçlı çoğaltmalardan daha yüksek bir günlük düzeyine ihtiyaç duyar.

Doğru günlük düzeyini yapılandırmak için Azure çoğaltma desteği parametresini kullanın. Azure çoğaltma desteğinin üç ayar seçeneği vardır:

  • Kapalı - WAL'da en az bilgiyi yerleştirir. Bu ayar çoğu PostgreSQL için Azure Veritabanı sunucusunda kullanılamaz.
  • Çoğaltma - Kapalı'dan daha ayrıntılı. Bu, okuma amaçlı çoğaltmaların çalışması için gereken en düşük günlük düzeyidir. Bu ayar çoğu sunucuda varsayılan ayardır.
  • Mantıksal - Çoğaltmadan daha ayrıntılı. Bu, mantıksal kod çözmenin çalışması için en düşük günlük düzeyidir. Okuma amaçlı çoğaltmalar da bu ayarda çalışır.

Yeni çoğaltmalar

Okuma amaçlı çoğaltma yeni bir PostgreSQL için Azure Veritabanı sunucusu olarak oluşturulur. Var olan bir sunucu bir çoğaltmaya oluşturulamaz. Başka bir okuma amaçlı çoğaltmanın çoğaltmasını oluşturamazsınız.

Çoğaltma yapılandırması

Çoğaltma, birincil ile aynı işlem ve depolama ayarları kullanılarak oluşturulur. Bir çoğaltma oluşturulduktan sonra depolama ve yedekleme saklama süresi dahil olmak üzere çeşitli ayarlar değiştirilebilir.

Çoğaltma oluşturulduğunda veya sonrasında güvenlik duvarı kuralları, sanal ağ kuralları ve parametre ayarları birincil sunucudan çoğaltmaya devralınmıyor.

Ölçeklendirme

Sanal çekirdekleri ölçeklendirme veya Genel Amaçlı ile Bellek için İyileştirilmiş arasında:

  • PostgreSQL, ikincil sunucudaki ayarın max_connections birincil sunucudaki ayardan büyük veya buna eşit olmasını gerektirir, aksi takdirde ikincil sunucu başlatılmaz.
  • PostgreSQL için Azure Veritabanı, bağlantılar belleği kapladığından her sunucu için izin verilen en fazla bağlantı sayısı işlem sku'sunda sabitlenmiştir. max_connections ile işlem sku'ları arasındaki eşleme hakkında daha fazla bilgi edinebilirsiniz.
  • Ölçeği artırma: Önce bir çoğaltmanın işleminin ölçeğini büyütün, ardından birincil işlem ölçeğini genişletin. Bu sipariş, hataların gereksinimi ihlal etmesini max_connections engeller.
  • Ölçeği azaltma: Önce birincil işlem ölçeğini küçültün, ardından çoğaltmanın ölçeğini küçültün. Çoğaltmayı birincilden daha düşük bir şekilde ölçeklendirmeye çalışırsanız, bu gereksinimi ihlal ettiğinden max_connections bir hata oluşur.

Depolamayı ölçeklendirme:

  • Tüm çoğaltmalarda, depolama alanı tam çoğaltmadan çoğaltma sorunlarını önlemek için depolama otomatik büyütme etkindir. Bu ayar devre dışı bırakılamaz.
  • Ayrıca, depolamanın ölçeğini başka herhangi bir sunucuda yaptığınız gibi el ile artırabilirsiniz

Temel katman

Temel katman sunucuları yalnızca aynı bölge çoğaltmayı destekler.

max_prepared_transactions

PostgreSQL, okuma amaçlı çoğaltmadaki parametresinin değerinin max_prepared_transactions birincil değerden büyük veya ona eşit olmasını gerektirir; aksi takdirde, çoğaltma başlatılmaz. Birincilde değiştirmek max_prepared_transactions istiyorsanız, önce çoğaltmalarda değiştirin.

Durdurulan çoğaltmalar

Birincil sunucu ile okuma amaçlı çoğaltma arasında çoğaltmayı durdurursanız, değişikliği uygulamak için çoğaltma yeniden başlatılır. Durdurulan çoğaltma, hem okuma hem de yazmaları kabul eden tek başına bir sunucuya dönüşür. Tek başına sunucu yeniden bir çoğaltmaya dönüştürülemez.

Silinen birincil ve tek başına sunucular

Birincil sunucu silindiğinde, tüm okuma çoğaltmaları tek başına sunucular haline gelir. Çoğaltmalar bu değişikliği yansıtacak şekilde yeniden başlatılır.

Sonraki adımlar

  • Azure portalında okuma amaçlı çoğaltmaları oluşturmayı ve yönetmeyi öğrenin.
  • Azure CLI ve REST API'de okuma amaçlı çoğaltmaları oluşturmayı ve yönetmeyi öğrenin.