MySQL için Azure Veritabanı - Esnek Sunucuda okuma çoğaltmaları

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

MySQL, internet ölçeğinde web ve mobil uygulamaları çalıştırmaya yönelik popüler veritabanı altyapılarından biridir. Müşterilerimizin çoğu çevrimiçi eğitim hizmetleri, video akış hizmetleri, dijital ödeme çözümleri, e-ticaret platformları, oyun hizmetleri, haber portalları, kamu ve sağlık web siteleri için kullanıyor. Bu hizmetlerin web veya mobil uygulama üzerindeki trafik arttıkça hizmet vermek ve ölçeklendirmek için gereklidir.

Uygulamalar tarafında, uygulama genellikle Java veya PHP'de geliştirilir ve Azure Sanal Makine Ölçek Kümeleri veya Azure Uygulaması Hizmetleri'nde çalıştırılacak şekilde geçirilir ya da Azure Kubernetes Service(AKS) üzerinde çalıştırılacak şekilde kapsayıcılı hale getirilir. Temel altyapı olarak Sanal Makine Ölçek Kümesi, App Service veya AKS ile uygulama ölçeklendirmesi, anlık olarak yeni VM'ler sağlayarak ve uygulamaların durum bilgisi olmayan bileşenlerini isteklere uygun olacak şekilde çoğaltarak basitleştirilir, ancak çoğu zaman veritabanı merkezi durum bilgisi olan bileşen olarak performans sorununa neden olur.

Okuma amaçlı çoğaltma özelliği, MySQL için Azure Veritabanı esnek bir sunucu örneğindeki verileri salt okunur bir sunucuya çoğaltmanıza olanak tanır. Kaynak sunucudan en fazla 10 çoğaltmaya çoğaltabilirsiniz. Çoğaltmalar, MySQL altyapısının yerel ikili günlük (binlog) dosya konumu tabanlı çoğaltma teknolojisini kullanılarak zaman uyumsuz olarak güncelleştirilir. Binlog çoğaltması hakkında daha fazla bilgi edinmek için bkz. MySQL binlog çoğaltmasına genel bakış.

Çoğaltmalar, kaynak MySQL için Azure Veritabanı esnek sunucu örneklerinize benzer şekilde yönettiğiniz yeni sunuculardır. Sanal çekirdeklerde sağlanan işlem ve gb/ay depolama alanına göre her okuma amaçlı çoğaltma için faturalama ücretleri uygulanır. Daha fazla bilgi için bkz. Fiyatlandırma.

Dekont

Okuma amaçlı çoğaltma özelliği yalnızca Genel Amaçlı veya İş Açısından Kritik fiyatlandırma katmanlarında MySQL için Azure Veritabanı esnek sunucu örnekleri için kullanılabilir. Kaynak sunucunun bu fiyatlandırma katmanlarından birinde olduğundan emin olun.

MySQL çoğaltma özellikleri ve sorunları hakkında daha fazla bilgi edinmek için MySQL çoğaltma belgelerine bakın.

Dekont

Bu makalede, Microsoft'un artık kullanmadığı köle terimi geçmektedir. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.

Okuma amaçlı çoğaltma için yaygın kullanım örnekleri

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 yalıtılabilirken, yazma iş yükleri kaynağa yönlendirilebilir.

Yaygın senaryolar şunlardır:

  • ProxySQL gibi basit bağlantı ara sunucusu kullanarak veya uygulamadan gelen okuma sorgularınızın ölçeğini çoğaltmaları okumak için genişletmek için mikro hizmet tabanlı desen kullanarak uygulamadan gelen okuma iş yüklerini ölçeklendirme
  • BI veya analitik raporlama iş yükleri, raporlama için veri kaynağı olarak okuma amaçlı çoğaltmaları kullanabilir
  • Verilerin raporlanması için birden çok okuma çoğaltması kullanılırken telemetri bilgilerinin MySQL veritabanı altyapısına alındığı IoT veya Üretim senaryosu için

Çoğaltmalar salt okunur olduğundan, kaynak üzerindeki yazma kapasitesi yüklerini doğrudan azaltmaz. Bu özellik, yazma açısından yoğun iş yükleri için uygun değildir.

