Yanıtlar:
Tasarım gereği, bir mysqld işlemi aynı anda iki farklı Master dinleyemez.
MASTER TO DEĞİŞTİR komutu sadece bir Master'ı okunacak kaynak olarak ayarlamanızı sağlar.
Bunu taklit etmek için iki Master arasında programlı olarak geçiş yapmanız gerekir. Bunu nasıl yaptın ?
İşte temel fikir
M1'den S1'e ve ardından M2'den S1'e Çoğaltma Ayarlayın
Bir Master'dan diğerine her geçişinizde, aşağıdakilerden iki değer kaydetmelisiniz: SHOW SLAVE STATUS\G
Bu iki değer, Master'dan gelen ve Slave'de yürütülecek olan son SQL İfadesini temsil eder.
Önemli bir uyarı var: M1 ve M2 birbirini dışlayan veritabanlarını güncellediği sürece, bu algoritma gayet iyi olmalıdır.
İster inanın ister inanmayın , Mayıs 2011'de ServerFault'da böyle bir soruyu ele aldım. Aslında, "Yüksek Performanslı MySQL" kitabına dayanan BLACKHOLE Depolama Motorunu kullanarak gerçek multimaster / tek kölenin nasıl taklit edileceğini anlattım.
Rolando'nun çözümü birçok uyarı içeriyor. Birincisi bir çoğaltma akışı, diğeri çalışırken çoğaltılmaz. Bu, kölenizin senkronize olmadığı zaman aralıklarını verecektir. Artık her birinin "dönüşü" olduğunda yetişmek için yeterli zamana sahip olduğundan emin olmak için hassas bir dengeleme eylemi oynamanız gerekiyor.
Açıklandığı gibi, geri dönmek için günlük konumlarının defter tutucusunu da oynamanız gerekir. Bu gerçekten sadece buggy gibi görünüyor, eksik veya tutarsız veriler için pencereyi açıyor veya hatta yanlış olduğunda çoğaltmayı kırıyor (günlük konumunda bir 'off by' hatası bile olsa)
Sadece birden fazla mysql örneği çalıştırmanızı tavsiye ederim. Aynı makinede iki veya daha fazla mysql çalıştırmanızı engelleyen hiçbir şey yok. İkisi de aynı liman üzerinde çalışamazlar. Her istemci ve kitaplık 3306'dan başka bir şey belirtmenize izin verdiği için bunu gerçekten bir sorun olarak görmüyorum.
Port = 3307'yi (ya da .cnf dosyalarından herhangi birini) belirtmeniz yeterlidir.
Ayrıca, ayrı ayrı yapılandırılmış arabellek havuzlarının ve diğer bellek yapılandırmalarının birbiriyle çelişmemesine dikkat etmek istersiniz. Bu ayarları gerçekten de bir avantaj olarak görüyorsunuz, çünkü bu ayarları tek tek veritabanlarının özel gereksinimlerine göre daha hassas bir şekilde ayarlayabilirsiniz.
Bu şekilde aynı sunucuda çalışan iki çoğaltma akışınız olur; asla geride kalmaz, kitap tutma gerekmez, "takas" komut dosyası gerekmez.
Fan girişi (çok kaynaklı çoğaltma) MySQL 5.7'den desteklenecektir.
Bir laboratuvar sürümü burada bulunabilir: http://labs.mysql.com/
MySql için yerinde değiştirme olarak kullanılabilen MariaDB kullanılabilir. 10.2 sürümünden destekliyor
Mysql 5.7 desteğiyle ilgili sorun GTID'ye ihtiyaç duyulmasıdır, yani master'ın da değiştirilmesi ZORUNLUDUR, MariaDb durumunda durum böyle değildir.
Örnek / Nasıl bağlanır: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100