Uygulamamız MySQL veritabanını kullanıyor. İşyerimizdeki veriler çok önemli. Hiç kesinti olmaması gerekiyor. Veri kaybı hiç olmaması gerekiyor. Çalışmanın hiç kesintiye uğramaması gerekiyor. Bırakın 5-10 dakikayı. 5-10 saniye bile bizim için değerli, MySQL veritabanınızın bulunduğu makine cpu, bellek veya disk artık yetmiyor. Kaynaklarınız tepede geziyorsa bunlar sizin için olabilir.
- Verilerinizin birden fazla makinede yedeğini anlık aldırın.
- Herhangi bir makinede olan değişiklikler tüm yedek aldırdığınız makinelere anında işlensin.
- Anlık değişiklikler diğer makinelerde de etkili olsun.
- Kullanıcıları farklı MySQL makinelere bağlantı yaparak cpu, bellek kaynaklarını daha az kullanın.
- Makinelerden biri çökse dahi çalışmalarınıza kesintisiz devam edin.
Yukarıdaki gibi istekler MySQL master-master replikasyonun kabiliyetleri arasında sıralanabilir.
Sistemimizi debian üzerine kuruyoruz. Debian ve mysql kurulumunu ve ilk ayarları önceki yazılarımızda bulabilirsiniz. Bu yazımızda hazır bir veri tabanınız olduğunu ve kullandığınızı varsayarak işlemlerimizi yapacağız.
Mevcut yapınızı yukarıdaki yapı haline getiriyoruz. Tek olan MySQL sunucunuzu iki adet yapıyoruz.
Bu iki sunucu arasına isterseniz cross isterseniz bir switch ile bağlı kablo bağlantısı yapıyoruz. Aralarına ayrı bir network hattı çekmekteki amacımız replikasyon işlemleri sırasında dış ağdan etkilenmemesi, dış ağın replikasyondan etkilenmemesi olarak düşünebiliriz.
Makinelerimizin ip’leri.
debian-1 lan: 192.168.2.211
debian-1 cross: 192.168.1.211
debian-2 lan: 192.168.2.212
debian-2 cross: 192.168.1.212
1. Makinemizdeki işlemler (Master-1, debian-1)
mysql -u root -p komutu ile mysql içine giriyoruz. Öncelikle replikasyon işlemleri için kullanıcı açıyoruz. Ben -p den sonra parolamı da yazdım. Siz de bu şekilde yapabilirsiniz.
GRANT REPLICATION SLAVE ON *.* TO ‘replication’@192.168.2.212 IDENTIFIED BY ‘012345678’;
FLUSH PRIVILEGES;
replikasyon işlemleri için tüm veritabanlarına işlem yapabilecek kullanıcı açıyoruz. Kullanıcımızın adı replication oluyor. Bu kullanıcı sadece 192.168.2.212 nolu ipden giriş yapmışsa izin veriyoruz. Bu demek ki diğer makinemizden bu makinemize işlem yapacak. Dışarıdan farklı bir replikasyon kullanıcısına izin vermiyoruz. Pardolası 012345678 olacak. Flush komutuyla kullanıcı işlemimizi uyguluyoruz. Bu işlemlerden sonra MySQLden quit ile çıkıyoruz.
nano /etc/mysql/my.cnf dosyamıza düzenleme amacıyla giriş yapıyoruz.
[myqsld] satırını buluyor. Değişikliklerimiz bunun altında olacak.
server-id = 1
Bu satırın başındaki # (pound) işaretini kaldırıyoruz.
log_bin = /var/log/mysql/mysql-bin.log
Bu satırın başındaki # (pound) işaretini kaldırıyoruz.
log_slave_updates
log_bin_index = /var/log/mysql/log-bin.index
log_error = /var/log/mysql/error.log
relay_log = /var/log/mysql/relay.log
relay_log_info_file = /var/log/mysql/relay-log.info
relay_log_index = /var/log/mysql/relay-log.index
auto_increment_increment = 10
auto_increment_offset = 1
buradaki auto_increment_increment = 10 işlemler sırasında makineler değiştiği anda (yani debian-1 yerine debian-2 kayıt ekleme) 10 id numarasını 10 basamak atlıyor.
auto_increment_offset = 1 ise aynı makine işlem yaparken id numaralarını kaçarlı atlaması gerektiğini belirtiyor. Bu iki satırla ilgili açıklamaları yazının devamında bulabilirsiniz.
master_host = 192.168.1.212
2.debian cihazımızın ipsi.
master_user = replication
açtığımız replikasyon kullanıcısı. Bu kullanıcıyı 2.makinede açmamız gerekir. Çünkü debian-2 deki kullanıcı buraya giriş yapacak. Yukarıda yazdığımız kullanıcıyı debian-2 içinde açmamız gerekiyor.
master_password = 012345678
replicate_do_db = deneme
replicate_do_db = deneme2
deneme ve deneme2 kullandığımız veritabanlarının adları. Bunları istediğiniz kadar çoğaltabilirsiniz. Ben şu anda sadece bir tane kullanıyorum
Yukarıdaki satırlar benim my.cnf dosyamda olmadığı için ekledim. Siz de ekleyebilirsiniz.
binlog_do_db = deneme
satırın başındaki # (pound) işareti kaldırın ve veri tabanınızın adını yazın.
Bu yazımızda neler yaptık: 2. makineden replikasyon yapması için kullanıcı açtık. my.cnf dosyamızda değişiklik yaptık.
Bundan sonraki yazımız debian-1 makinemizdeki veritabanını debian-2 üzerine de aktarmak olacak.