MySQL Replikasyonunu Anlamak: log_bin
Veritabanları Belirtilmeden Her Şeyi Kaydeder mi?
Birden fazla veritabanı için MySQL replikasyonu kurarken, ikili günlükleme yapılandırması ile ilgili kafa karışıklığı sıklıkla ortaya çıkar. Yaygın bir soru, yapılandırma dosyasında belirli bir veritabanı belirtmezseniz, MySQL’in bir veritabanında yapılan her değişikliği kaydedip kaydetmeyeceğidir. Bu yazıda, MySQL’in ikili günlüklemesinin nasıl çalıştığını, özellikle binlog-do-db
ve binlog-ignore-db
direktiflerine geldiğinde açıklığa kavuşturacağız.
Sorun: MySQL Veritabanı Günlüklemeyi Nasıl Yönetir?
İkili Günlükler Nedir?
MySQL’deki ikili günlükler, veritabanlarında yapılan değişiklikleri kaydetmek için kullanılır. Bu günlükler replikasyon için temel öneme sahiptir ve kölelerin ana verinin güncel kopyalarını tutmasına yardımcı olur. Hangi veritabanlarının kaydedileceğini yapılandırmayı anlamak çok önemlidir, özellikle farklı müşteriler için birden fazla veritabanıyla çalışıyorsanız.
Yapılandırma İkilemi
MySQL yapılandırmanızı ayarlarken, düşünebilirsiniz:
- Her veritabanını listelemeyi atlayabilir miyim ve sadece birkaçını görmezden gelebilir miyim?
- Bazı veritabanlarını görmezden gelmek için belirttiğimde, başka her şey uygun şekilde kaydedilecek mi?
Bu senaryoyu açıklamak için tipik bir my.cnf
yapılandırma dosyası ayarına bakalım.
Çözüm: binlog-ignore-db
‘yi Etkili Kullanma
binlog-ignore-db
Kullanımı
MySQL yapılandırmanıza belirli görmezden gelme komutları eklemeyi seçebilirsiniz. Örneğin:
binlog-ignore-db = mysql
binlog-ignore-db = informationschema
Bu yapılandırma, mysql
veya informationschema
veritabanlarında bir komut çalıştırıldığında, o komutların kaydedilmeyeceğini önerir. Ancak, kritik kısım, varsayılan veritabanının bu komutlarla etkileşimi üzerinedir.
İkili Günlükleme Kuralları
MySQL belgelerine göre:
- Eğer varsayılan veritabanı herhangi bir
binlog-ignore-db
kuralı ile eşleşiyorsa, bu ifade günlük dosyasına yazılmayacaktır. - Eğer varsayılan veritabanı yok sayılan veritabanları ile eşleşmiyorsa, sorgu kaydedilecektir.
Bu, yok sayma kurallarınıza eşleşmeyen veritabanlarında komutlar çalıştırdığınız sürece, o değişikliklerin ikili günlüklerde kaydedileceği anlamına gelir.
Replikasyon için Sonuçlar
binlog-do-db
girdilerini kaldırdığınızda, her şeyin kaydedilmiş gibi görülmesi mümkün olabilir, çünkü ikili günlük dosyasında değişiklikleri göreceksiniz. Ancak, her şeyi kaydetmek, bu günlüklerin köle sunucuda yeniden oluşturulacağını garanti etmez.
Olası Sorunlar
- Eğer hiçbir
binlog-do-db
belirtimi yapılmazsa ve yok sayılan veritabanları eşleşmezse, MySQL her şeyi kaydedebilir, fakat köle bu değişiklikleri almayabilir. - Replikasyon sorunlarını çözmek için, kölede
replicate-do-db
seçeneğini kullanmanız gerekebilir ve bu, akıcı yapılandırma çabalarınıza karşı çıkabilir.
Sonuç
Burada önemli olan nokta, binlog-ignore-db
kullanırken binlog-do-db
girdilerini atlamak, MySQL’in her şeyi kaydetmesine yol açabilir, sadece yok sayılan veritabanları hariç. Ancak, replikasyonun etkili çalıştığından emin olmak için köle sunucunuzda uygun yapılandırmaları sağlamanız çok önemlidir.
Bu yapılandırma inceliklerini anlayarak, gereksiz karmaşıklıkla karşılaşmadan güvenilir bir MySQL replikasyon kurulumu sürdürebilirsiniz.
MySQL replikasyonu veya yapılandırmaları hakkında daha fazla sorunuz varsa, lütfen bizimle iletişime geçin!