Okuma amaçlı çoğaltma özelliği MySQL zaman uyumsuz çoğaltmayı kullanır. Bu özellik zaman uyumlu çoğaltma senaryoları için tasarlanmamıştır. Kaynak ile çoğaltma arasında ölçülebilir bir gecikme vardır. Çoğaltmadaki veriler sonunda kaynak verilerle tutarlı hale gelir. Bu gecikmeye ayak uydurabilecek iş yükleri için bu özelliği kullanın.

Bölgeler arası çoğaltma

Kaynak 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. MySQL için Azure Veritabanı esnek sunucu, MySQL için Azure Veritabanı esnek sunucunun kullanılabildiği tüm Azure desteği bölgelerde okuma amaçlı çoğaltma sağlamanızı sağlar. Bu özelliği kullanarak, kaynak sunucunun eşleştirilmiş bölgesinde veya evrensel çoğaltma bölgelerinde çoğaltması olabilir. Esnek MySQL için Azure Veritabanı sunucunun bugün kullanılabildiği Azure bölgelerinin listesini bulmak için lütfen buraya bakın.

Çoğaltma oluşturma

Bir kaynak sunucuda mevcut çoğaltma sunucusu yoksa, kaynak önce kendisini çoğaltmaya hazırlamak için yeniden başlatılır.

Çoğaltma oluşturma iş akışını başlattığınızda, boş bir MySQL için Azure Veritabanı esnek sunucu örneği oluşturulur. Yeni sunucu, kaynak sunucuda bulunan verilerle doldurulur. Oluşturma zamanı, kaynak üzerindeki veri 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.

Dekont

Okuma amaçlı çoğaltmalar, kaynakla aynı sunucu yapılandırmasıyla oluşturulur. Çoğaltma sunucusu yapılandırması oluşturulduktan sonra değiştirilebilir. Çoğaltma sunucusu her zaman kaynak sunucuyla aynı kaynak grubunda ve aynı abonelikte oluşturulur. Farklı bir kaynak grubuna veya farklı aboneliğe çoğaltma sunucusu oluşturmak istiyorsanız, oluşturma işleminden sonra çoğaltma sunucusunu taşıyabilirsiniz. Çoğaltmanın kaynağa ayak uydurabildiğinden emin olmak için çoğaltma sunucusunun yapılandırmasının kaynaktan eşit veya daha büyük değerlerde tutulması önerilir.

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

Çoğaltmaya bağlanma

Oluşturma sırasında, çoğaltma kaynak sunucunun bağlantı yöntemini devralır. Çoğaltmanın bağlantı yöntemini değiştiremezsiniz. Örneğin, kaynak sunucunun Özel erişimi (VNet Tümleştirmesi) varsa çoğaltma Genel erişimde (izin verilen IP adresleri) olamaz.

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

Normal bir MySQL için Azure Veritabanı esnek sunucu örneğinde olduğu gibi, konak adını ve geçerli bir kullanıcı hesabını kullanarak çoğaltmaya bağlanabilirsiniz. yönetici kullanıcı adı myadmin olan myreplica adlı bir sunucu için mysql CLI kullanarak çoğaltmaya bağlanabilirsiniz:

mysql -h myreplica.mysql.database.azure.com -u myadmin -p

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

Çoğaltmayı izleme

MySQL için Azure Veritabanı esnek sunucu,Azure İzleyici'de saniye cinsinden çoğaltma gecikmesi ölçümü. Bu ölçüm yalnızca çoğaltmalar için kullanılabilir. Bu ölçüm, MySQL'in SHOW SLAVE STATUS komutunda bulunan ölçüm kullanılarak seconds_behind_master hesaplanır. Çoğaltma gecikmesi iş yükünüz için kabul edilemeyen bir değere ulaştığında sizi bilgilendirecek bir uyarı ayarlayın.

Artan çoğaltma gecikmesi görürseniz, olası nedenleri gidermek ve anlamak için çoğaltma gecikmesi sorunlarını giderme bölümüne bakın.

Önemli

Okuma Amaçlı Çoğaltma artık MySQL'in 'SHOW SLAVE STATUS'/'SHOW REPLICA STATUS' komutunda bulunan 'SLAVE_IO_RUNNING'/'REPLICA_IO_RUNNING' ölçümünü kullanmayan depolama tabanlı çoğaltma teknolojisini kullanır. Bu değer her zaman "Hayır" olarak görüntülenir ve çoğaltma durumunu göstermez. Çoğaltmanın doğru durumunu öğrenmek için lütfen İzleme dikey penceresinin altındaki çoğaltma ölçümleri - Çoğaltma GÇ Durumu ve Çoğaltma SQL Durumu'na bakın.

