MySQL için Azure Veritabanı ile uygulama oluşturmaya yönelik en iyi yöntemler

AŞAĞıDAKILER IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu MySQL için Azure Veritabanı - Esnek Sunucu

MySQL için Azure veritabanı 'nı kullanarak buluta hazır bir uygulama oluşturmanıza yardımcı olacak bazı en iyi yöntemler aşağıda verilmiştir. Bu en iyi uygulamalar, uygulamanız için geliştirme süresini azaltabilir.

Uygulama ve veritabanı kaynaklarının yapılandırması

Uygulamayı ve veritabanını aynı bölgede tut

Uygulamanızı Azure 'da dağıttığınızda tüm bağımlılıklarınızın aynı bölgede bulunduğundan emin olun. Bölgeler veya kullanılabilirlik alanları arasında örnekleri yayma, uygulamanızın genel performansını etkileyebilecek ağ gecikmesi oluşturur.

MySQL sunucunuzu güvende tutun

MySQL sunucunuzu güvenli ve erişilebilir değil herkese açık olacak şekilde yapılandırın. Sunucunuzun güvenliğini sağlamak için şu seçeneklerden birini kullanın:

Güvenlik için, her zaman SSL üzerinden MySQL sunucunuza bağlanmanız ve MySQL sunucunuzu ve uygulamanızı TLS 1,2 kullanacak şekilde yapılandırmanız gerekir. Bkz. SSL/TLS Yapılandırma.

AKS ile gelişmiş ağ kullanma

Bir VM 'de hızlandırılmış ağ etkinleştirildiğinde, VM 'de daha düşük gecikme süresi, azaltılmış değişim ve CPU kullanımı azalır. Daha fazla bilgi edinmek için bkz. Azure Kubernetes hizmeti Için en iyi uygulamalar ve MySQL Için Azure veritabanı

Sunucu parametrelerinizi ayarlayın

Okuma ağır iş yükleri ayarlama sunucu parametreleri için tmp_table_size ve max_heap_table_size daha iyi performans için iyileştirilmesine yardımcı olabilir. Bu değişkenler için gereken değerleri hesaplamak için, toplam bağlantı başına bellek değerlerine ve temel belleğe bakın. tmp_table_sizeSunucudaki toplam bellek için temel bellek hesaplarıyla birlikte, hariç olmak üzere, bağlantı başına bellek parametrelerinin toplamı.

En büyük olası boyutunu hesaplamak için tmp_table_size max_heap_table_size aşağıdaki formülü kullanın:

(total memory - (base memory + (sum of per-connection memory * # of connections)) / # of connections

Not

Toplam bellek, sunucunun sağlanan sanal çekirdekler üzerinde sahip olduğu toplam bellek miktarını gösterir. Örneğin, MySQL sunucusu için Genel Amaçlı iki sanal çekirdek Azure veritabanı 'nda toplam bellek 5 GB * 2 olacaktır. Fiyatlandırma katmanı belgelerindeki her bir katman için bellek hakkında daha fazla ayrıntı bulabilirsiniz.

Temel bellek, ve gibi, query_cache_size innodb_buffer_pool_size MySQL 'in sunucu başlangıcında başlatılacağı ve ayıracağını belirten bellek değişkenlerini belirtir. Ve gibi bağlantı başına bellek, sort_buffer_size join_buffer_size yalnızca bir sorgu için ihtiyaç duyduğunda ayrılan bellektir.

Yönetici olmayan kullanıcılar oluşturma

Her veritabanı için yönetici olmayan kullanıcılar oluşturun . Genellikle, Kullanıcı adları veritabanı adları olarak tanımlanır.

Parolanızı sıfırlama

Azure portal kullanarak MySQL sunucunuzun parolasını sıfırlayabilirsiniz .

Bir üretim veritabanı için sunucu parolanızı sıfırlama, uygulamanızı getirebilir. Uygulamanızın kullanıcılarına etkisini en aza indirmek için, tüm üretim iş yükleri için parolayı yoğun olmayan saatlerde sıfırlamak iyi bir uygulamadır.

Performans ve dayanıklılık

İşte performans sorunlarını ayıklamanıza yardımcı olmak için kullanabileceğiniz birkaç araç ve uygulama aşağıda verilmiştir.

Performans sorunlarını belirlemek için yavaş sorgu günlüklerini etkinleştir

Sunucunuzdaki yavaş sorgu günlüklerini ve Denetim günlüklerini etkinleştirebilirsiniz. Yavaş sorgu günlüklerinin çözümlenmesi, sorun giderme için performans sorunlarını belirlemenize yardımcı olabilir.

Denetim günlükleri, Azure Izleyici günlükleri, Azure Event Hubs ve depolama hesaplarında Azure Tanılama Günlükler aracılığıyla da kullanılabilir. Bkz. sorgu performans sorunlarını giderme.

Bağlantı havuzu kullanma

Veritabanı bağlantılarını yönetmek, uygulamanın performansı üzerinde önemli bir etkiye sahip olabilir. Performansı iyileştirmek için, bağlantıların kaç kez kurulabileceğinizi ve anahtar kod yollarında bağlantı kurma süresini azaltmanız gerekir. Esneklik ve performansı geliştirmek için MySQL için Azure veritabanı 'na bağlanmak üzere bağlantı havuzunu kullanın.

Bağlantıları etkin bir şekilde yönetmek için Proxysql bağlantı havuzlayıcı ' i kullanabilirsiniz. Bir bağlantı havuzlayıcı kullanılması, boştaki bağlantıları azaltabilir ve var olan bağlantıları yeniden kullanabilir ve bu da sorunları önlemeye yardımcı olur. Daha fazla bilgi için bkz. ProxySQL 'i ayarlama .

Geçici hataları işlemek için yeniden deneme mantığı

Uygulamanız, veritabanı bağlantılarının aralıklı olarak bırakılmakta veya kaybolduğu geçici hatalarla karşılaşabilir. Bu gibi durumlarda, sunucu, 5 ila 10 saniye içinde bir ila iki yeniden denemeden sonra çalışır.

İlk yeniden denemeden önce 5 saniye beklemek iyi bir uygulamadır. Sonra, 60 saniyeye kadar yavaş bekleme süresini artırarak her yeniden denemeye uyun. Uygulamanızın işlemi kabul eden en fazla yeniden deneme sayısını sınırlayın, böylece daha fazla araştırma yapabilirsiniz. Daha fazla bilgi için bkz. bağlantı hatalarıyla ilgili sorunları giderme .

Yük devretmeleri azaltmak için okuma çoğaltmasını etkinleştirin

Yük devretme senaryolarında gelen verileri çoğaltma kullanabilirsiniz. Okuma çoğaltmaları kullanırken, kaynak ve çoğaltma sunucuları arasında otomatik yük devretme gerçekleşmez.

Çoğaltma zaman uyumsuz olduğundan kaynak ve çoğaltma arasında bir gecikme fark edeceksiniz. Ağ gecikmesi, kaynak sunucuda çalışan iş yükünün boyutu ve veri merkezleri arasındaki gecikme süresi gibi birçok faktörden etkilenebilir. Çoğu durumda, çoğaltma gecikme süresi birkaç saniyeden birkaç dakikaya kadar değişir.

Veritabanı dağıtımı

CI/CD dağıtım işlem hattınızda MySQL için Azure veritabanı görevini yapılandırma

Bazen değişiklikleri veritabanınıza dağıtmanız gerekir. bu gibi durumlarda, Azure Pipelines aracılığıyla sürekli tümleştirme (cı) ve sürekli teslim (CD) kullanabilir ve bir özel betik çalıştırarak veritabanını güncelleştirmek için MySQL sunucunuzun bir görevini kullanabilirsiniz.

El ile veritabanı dağıtımı için etkili bir işlem kullanın

El ile veritabanı dağıtımı sırasında, kapalı kalma süresini en aza indirmek veya başarısız dağıtım riskini azaltmak için aşağıdaki adımları izleyin:

  1. Mysqldump veya MySQL çalışma ekranıkullanarak yeni bir veritabanında üretim veritabanının bir kopyasını oluşturun.
  2. Yeni veritabanını yeni şema değişiklikleri veya veritabanınız için gereken güncelleştirmeler ile güncelleştirin.
  3. Üretim veritabanını salt bir okuma durumuna getirin. Dağıtım tamamlanana kadar üretim veritabanında yazma işlemlerine sahip olmanız gerekir.
    1. adımdaki yeni güncelleştirilmiş veritabanıyla uygulamanızı test edin.
  4. Uygulama değişikliklerinizi dağıtın ve uygulamanın Şu anda en son güncelleştirmelere sahip olan yeni veritabanını kullanmakta olduğundan emin olun.
  5. Değişiklikleri geri almak için eski üretim veritabanını koruyun. daha sonra, gerekirse eski üretim veritabanını silmek veya Azure Depolama dışarı aktarmak için değerlendirebilirsiniz.

Not

Uygulama bir e-ticaret uygulaması gibi olduğunda ve salt okuma durumunda yer alıyorsa, bir yedekleme yaptıktan sonra değişiklikleri doğrudan üretim veritabanına dağıtın. Bazı kullanıcılar başarısız isteklerle karşılaşabileceğinden, etkiyi en aza indirmek için uygulamanın düşük trafiğiyle yoğun olmayan saatlerde gerçekleşmelidir.

Uygulama kodunuzun başarısız istekleri de işlediğinizden emin olun.

İş yükünüzün bellek içi geçici tablo boyutlarını aşıp aşmadığından bakmak için MySQL yerel ölçümlerini kullanın

Okuma ağır iş yüküyle, MySQL sunucunuza karşı çalışan sorgular bellek içi geçici tablo boyutlarını aşabilir. Okuma ağır iş yükü, sunucunuzun, uygulamanızın performansını etkileyen geçici tabloları diske yazma anahtarına geçmesine neden olabilir. Sunucunuzun geçici tablo boyutunu aşarak diske yazmadığını öğrenmek için aşağıdaki ölçümlere bakın:

show global status like 'created_tmp_disk_tables';
show global status like 'created_tmp_tables';

created_tmp_disk_tablesÖlçüm diskte kaç tablo oluşturulduğunu gösterir. created_tmp_tableÖlçüm, iş yükünüz verildiğinde, bellekte kaç tane geçici tablonun biçimlendirilmiş olduğunu söyler. Belirli bir sorgu çalıştırmanın geçici tablolar kullanıp kullanmadığını anlamak için, sorgu üzerinde açıkla ifadesini çalıştırın. Sütunundaki ayrıntı, extra Using temporary sorgunun geçici tablolar kullanılarak çalışacağını gösterir.

Sorgular disklere atıştırdığı iş yükünüzün yüzdesini hesaplamak için aşağıdaki formüldeki ölçüm değerlerinizi kullanın:

(created_tmp_disk_tables / (created_tmp_disk_tables + created_tmp_tables)) * 100

İdeal olarak, bu yüzde 25 ' in az olması gerekir. Yüzdenin %25 veya daha büyük olduğunu görürseniz, tmp_table_size ve max_heap_table_size iki sunucu parametresini değiştirmenizi öneririz.

Veritabanı şeması ve sorguları

Veritabanı şemanızı ve sorgularınızı oluştururken aklınızda bulundurmanız gereken birkaç ipucu aşağıda verilmiştir.

Tablo sütunlarınız için doğru veri türünü kullanın

Depolamak istediğiniz verilerin türüne göre doğru veri türünün kullanılması, depolamayı iyileştirebilirler ve hatalı veri türleri nedeniyle oluşabilecek hataları azaltabilir.

Dizinleri kullanma

Yavaş sorgulardan kaçınmak için dizinleri kullanabilirsiniz. Dizinler, belirli sütunlara hızlıca sahip satırları bulmaya yardımcı olabilir. Bkz. MySQL 'de dizinleri kullanma.

Seçme sorgularınız için AÇıKLA kullanın

EXPLAINSorgunuzu çalıştırmak Için MySQL ile ilgili Öngörüler elde etmek için, ifadesini kullanın. Sorgunuzun performans sorunlarını veya sorunları tespit etmenize yardımcı olabilir. Bkz. Açıklama kullanarak sorgu performansını profiloluşturma.