Yüksek trafik ortamları için MySQL çoğaltmasını optimize etmek için anahtar yapılandırma ayarları, performansı, güvenilirliği ve veri tutarlılığını dengelemek için çeşitli çoğaltma ve sunucu parametrelerinin dikkatli bir şekilde ayarlanmasını içerir.
Aktif/pasif bir yapılandırma kullanın:
Yüksek trafikli senaryolarda, bir birincil MySQL Server (Master) tüm yazma işlemlerini ve birden fazla pasif kopyayı (köleler) okuma işlemlerini işlediği aktif/pasif çoğaltma mimarisinin kullanılması önerilir. Bu, iş yükünü etkili bir şekilde böler ve ana başlıklar yazarken kopyaların salt okunur trafiğe hizmet etmesine izin verir. Bu kurulum, aktif/aktif konfigürasyonların karmaşıklığı ve çatışma sorunlarını önler. Bununla birlikte, bu kurulumda yaygın olan asenkron replikasyon, master ve kopyalar arasında bir miktar gecikme getirebilir, bu nedenle uygulama mantığı okunan yazılı tutarlılık gereksinimlerini dikkate almalıdır.
Çoğaltma Modu:
MySQL replikasyonu asenkron ve yarı senkronize replikasyon modlarını destekler. Asenkron replikasyon varsayılandır ve yüksek performans sunar, ancak potansiyel çoğaltma gecikmesi ile. Yarı senkronize çoğaltma, en az bir kopya devam etmeden önce bir işlem alındığını kabul edene kadar ana beklemeyi yaparak veri tutarlılığını geliştirir. Bu, yük devretme durumlarında veri kaybı riskini azaltır, ancak gecikme ekler. Yüksek trafik için, tutarlılık ve performans arasındaki uygun değiş tokuşları sağlamak için yarı senkron modun zaman aşımı ayarları ayarlanmalıdır (varsayılan 10 saniye). Bazen, kritik bir çoğaltmanın yarı senkronizasyon kullandığı ve diğerlerinin kullanılabilirliği ve performansı dengelemek için async kullandığı yerlerde karışık modlar kullanılır.
İkili günlüğü yapılandırması:
`` Log-Bin '' ayarlayarak Master'da ikili günlüğe kaydedilmeyi etkinleştirin ve benzersiz bir `sunucu-id 'atayın. Özellikle karmaşık iş yüklerinde doğruluk ve tutarlılık ifadeleri yerine tek tek satır değişikliklerini kaydetmek için `binlog_format = satır 'seçin. İkili günlük tutma politikalarını, kurtarma yeteneği ve depolama taleplerini dengeleyecek şekilde akıllıca yapılandırın. Also, enable `gtid_mode=ON` and `enforce_gtid_consistency=ON` for Global Transaction Identifiers to simplify replication management and failover, enhancing automation.
Performans için çoğaltma topolojisi:
Yüksek trafik senaryolarında replikasyonun ölçeklendirilmesi için, hiyerarşik replikasyon topolojisi (zincirlenmiş veya röle replikasyonu olarak da adlandırılır) önerilir. Master, bir ara sunucuya (röle köle) koparır ve bu da diğer kopyalara koparır. Bu, ağ ve çoğaltma trafiğini ara kopyalara devrederek ana yükü azaltır. Bu topoloji ağ darboğazlarını hafifletir ve genel çoğaltma verimini geliştirir. Bununla birlikte, röle sunucularında `log_slave_updates 'etkinleştirilmesi gereklidir, bu da bir performans yükü taşır ve kademeli çoğaltma gecikmesini önlemek için dikkatli bir izleme gerektirir.
Kölelerde paralel çoğaltma:
Çoğaltma performansını iyileştirmek için kopyalardaki paralel çoğaltmayı etkinleştirin. MySQL 5.6+, çok iş parçacıklı köle SQL yürütmesini destekler. `Slave_paralel_workers 'gibi yapılandırılabilir seçenekler, çoklu çoğaltma SQL iş parçacıklarının işlemleri paralel olarak uygulamasına izin verir ve bağımsız işlemlerle iş yükleri için çoğaltma gecikmesini azaltır. Çekişmeye neden olmadan CPU ve iş yükü özelliklerine dayalı optimum iş parçacığı sayımlarını ayarlamak için dikkatli bir ayar gereklidir.
Ağ ve Bağlantı Optimizasyonu:
Çoğaltma trafiği için ağ yapılandırmasını optimize edin:
- Çoğaltma için özel ağ arabirimlerini kullanma.
- Bant genişliği kullanımını azaltmak için çoğaltma akışlarında sıkıştırmanın etkinleştirilmesi.
- Çoğaltma trafiğine güvenli bir şekilde izin verecek şekilde güvenlik duvarı kurallarını düzgün bir şekilde yapılandırma.
-Bazı CPU ek yükü eklemesine rağmen, güvenli veri iletimi için SSL şifrelemesini (`-ssl` seçeneklerini etkinleştir) kullanma.
- Bağlantı havuzu sık sık bağlantı kurulumlarından yükü azaltabilir.
Depolama ve G/Ç optimizasyonu:
İkili günlüğe yazımlar için Master'da Hızlı Depolama (SSD Tercih Edilen) kullanın, çünkü ikili günlüğü doğrudan etkilediğinden. Replicas'ta, G/Ç çekişmesini önlemek için röle günlükleri için ayrı depolama aygıtlarını göz önünde bulundurun. Çoğaltma günlükleri periyodik FSYNC'lerle sıralı yazmalar içerdiğinden G/Ç zamanlayıcı ayarlarını ve dosya sistemi parametrelerini optimize edin. Disk gecikmesi, çoğaltma gecikmesini ve genel performansı doğrudan etkiler.
Zaman aşımı ve yeniden deneyin ayarlar:
Çoğaltma bağlantılarının yüksek trafikli veya yüksek gecikmeli ağlarda erken düşmemesini sağlamak için `slave_net_timeout` gibi çoğaltma zaman aşımı ayarlarını ayarlayın. Ek olarak, geçici ağ arızaları sırasında daha iyi esneklik için `` master_retry_count` ve ilgili yeniden deneme parametrelerini ayarlayın.
İzleme ve uyarma:
Çoğaltma gecikmesi, ağ verimi, disk G/Ç ve CPU kullanımı için izleme uygulayın. Araçlar, çoğaltma gecikmesi eşiklerini ve performans bozulmasını gösterebilecek diğer anomalileri uyarabilir. Replikasyon sağlığını korumak için yüksek trafikli ortamlarda proaktif izleme kritiktir.
Yük devretme ve yedekleme stratejileri:
Replicas, yüksek kullanılabilirlik için replikasyon kullanılmasına ek olarak düzenli olarak yedeklenmelidir. Yük devretme prosedürlerini sık sık test edin. Son yürütülen işlemi kolayca tanımlayarak ve kopyaların veri kaybı olmadan yakalanmasını sağlayarak yük devretme kurtarmayı basitleştirmek için GTID'leri kullanın. Zincirlenmiş replikasyon topolojilerinde, röle kölelerinin ve yaprak kopyalarının yük devretmeden önce tamamen senkronize olduğundan emin olun.
Ek Ayarlar:
- Ek yükü azaltmak için gereksiz günlüğe kaydetme ve izlemeyi devre dışı bırakın.
- Dayanıklılık için Master'da `sync_binlog = 1` kullanın, farkındalık ile disk performansını etkiler.
- Çoğaltmada büyük işlemleri hatasız olarak işlemek için `max_allowed_packet` ayarlayın.
Anahtar yapılandırma parametrelerinin özeti:
- Üstat'ta:
- `Sunucu-ID` (benzersiz)
-`log-bin = mysql-bin`
- `binlog_format = satır '
- `gtid_mode = açık '
- `` `’
- `sync_binlog = 1` (dayanıklılık için)
- kopyalarda:
- `Sunucu-ID` (Master'dan benzersiz farklı)
- `relay_log`
- `log_slave_updates` (ara röle olarak kullanılırsa)
- `slave_paralel_workers` (paralel çoğaltma için> 1)
-`slave-net-timeout` ağ koşulları için ayarlanmış
- Çoğaltma modu:
- Kritik kopyalar için yarı senkronize çoğaltmayı etkinleştirin (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`))
- Ağ:
- Çoğaltma için etkinleştirilmiş SSL
- Verim kısıtlıysa sıkıştırma etkinleştirildi
- Depolamak:
- İkili ve röle günlükleri için SSD
- Mümkünse röle günlükleri için ayrı diskler
- Topoloji:
- Yükü dağıtmak için zincirlenmiş veya hiyerarşik çoğaltma kullanın.