Çoğaltmayı durdurma

Kaynak ile çoğaltma arasında çoğaltmayı durdurabilirsiniz. Bir kaynak sunucu ile okuma çoğaltması arasında çoğaltma durdurulduktan sonra, çoğaltma tek başına bir sunucu olur. Tek başına sunucudaki veriler, çoğaltmayı durdur komutu başlatıldığında çoğaltmada kullanılabilen verilerdir. Tek başına sunucu kaynak sunucuya yetişmiyor.

Bir çoğaltmaya çoğaltmayı durdurmayı seçtiğinizde, önceki kaynağına ve diğer çoğaltmalara yönelik tüm bağlantıları kaybeder. Kaynak ile çoğaltması arasında otomatik yük devretme yoktur.

Önemli

Tek başına sunucu yeniden bir çoğaltmaya dönüştürülemez. Okuma amaçlı bir çoğaltmada çoğaltmayı durdurmadan önce, çoğaltmada ihtiyacınız olan tüm verilerin olduğundan emin olun.

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

Yük devretme

Kaynak ve çoğaltma sunucuları arasında otomatik yük devretme yoktur.

Okuma amaçlı çoğaltmalar, yoğun okuma iş yüklerinin ölçeklendirilmesi için tasarlanmıştır ve bir sunucunun yüksek kullanılabilirlik gereksinimlerini karşılayacak şekilde tasarlanmamıştır. Okuma amaçlı çoğaltmayı okuma yazma modunda çevrimiçi duruma getirmek için çoğaltmanın durdurulması, bu el ile yük devretmenin gerçekleştirilmesi anlamına gelir.

Çoğaltma zaman uyumsuz olduğundan, kaynak ile çoğaltma arasında gecikme vardır. Gecikme miktarı, kaynak sunucuda çalışan iş yükünün ne kadar ağır olduğu ve veri merkezleri arasındaki gecikme süresi gibi birçok faktörden etkilenebilir. Çoğu durumda, çoğaltma gecikmesi birkaç saniyeyle birkaç dakika arasında değişir. Her çoğaltma için kullanılabilen Çoğaltma Gecikmesi ölçümünü kullanarak gerçek çoğaltma gecikmenizi izleyebilirsiniz. Bu ölçüm, son yeniden oynatılan işlemden bu yana geçen süreyi gösterir. Bir süre boyunca çoğaltma gecikmenizi gözlemleyerek ortalama gecikmenizin ne olduğunu belirlemenizi öneririz. Çoğaltma gecikmesi ile ilgili bir uyarı ayarlayabilirsiniz, böylece beklenen aralığın dışına çıkarsa eyleme geçebilirsiniz.

Bahşiş

Çoğaltmaya yük devretme yaparsanız, çoğaltmanın kaynaktan 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
    Çoğaltma sunucusunun yazmaları kabul edebilmesi için bu adım gereklidir. Bu işlemin bir parçası olarak, çoğaltma sunucusu kaynaktan çıkarılır. Çoğaltmayı durdurma işlemini başlattıktan sonra arka uç işleminin tamamlanması genellikle yaklaşık 2 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ı kaynak yerine (eski) çoğaltmaya işaret eden şekilde güncelleştirin.

Uygulamanız okuma ve yazma işlemlerini başarıyla işledikten sonra yük devretmeyi tamamladınız. Uygulamanızın yaşadığı kapalı kalma süresi, bir sorun algılayıp yukarıdaki 1. ve 2. adımları tamamlamanıza bağlıdır.

Genel işlem tanımlayıcısı (GTID)

Genel işlem tanımlayıcısı (GTID), bir kaynak sunucuda işlenen her işlemle oluşturulan benzersiz bir tanımlayıcıdır ve esnek MySQL için Azure Veritabanı sunucuda varsayılan olarak KAPALI'dır. GTID, 5.7 ve 8.0 sürümlerinde desteklenir. GTID ve çoğaltmada nasıl kullanıldığı hakkında daha fazla bilgi edinmek için MySQL'in GTID ile çoğaltma belgelerine bakın.

GTID'yi yapılandırmak için aşağıdaki sunucu parametreleri kullanılabilir:

