Bir MySQL önceki slave'i master olarak nasıl değiştirebilir ve slave durum bilgilerini nasıl kaldırabilirim?


10

Master başarısız nerede bir master -> köle yapılandırması var. Eski-köleyi bir efendi ve eski-efendiyi köle olarak sıfırlayabildim. İnce.

Yapamayacağım şey, şimdi yeni-master olan eski-köle ile ilgili ana bilgileri kaldırmaktır. Anlıyorum:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

MySQL belgelerinin birçoğunu okudum, ancak hala yeni master'dan slave bilgilerini temizlemenin bir yolunu bulamadım. Denedim:

  1. RESET SLAVEBu ayarları temizlemiyor gibi görünüyor. [[Aslında master.infodosyayı kaldırır, ancak bellek ayarlarını kaldırmaz . Aşağıya bakınız.]]
  2. CHANGE MASTER TO MASTER_HOST='' bu da son zamanlarda kullanımdan kaldırıldığı için bir hatayı tükürüyor.
  3. my.cnfProgramlı olarak eklendiğinden beri asıl bilgilere sahip olmayanların kontrol edilmesi .
  4. RESET MASTERçünkü bazı mysql dokümanları tavsiye etti. Bu, yalnızca bin günlüklerini sıfırlar.
  5. Temizlenecek alanları bulabileceğimi görmek için dahili MySQL tablolarına bakıyorum.

Bunu MySQL ~ 5.5.9 üzerinde yapmanın uygun yolu nedir? Herhangi bir yardım için teşekkürler.


Düzenle:

Böylece @RolandoMySQLDBA'nın ima ettiği gibi dosyayı RESET SLAVEkaldırdığı ortaya çıkıyor master.info. Ancak, bağımlı bilgileri kaldırılmadan önce sunucuyu yeniden başlatmanız gerekir.

Bu köle bilgilerini kaldırmak için herhangi bir yolu var mı olmadan mysqld yeniden başlatmak zorunda?


Yanıtlar:


10

MySQL 5.5.16 ve sonraki sürümlerinde, kullanabileceğiniz RESET SLAVE ALLtüm yapmak RESET SLAVEyapar ve , bellekten bir Mysqld yeniden başlatılmasını gerektirmez bu şekilde bağlantı parametrelerini sıfırlayın.


6

Köle bilgilerini bir MySQL örneğinden temizlemenin en hızlı ve en kirli yolu

  • skip-slave-start/Etc/my.cnf altına ekle[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • skip-slave-start/Etc/my.cnf dosyasından kaldır

Bunu sizin için yapmalı !!!

Bu gerekli olacaktır çünkü MySQL BelgelerineRESET SLAVE göre :

MySQL 5.5'te (MySQL 5.1 ve önceki sürümlerde olduğu gibi) RESET SLAVE, ana konak, ana bağlantı noktası, ana kullanıcı veya ana parola gibi bellekte tutulan çoğaltma bağlantı parametrelerini değiştirmez. Bu, BAŞLANGIÇ SEVİYESİNİN SIFIRLA SIFIRLA sonrasında DEĞİŞTİRME MASTER TO deyimi gerekmeksizin verilebileceği anlamına gelir.

Böylece, çoğaltma bilgileri hala bellekte. Bir mysql yeniden başlatma gitmek için tek yoldur.


Teşekkürler @Rolando. +1 Bunu gördüm ama denemedim. Bunu düzeltmek için mysqld yeniden başlatmak zorunda değilsiniz .
Gri - SO şeytan olmayı bırak

Ayrıca, herhangi bir master.infodosya göremiyorum . Bu her zaman bir "efendi" ya da "köle" de var mı?
Gri - SO şeytan olmayı bırak

master.info her zaman Slave Sunucusundadır.
Abdul Manaf

5

RESET SLAVEardından yeniden başlatma phpmyadmin söz konusu olduğunda köle bilgilerini silmez. Ayrıca ayarlamanız gerekir CHANGE MASTER TO MASTER_HOST=''.


3

Master-slave verilerinin geçersiz kılınmasını önlemek için 'mysqld' altındaki yapılandırma dosyanızdaki ('in /etc/my.cnf') skip-slave-start komutunu korumanızı tavsiye ederim. Size bir örnek vermek gerekirse - bulut ortamında çalışırken, eski bir ana sistemin çöktüğünü ve ardından sağlayıcınız herhangi bir sorunu düzeldiğinde başarılı bir şekilde yeniden başlatıldığını varsayalım - eski köle (şimdi yeni ana bilgisayar) eski ana bilgisayardan çoğaltılacak ve daha önce verileri geçersiz kılacak DBA'nın bunu gerçekleştirme şansı vardır.

BTW, bu aynı zamanda bulut olmayan ortamda da geçerlidir. Diyelim ki, başka bir yönetici eski yöneticiyi koordine etmeden getirir. Ayrıca, bir köle olsa bile 'skip-slave-start' komutunu sürdürmenin iyi bir fikir olmasının başka bir sorunu - otomatik çoğaltma yok, bu da öngörülemeyen sonuçları önleme üzerinde daha fazla kontrole sahip olduğunuz anlamına geliyor. :)


@Lena cevabı için teşekkürler. Bu iyi bir fikir. Ben bakacağım.
Gri - SO
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.