Sunucu parametresi Açıklama Varsayılan Değer Değerler
gtid_mode GTID'lerin işlemleri tanımlamak için kullanılıp kullanılmadiğini gösterir. Modlar arasındaki değişiklikler artan düzende bir kerede yalnızca bir adım yapılabilir (örn. OFF -OFF_PERMISSIVE> ->ON_PERMISSIVE ->ON) OFF* OFF: Hem yeni hem de çoğaltma işlemleri anonim olmalıdır
OFF_PERMISSIVE: Yeni işlemler anonimdir. Çoğaltılan işlemler anonim veya GTID işlemleri olabilir.
ON_PERMISSIVE: Yeni işlemler GTID işlemleridir. Çoğaltılan işlemler anonim veya GTID işlemleri olabilir.
ON: Hem yeni hem de çoğaltılan işlemler GTID işlemleri olmalıdır.
enforce_gtid_consistency Yalnızca işlem açısından güvenli bir şekilde günlüğe kaydedilebilen deyimlerin yürütülmesine izin vererek GTID tutarlılığını zorlar. GTID çoğaltması etkinleştirilmeden önce bu değer olarak ON ayarlanmalıdır. OFF* OFF: Tüm işlemlerin GTID tutarlılığını ihlal etmelerine izin verilir.
ON: GTID tutarlılığını ihlal etmeye hiçbir işlem izin verilmez.
WARN: Tüm işlemlerin GTID tutarlılığını ihlal etmelerine izin verilir, ancak bir uyarı oluşturulur.

Yüksek Kullanılabilirlik özelliği etkinleştirilmiş MySQL için Azure Veritabanı esnek sunucu örnekleri için varsayılan değer olarak ONayarlanır.

Dekont

  • GTID etkinleştirildikten sonra kapatılamaz. GTID'yi KAPALI duruma getirmek isterseniz lütfen desteğe başvurun.
  • GTID'leri bir değerden bir kerede yalnızca bir adıma, artan mod sırasına göre değiştirebilirsiniz. Örneğin, gtid_mode şu anda OFF_PERMISSIVE olarak ayarlandıysa, ON_PERMISSIVE olarak değiştirebilirsiniz ancak ON olarak değiştiremezsiniz.
  • Çoğaltmanın tutarlı kalmasını sağlamak için bir ana/çoğaltma sunucusu için güncelleştiremezsiniz.
  • gtid_mode=ON olarak ayarlayabilmeniz için önce enforce_gtid_consistency ON olarak ayarlamanız önerilir.

GTID'yi etkinleştirmek ve tutarlılık davranışını yapılandırmak için Azure portalını veya Azure CLI'yı kullanarak ve enforce_gtid_consistency sunucu parametrelerini güncelleştirin.gtid_mode

Bir kaynak sunucuda GTID etkinleştirildiyse (gtid_mode = ON), yeni oluşturulan çoğaltmalarda da GTID etkindir ve GTID çoğaltmasını kullanır. Çoğaltmanın tutarlı olduğundan emin olmak için, gtid_mode ana sunucu veya çoğaltma sunucuları GTID etkin olarak oluşturulduktan sonra değiştirilemez.

Dikkat edilecekler ve sınırlamalar

Senaryo Sınırlama/Dikkat Edilmesi Gerekenler
SeriLeştirilebilir Fiyatlandırma Katmanındaki sunucuda çoğaltma Desteklenmez
Fiyatlandırma Çoğaltma sunucusunu çalıştırmanın maliyeti, çoğaltma sunucusunun çalıştığı bölgeyi temel alır
Kaynak sunucuyu yeniden başlatma Var olan çoğaltması olmayan bir kaynak için çoğaltma oluşturduğunuzda, kaynak önce kendisini çoğaltmaya hazırlamak üzere yeniden başlatılır. Bunu dikkate alın ve yoğun olmayan bir dönemde bu işlemleri gerçekleştirin
Yeni çoğaltmalar Okuma amaçlı çoğaltma, yeni MySQL için Azure Veritabanı esnek sunucu örneği 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, kaynakla aynı sunucu yapılandırması kullanılarak oluşturulur. Çoğaltma oluşturulduktan sonra, kaynak sunucudan bağımsız olarak çeşitli ayarlar değiştirilebilir: işlem oluşturma, sanal çekirdekler, depolama ve yedekleme saklama süresi. İşlem katmanı bağımsız olarak da değiştirilebilir.

ÖNEMLİ - Kaynak sunucu yapılandırması yeni değerlere güncelleştirilmeden önce çoğaltma yapılandırmasını eşit veya daha büyük değerlere güncelleştirin. Bu eylem, çoğaltmanın kaynak kopya üzerinde yapılan değişiklikleri yansıtmasını sağlar.
Bağlan ivity yöntemi ve parametre ayarları, çoğaltma oluşturulduğunda kaynak sunucudan çoğaltmaya devralınır. Daha sonra, çoğaltmanın kuralları bağımsızdır.
Durdurulan çoğaltmalar Bir kaynak sunucu ile okuma çoğaltması arasında çoğaltmayı durdurursanız, durdurulan çoğaltma hem okuma hem de yazmaları kabul eden tek başına bir sunucu olur. Tek başına sunucu yeniden bir çoğaltmaya dönüştürülemez.
Silinen kaynak ve tek başına sunucular Bir kaynak sunucu silindiğinde, tüm okuma amaçlı çoğaltmalara çoğaltma durdurulur. Bu çoğaltmalar otomatik olarak tek başına sunucular haline gelir ve hem okumaları hem de yazmaları kabul edebilir. Kaynak sunucunun kendisi silinir.
Kullanıcı hesapları Kaynak sunucudaki kullanıcılar okuma amaçlı çoğaltmalara çoğaltılır. Okuma amaçlı çoğaltmaya yalnızca kaynak sunucuda bulunan kullanıcı hesaplarını kullanarak bağlanabilirsiniz.
Sunucu parametreleri Verilerin eşitlenmemiş duruma gelmesini ve olası veri kaybını önlemek için, okuma amaçlı çoğaltmaları kullanırken bazı sunucu parametreleri güncelleştirmeye karşı kilitlenir.
Aşağıdaki sunucu parametreleri hem kaynak hem de çoğaltma sunucularında kilitlenir:
- innodb_file_per_table
- log_bin_trust_function_creators
event_scheduler parametresi çoğaltma sunucularında kilitlenir.
Kaynak sunucuda yukarıdaki parametrelerden birini güncelleştirmek için çoğaltma sunucularını silin, kaynakta parametre değerini güncelleştirin ve çoğaltmaları yeniden oluşturun.
Oturum düzeyi parametreleri Okuma amaçlı çoğaltmada 'foreign_keys_checks' gibi oturum düzeyi parametreleri yapılandırırken, okuma amaçlı çoğaltmada ayarlanan parametre değerlerinin kaynak sunucununkiyle tutarlı olduğundan emin olun.
Kaynak sunucudaki mevcut tabloya AUTO_INCREMENT Birincil Anahtar sütunu ekleniyor. Okuma amaçlı çoğaltma oluşturma sonrasında AUTO_INCREMENT tablo değiştirmenizi önermeyiz çünkü çoğaltmayı bozar. Ancak çoğaltma sunucusu oluşturma sonrasında otomatik artış sütununu eklemek isterseniz şu iki yaklaşımı öneririz:
- Değiştirmek istediğiniz tablo şemasına sahip yeni bir tablo oluşturun. Yeni tabloda, AUTO_INCREMENT ile sütunu değiştirin ve özgün tablodan verileri geri yükleyin. Eski tabloyu bırakın ve kaynakta yeniden adlandırın; bunun için çoğaltma sunucusunu silmemiz gerekmez, ancak yedekleme tablosu oluşturmak için büyük ekleme maliyeti gerekebilir.
- Diğer hızlı yöntem, tüm otomatik artış sütunlarını ekledikten sonra çoğaltmayı yeniden oluşturmaktır.
Diğer - Bir çoğaltmanın çoğaltmasının oluşturulması desteklenmez.
- Bellek içi tablolar çoğaltmaların eşitlenmemiş olmasına neden olabilir. Bu, MySQL çoğaltma teknolojisinin bir sınırlamasıdır. Daha fazla bilgi için MySQL başvuru belgelerinde daha fazla bilgi edinin.
- Kaynak sunucu tablolarında birincil anahtarlar olduğundan emin olun. Birincil anahtarların olmaması, kaynak ile çoğaltmalar arasında çoğaltma gecikmesine neden olabilir.
- MySQL çoğaltma sınırlamalarının tam listesini MySQL belgelerinde gözden geçirin

Sonraki adımlar